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

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

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

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

системи. Доступ до методів монітора надається через апарат переривань.
Переривання - перехід від виконання прикладної задачі до функцій ядра ОС.
Переривання бувають апаратні - на рівні сигналів,
та програмні - через команду 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 - файлів та дати )
2. таблиця зовнішніх імен модуля:
- ім'я функції
- її глобальні дані
3. Код функції
4. Таблиця модифікації коду функції( в ній указане зміщення комірок, що потрібно модифікувати ).
Редактор міжмодульних зв'язків( LINKER )
cos.obj - головний модуль
Головний модуль отримує перше управління. В головному модулі знаходяться пролог та епілог Сі-програми.
Приклад
Якщо є глобальні змінні, то потрібно виконати
Loading...

 
 

Цікаве