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

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

ГоловнаІнформатика, Компютерні науки → Сучасні Операційні системи - Реферат

Сучасні Операційні системи - Реферат

процесів, спрощувалася, тому що усі функції ядра не були рентабельними. Однак, при цьому реактивність системи страждала - будь-який процес, навіть низькоприорітетний, ввійшовши в системну фазу, міг залишатися в ній як завгодно довго. Через цю властивість UNIX не міг використовуватися в якості ОС реального часу. У більш пізніх версіях, і в SVR4 у тому числі, організація ядра ускладнилася і процес можна витиснути й у системній фазі, але не в довільний момент часу, а тільки у визначені періоди його роботи, коли процес сам дозволяє це зробити установкою спеціального сигналу.
1.3. Зародження процесів
Зародження процесів в системі UNIX відбувається таким способом. При створенні процесу будується образ нового процесу, що є точною копією образу вихідного процесу. Сегмент даних і сегмент стeку батька реально копіюються на нове місце, утворюючи сегменти даних і стеку сина. Процедурний сегмент копіюється тільки тоді, коли він нероздільний. В іншому випадку син стає ще одним процесом, що займає даний процедурний сегмент.
Після виконання системного виклику fork обидва процеси продовжують виконання з одної і тої ж точки. Щоб процес міг опізнати, чи є він батьком чи сином, системний виклик fork повертає в якості свого значення в початковий процес ідентифікатор нового процесу, а в новий процес NULL. Типове розгалуження на мові C записується так:
if( fork() ) { дії батька }
else { дії сина }
Ідентифікатор сина може бути присвоєний змінній, яка входить в контекст процесу-батька. Так як контекст процесу успадковується його потомками, то діти можуть узнати ідентифікатори своїх старших братів, таким чином сума знань успадковується при породженні і може бути розповсюджена між спорідненими процесами. успадковуються всі характеристики процесу, що містяться в контексті.
На незалежності ідентифікатора процесу від виконуваної процесом програми побудований механізм, що дозволяє процесу прийти до виконання іншої програми за допомогою системного виклику exec.
Таким чином в UNIX породження нового процесу відбувається в два етапи - спочатку створюється копія процесу-батька, а саме дублюється дескриптор, контекст і образ процесу. Потім у нового процесу проводиться заміна кодового сегмента на заданий.
1.4. Керування пам'яттю. Свопінг.
У UNIX System V Release 4 реалізована сегментно-сторінкова модель пам'яті в її традиційному виді. Поряд з механізмом керування сторінками використовується і механізм свопінгу, коли на диск виштовхуються всі сторінки якого-небудь процесу. Свопінг застосовується в "передаварійних" ситуаціях, коли розмір вільної ОП зменшується до деякого заданого порога, так що робота всієї системи дуже ускладнюється.
Маються наступні типи віртуальних сегментів:
Текст (text) - містить коди команд модуля процесу, що виконується. Він звичайно позначається "тільки для читання", так щоб ні сам процес, ні інші процеси не могли змінити його кодову частину. Текстовий сегмент може розділятися багатьма процесами, наприклад, усіма користувачами, що працюють з одним редактором.
Дані (data) - містить дані, використані і модифіковані процесом під час виконання. До сегмента даних звичайно дозволяється мати доступ для читання і запису. На відміну від текстового сегмента, сегмент даних ніколи не розділяється іншими процесами.
Стік (stack) - містить стек процесу. Він позначається доступним для читання і запису і, подібно сегменту даних, не може розділятися іншими процесами.
Є ще два типи сегментів:
Поділювана пам'ять (shared memory) - область пам'яті, доступна для читання і запису декільком процесам.
Відображений файл (mapped file) - сегменти відображеного файлу використовуються для того, щоб відобразити частини файлів в адресний простір процесу, і використовувати стандартні механізми ОС керування ВП для прискорення доступу до файлів.
Поле s_data дескриптора сегмента вказує на структуру даних segvn_dat, у якій міститься специфічна для сегмента інформація:
" type: ознака, чи є сегмент поділюваним чи особистим;
" vp і offset: покажчик на vnode файлу і зсув у цьому файлі, що задають адреса, починаючи з якої розташовані на диску дані цього сегмента;
amp: покажчик на карту анонімних сторінок сегмента.
Кожен сегмент має зв'язок з дисковим простором, на якому зберігаються дані, відображувані в даний сегмент ВАП. Це може бути файл чи частина файлу на диску, чи ж це може бути область свопінгу, що не є файлом. Сегмент чи код сегменту інціалізованих даних звичайно зв'язаний з файлом, у якому зберігається програма, що виконується. Під зв'язком з файлом розуміється відображення віртуального сегмента і його сторінок на визначену область диска, з якої завантажуються дані віртуальних сторінок сегмента при їхньому переміщенні в ОП, а також куди містяться дані при витисненні віртуальних сторінок на диск. Віртуальні сторінки, що були споконвічно узяті з визначеного файлу (який описується на рівні ядра структурою vnode), називаються vnode-сторінками, а сторінки, що з'явилися тільки при розгортанні процесу (а це звичайно сторінки чи стеки неініціалізованих сегментів даних) - анонімними сторінками. Однак анонімні сторінки також мають зв'язок з файлом, у який вони виштовхуються при їхньому витисненні з фізичної пам'яті (так названий свопінг-пристрій). На свопінг-пристрій також указує vnode, тому в цій якості може виступати будь-як файл, а переміщення сторінок зі свопінг-пристроїв в пам'ять здійснюється тими ж функціями, що використовуються для vnode-сторінок.
Відображення віртуальних сторінок сегмента на фізичні задається за допомогою таблиці HAT (Hardware Address Translation), покажчик на який мається в структурі адресного простору процесу as. Структура таблиці HAT залежить від апаратної платформи, але в будь-якому випадку з її допомогою можна знайти таблицю чи таблиці сторінок, що містять дескриптори сторінок (структури типу pte). Дескриптор сторінки містить ознака наявності даної віртуальної сторінки у фізичній пам'яті, номер відповідної фізичної сторінки, а також ряд ознак типу "модифікація", "було посилання", що допомагають ОС планувати процес витиснення віртуальних сторінок на диск.
У UNIX System V Release 4 використовується алгоритм переміщення віртуальних сторінок процесу у фізичну пам'ять по запиті. Звичайно при запуску процесу у фізичну пам'ять міститься тільки невелика частина сторінок, необхідна для старту процесу, а інші сторінки завантажуються при сторінкових збоях. Очевидно, що початковий період роботи будь-якого процесу породжує підвищене навантаження на систему. Якщо при пошуку ВА у відповідному дескрипторі виявляється ознака відсутності цієї сторінки у фізичній пам'яті, то відбувається сторінкове переривання, і ядро переміщає цю сторінку з диска у фізичну пам'ять. Дляпошуку сторінки на диску використовується інформація зі структури s_data сегмента - або vnode і offset, якщо сторінка типу vnode, або інформація про розташування анонімної сторінки в області свопінгу за допомогою інформації про її розташування там по карті amp.
Якщо у фізичній пам'яті недостатньо місця для розміщення викликаної процесом сторінки, то ОС вивантажує
Loading...

 
 

Цікаве