WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Архітектура ЕВМ - Реферат

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

споживая();

parend; }

Недоліки семафору Дейкстра:

  1. Оскільки семафори є даними, що належать головній задачі, їх можна несанкціоновано змінити.

  2. Реально семафорів не існує.

Монітори ресурсів

Інкапсуляція даних – технологія, коли дані відмежовуються від користувача, а йому предоставляється тільки інтерфейс.

Монітор ресурсу – структури даних та методи їх обробки, які знаходяться в ядрі операційної системи. Доступ до методів монітора надається через апарат переривань.

Переривання – перехід від виконання прикладної задачі до функцій ядра ОС.

Переривання бувають апаратні – на рівні сигналів,

та програмні – через команду interrupt.

Умови виконання моніторe співпадають з умовами виконання критичного сегменту.

Для роботи з моніторами ресурсів запропоновано дві функції:

WAIT (<ім'я_черги_ресурса>)

SIGNAL (<ім'я_черги_ресурса >)

Ці операції допустимі в моніторах.

Семантика WAIT: задача, котра видала WAIT призупиняється. Управління отримує ядро операційної системи, яке відповідає за планування задач для CPU.

Семантика SIGNAL: по цій команді з черги задач, затриманих відносно даного ресурсу одна задача переходить в чергу готових до виконання. Та задача, що видала SIGNAL продовжує працювати.

@ лекція 3 ( 28.02.03 )

Задача "Читачі – письменники"

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

Існує інша модель, коли черга для читачів та письменників одна.

Правила роботи :

  • якщо "читач в залі" маємо вільний вхід для інших читачів;

  • якщо "письменник в залі" – обидві черги блокуються;

  • письменник запрошує до зали читача після завершення своєї роботи.

Опишемо програмну реалізацію цієї схеми.

class Reader_Writer {Queue Q_Reader;

Queue Q_Writer;

int R_count;

bool W_count;}

Reader_Writer(){Q_Reader(NULL);Q_Writer(NULL);R_count = 0;W_count = false}

begin_Reader(){ if (W_count) wait (Q_Reader); R_count++; signal(Q_Reader);}

end_Reader(){ R_count--; if (!R_count) signal(Q_Reader); else signal(Q_Writer);}

begin_Writer(){if (R_count)!!W_count wait(Q_Writer); W_count = true;}

end_Writer(){ W_count = false; if (Q_Reader != NULL) signal(Q_Reader);

else signal(Q_Writer);}

Реалізація монітора

В більшості ОС монітори реалізовані через апарат програмних переривань (машинна команда INT).

Код переривання це індекс в таблиці векторів програмних переривань. Значення вектора – адреса монітору ресурсу. Згідно з системними узгодженнями в момент виникнення переривання в регістрі функцій знаходиться код функції (її імя), а в регістрі даних – дані, що передаються монітору. Ядро ОС при цьому інтерпретується як системна задача, котру не можливо знищити та створити іншу таку задачу.

wait – передає керування ядру ОС, яке активізує нову задачу, змінює контекст, (wait – функція ядра ), та зберігає існуючий контекст.

signal – не завжди продовження роботи задачі, що викликала цю функцію, бо враховується приорітет тієї задачі, що переноситься до черги готових до виконання.

Тупики в середовищі ОС

Семафори для принтера та модема – двійкові.

Тупик – deadlock – це така ситуація, коли одна або більше задач не можуть далі природно розвиватися.

Умови виникнення тупиків :

  • динамічний захват ресурсів (що є властивістю ОС);

  • наявність циклічних ланцюгів очікування.

( на малюнку: Пр – принтер, Мо – модель ).

Алгоритм банкіра. (спроба подолання проблеми тупиків)

Стабільним називається такий стан ОС, коли в найближчому майбутньому система не потрапить в тупик (може задовольнити певним ресурсом хоча б одну задачу)

Нехай в системі наявні одиниць ресурсу А, та - потреба -ї задачі в ресурсі А , - кількість одиниць ресурсу А, що надані -й задачі. Таким чином вільного ресурсу А : . Перспективні потреби -ї задачі- в майбутньому. Припускається, що та . За таких умов маємо наступну умову стабільності стану : , якщо ж умова порушується, то стан є нестійким. Якщо умова (1) в часі істина, то тупик не можливий, інакше існує потенційна можливість виникнення тупика.

Обмеженням алгоритму банкіра є те, що - величина постійна, що не відповідає реальним умовам роботи, скажімо з накопичувачем.

Способи боротьби з тупиками

  • прогнозування;

  • наявність моніторів контролю над завантаженням ресурсів;

  • дії оператора (адміністратора)

а) примусове динамічне керування ресурсами;

б) перезавантаження ОС.

@лекція 4 ( 7.03.03 )

Ресурси:

Пам'ять ЕОМ – менеджер( супервізор ) пам'яті.

Файли – логічна система вводу-виводу.

Процесор – диспетчер( супервізор ) задач.

Алгоритми управління ОП

а) однозадачні ОС ( наприклад MS-DOS )

LINK вільна ОП LOAD

апаратура ядро ОС – пам'ять для прикладної задачі динамічні

ЕОМ це частина ОС, компо-

яка завжди ненти ОС

присутня в ОП.

В більшості архітектур ЕОМ передбачаються дві стратегії завантаження модулів:

– LINK – завантаження модулів по принципу stek

– LOAD – завантаження модулів по принципу КУПА, тобто модулі завантажуються і

розвантажуються в будь-якій послідовності.

Вільна ОП використовується під завантаження модулів та при динамічних запитах щодо даних( malloc free ).

Поглянемо на ситуацію з точки зору вільної пам'яті:

20k 20k 10k 10k 5k 5k 5k =75k

ядро ОС – сегменти вільної ОП

Сегменти вільної ОП перемежовуються з програмами та даними.

Вільна пам'ять збирається в список вільної пам'яті.

Існує комірка, яка є головою списку вільної пам'яті. В залежності від архітектури ЕОМ зручними для адресації є сегменти пам'яті, адрес котрих кратний певному числу.

Приклад

В архітектурі Intel адрес кратний 16-ти.

Адрес даних формується як: БАЗА + ЗМІЩЕННЯ.

Регістр бази мав 16 біт: 16 4

– реальний адрес

20біт

В цій архітектурі взяти пам'яті менше 16-ти байт неможливо.

Проблема сегментації – поділ вільної пам'яті на сегменти, які перемежовуються програмним кодом та даними, – основна проблема управління ОП.

Приклад

В MS-DOS:

300k 20k 200k

ядро ОС драйвер BIOS

клавіатури

Завантажити >350k не можемо.

Оверлейна структура *.ехе – модуля

*.ехе

10k 50k 100 k =160k

(1)

MAIN функції текстового редактора функції графічного редактора

Тоді спроектуємо модуль так:

=110k

ОС з режимом оверлей має дві взаємопов'язані компоненти:

  1. редактор міжмодульних зв'язків, який підтримує можливість побудови оверлеїв

  2. функція виборки( завантаження ) оверлейного модуля.

Приклад

Таким чином, якщо ми маємо *.ехе простої структури з режимом оверлей(1)

таблиця управління оверлей-модулем

Дії компілятора при компіляції виклику функції:

код адрес функції

операції

Структура *.obj -– модуля

  1. коментар: – хто виконав компіляцію

– дані для утиліти MAKE ( імена *.h – файлів та дати )

  1. таблиця зовнішніх імен модуля:

    • ім'я функції

    • її глобальні дані

  2. Код функції

  3. Таблиця модифікації коду функції( в ній указане зміщення комірок, що потрібно модифікувати ).

Редактор міжмодульних зв'язків( LINKER )

cos.obj – головний модуль

Головний модуль отримує перше управління. В головному модулі знаходяться пролог та епілог Сі-програми.

Приклад

Якщо є глобальні змінні, то потрібно виконати конструктор( в пролозі ) та деструктор( в епілозі ).

Лінкер працює в два етапи( два перегляди ):

Перший перегляд: вибираються дані з розділу 2( імена функцій та глобальні дані ) і заносяться в спеціальну таблицю. Для тих імен( об'єктних файлів ), які не були прочитані,

Loading...

 
 

Цікаве