У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - Архітектура ЕОМ
37



Архітектура ЕОМ

Операційні системи

Перші Операційні системи (ОС) називались моніторами

Перші бізнес комп’ютери IBM360
Перша ОС фірми IBM називається TOS - TapeOpeartingSystem
DOS - дискова ОС, що знаходиться на диску.
MFT – мультизадачна ОС з фіксованою кількістю задач.
MVT - ОС з необмеженою кількістю задач.
IBM370 SVS – ОС з віртуальною пам’яттю.
SVM – система управління ОС.

Мікропроцесори

Після того, як з’явилась система I386, в архітектурі Були закладені основи роботи в віртуальній пам’яті.

ОС – програмно-технічний комплекс, призначений для ефективно3го управління ресурсами обчислювальної системи та надання послуг користувачам.

Критерії ефективності:

максимально завантажити обладнання обчислювального комплексу.

ОС, що задовольняють цьому критерію називають пакетними ОС.

В пакет включаються:–

вимоги до ресурсів;–

програма;–

дані.
Пакети накопичуються в ОС і вона, використовуючи критерій ефективності 1, виконує обробку пакету.

Діалоговий режим - надання послуг користувачам.

Ресурс – це все те, що ОС може розподілити між програмами( задачами ).
Вони бувають:
– фізичні : оперативна пам’ять, НЖМД, CPU(основний обчислювальний пристрій)
– логічні : поіменована пам’ять, файл, каталог, модуль, логічний канал.
Основна одиниця роботи ОС – задача( TASK )

Тривіальна модель виконання задачі

Нехай є множина комірок пам’яті різних типів. Комірка пам’яті певного типу приймає діапазон значень. Як стан програми будемо мати елемент:
[<C1, M1>, <C2, M2>, … ] – простір виконання задачі, де Ci – ім’я комірки, Mi – поточне значення певного типу.

Якщо є дві задачі, адресний простір яких перетинається, то це взаємодія двох задач через пам’ять.

f: простір простір – функція що і є наша програма.
В технологіях ОС для опису ресурсів використовуються дескриптори (таблиці). З

довільною задачею, що функціонує в середовищі ОС, пов’язується дескриптор задачі. Формат дескриптора залежить від типу ОС.

Дескриптор неявно (за рахунок посилок) описує всі ресурси, що виділені в задачі.
Елементи дескриптора задач:

Стан задачі:

Активна

готова до виконання

затримана

„Кругообіг” задачі ( по відношенню до CPU )

Пояснення:

Активна задача переходить в чергу затриманих в зв’язку з виконанням операції вводу/виводу.

По завершенню виконання операції вводу/виводу задача переходить в чергу готових до виконання.

У момент, коли виконується подія (1), з черги готових до виконання процесору призначається наступна задача

У задачі примусово відбирають процесор. Наприклад, по закінчені кванту часу.

Задачі та під задачі

У випадку, коли адресний простір декількох задач співпадає, можна вести мову про дерево задач

.

A- головна задача, C,D,E,F – підзадачі задачі A.

В момент призначення певній задачі процесора, відбувається операція зміна контексту

На рівні ОС існують методи, які дають:–

метод створити задачу

метод знищити задачу

Приклад

Дві задачі функціонують в просторі, простори перетинаються.

Яким буде значення комірки після деякого часу t?

Комірки адресного простору, що належать декільком задачам, можна трактувати як ресурс (критичний ресурс).

Частина коду програми, що взаємодіє з критичним ресурсом називається критичним сегментом.

Правила роботи з критичними ресурсами:

Якщо декілька задач спробують одночасно модифікувати критичний ресурс, то допускається лише одна.

В довільний момент часу в критичному сегменті по відношенню до даного ресурсу, повинно знаходитись не більш однієї задачі.

Нескінчений час очікування виконання критичного сегменту блокується.

Після виконання 2х критичних сегментів .

Програмування критичних сегментів

Розглянемо програму

void f1(){…}
void f2(){…}

main() //f1 та f2 виконуються одночасно.
{parbegin
f1();f2();

parend;}

int count=0; //критичний ресурс
int iter=1 //черга першої задачі

void f1()

{while(iter==2)…;

//критичний сегмент

count++;

iter=2; //тепер черга другої задачі

}

void f2()

{while(iter==1)…;

//критичний сегмент

count++;

iter=1; //тепер черга першої задачі

}

Аналіз:
Наведена програма, якщо за коментуємо f1(), буде працювати у нескінченому циклі. Наведений приклад є помилкове рішення взаємодії двох задач по відношенню до ресурсу.

@ лекція 2 ( 21.02.03 )

Алгоритм Деккера.

(взаємодія через пам’ять)

Ця схема взаємодії враховує наявність двох процесорів CPU і вони мають різну швидкість.

Недоліки алгоритму:

Наведений алгоритм актуальний лише для взаємодії двох задач.(Існує модифікація алгоритму Деккера для багатьох задач)

Процес програмування взаємодії досить складний.

int C1=0, C2=0; // побажання

int queue = 1; // чия черга

void f1 (void) {

C1 = 1; // встановити побажання

while ( C2 = = 1 )

if ( queue = = 2 )

{C1 = 0; // зняти побажання

while ( queue = = 2) ; // цикл

C1 = 1;}

// критичний сегмент

. . .

// кінець критичного сегменту

С1 = 0; // зняти побажання

queue = 2; }

void f2 (void){

C2 = 1; // встановити побажання

while ( C1 = = 1 )

if ( queue = = 1 )

{C2 = 0; // зняти побажання

while ( queue = = 1) ; // цикл

C2 = 1;}

// критичний сегмент

. . .

// кінець критичного сегменту

C2 = 0; // зняти побажання

queue = 1; }

main () { parbegin

f1(); // якщо f1 та f2 працюють разом, то ця схема коректна і враховує

f2(); взаємодію двох потоків на СРU з різними швидкостями.

parend }

Схема:

 

f1 f2

Апаратні засоби взаємодії.

int global = 0;

void f1(void) {

int local;

while (1) //цикл взаємодії

{ local = 1;

while (local) test_and_set(local, global);

// критичний сегмент

. . .

// кінець критичного сегменту

global = 0;}

}

main () { parbegin

 

parend }

Схема:

f1 f1 f1

Недоліки:

Потрібно знати специфіку test_and_set

Якщо N потоків, то понижується ефективність обчислювальної установки.

P- ,V- операції Дейкстра.

Семафор – цілочислова змінна, над якою можна виконати 3 операції: INIT, P, V.

 

Двійковий семафор – семафор з початковим значенням 1.

Ресурс: друкарський

пристрій

А В С

Задача “ постачальник – споживач ”.

Область вводу-виводу називається буферний пул (програмний кеш).

 

Семафор:

SEMAFOR IN_BUF( N );

SEMAFOR OUT_BUF( N );

DATA BUFFER[ N ]; //буферний пул

void постачальник (void) {

int ind_in_buf = 0;

while (1) { P( IN_BUF );

// критичний сегмент, наповнення елементів даних

. . .

//кінець


Сторінки: 1 2 3 4 5