На головну

Типи архітектур ядер операційних систем

  1.  A. Розділ біомеханіки, в якому досліджується рух крові по судинній системі.
  2.  ArcView GIS. Загальні відомості про систему
  3.  B. процес, при якому для повернення системи в початковий стан потрібні витрати енергії.
  4.  C. Астигматизм, обумовлений асиметрією оптичної системи, сферична аберація, астигматизм косих пучків, дисторсия, хроматична абеpрація.
  5.  D. Міра невизначеності в системі
  6.  I. Структура на основних сетівні системи. Строеж на зрітелната і слуховата сетівна системи.
  7.  IBM Power 7 | Нові серверні системи

Монолітне ядро надає багатий набір абстракцій обладнання. Всі частини монолітного ядра працюють в одному адресному просторі. Це така схема операційної системи, при якій всі компоненти її ядра є складовими частинами однієї програми, використовують загальні структури даних і взаємодіють один з одним шляхом безпосереднього виклику процедур ..переваги: Швидкість роботи, спрощена розробка модулів.недоліки: Оскільки все ядро ??працює в одному адресному просторі, збій в одному з компонентів може порушити працездатність всієї системи.приклади: Традиційні ядра UNIX (такі як BSD), Linux; ядро MS-DOS, ядро ??KolibriOS.

модульне ядро - Сучасна, вдосконалена модифікація архітектури монолітних ядер операційних систем комп'ютерів.

На відміну від «класичних» монолітних ядер, що вважаються нині застарілими, модульні ядра, як правило, не вимагають повної перекомпіляції ядра при зміні складу апаратного забезпечення комп'ютера. Замість цього модульні ядра надають той чи інший механізм подгрузки модулів ядра, що підтримують ту чи іншу апаратне забезпечення). При цьому подгрузка модулів може бути як динамічної так і статичної

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

«Микроядерности» є розміщення всіх або майже всіх драйверів і модулів в сервісних процесах, іноді з явною неможливістю завантаження будь-яких модулів розширення в власне микроядро, а також розробки таких розширень.

переваги: Стійкість до збоїв обладнання, помилок в компонентах системи. Основна перевага микроядерной архітектури - високий ступінь модульності ядра операційної системи. мікроядерна архітектура підвищує надійність системи, оскільки помилка на рівні непривілейованої програми менш небезпечна, ніж відмова на рівні режиму ядра.недоліки: Передача даних між процесами вимагає накладних витратприклади: Symbian OS; Windows CE; Mach, що використовується в GNU / Hurd і Mac OS X; QNX; AIX; Minix; ChorusOS; AmigaOS; MorphOS.

Екзоядро - Ядро операційної системи комп'ютерів, що надає лише функції для взаємодії між процесами і безпечного виділення і звільнення ресурсів. Передбачається, що API для прикладних програм будуть надаватися зовнішніми по відношенню до ядра бібліотеками

Можливість доступу до пристроїв на рівні контролерів дозволить ефективніше вирішувати деякі завдання, які погано вписуються в рамки універсальної ОС, наприклад реалізація СУБД матиме доступ до диска на рівні секторів диска, а не файлів і кластерів, що позитивно позначиться на швидкодії.

Наноядро - Архітектура ядра операційної системи комп'ютерів, в рамках якої вкрай спрощене і мінімалістичне ядро ??виконує лише одну задачу - обробку апаратних переривань, що генеруються пристроями комп'ютера. Після обробки переривань від апаратури наноядро, в свою чергу, посилає інформацію про результати обробки вищерозміщений програмному забезпеченню за допомогою того ж механізму переривань. Прикладом є KeyKOS - найперша ОС на наноядре

гібридні ядра - Це модифіковані мікроядра, що дозволяють для прискорення роботи запускати «несуттєві» частини в просторі ядра. Мають «гібридні» достоїнства і недоліки.

4.

інтерфейс - Це зовнішнє уявлення, абстракція якогось інформаційного об'єкта.

протокол - Це набір правил взаємодії між об'єктами.

POSIX- Це розвивається набір стандартів, кожен їх яких охоплює різні аспекти операційних систем. Деякі з них вже схвалені, в той час як інші все ще знаходяться на стадії розробки. Їх можна розбити на три групи:

базові Стандарти. У них визначаються системні інтерфейси, пов'язані з різними сторонами операційної системи. Базовий стандарт специфікує синтаксис і семантику системного інтерфейсу таким чином, що прикладні програми можуть безпосередньо звертатися до системних служб. Спочатку базові стандарти були розроблені для мови СІ, але зараз вони специфицируются як незалежні від мови інтерфейси.

мовні інтерфейси. Ці стандарти забезпечують діючі інтерфейси до різних мов програмування. В даний час це мови СІ, АДА, ФОРТРАН 77 і ФОРТРАН 90. Операційне середовище Відкритих Систем. Ці стандарти включають керівництво по операційному середовищі POSIX і прикладні профілі. Прикладний профіль - це стандарти POSIX разом з їх опціями і параметрами, які необхідні для конкретної прикладної середовища. Прикладні профілі - це дуже важливий засіб, що дозволяє отримати невелику кількість добре певних типів реалізації операційних систем для конкретних прикладних контекстів.

Завдання Posix:

· Сприяти полегшенню перенесення коду прикладних програм на інші платформи;

· Сприяти визначенню та уніфікації інтерфейсів заздалегідь при проектуванні, а не в процесі їх реалізації;

· Зберегти по можливості і враховувати всі головні, створені раніше і використовуються прикладні програми;

· Визначати необхідний мінімум інтерфейсів прикладних програм, для прискорення створення, схвалення і затвердження документів;

· Розвивати стандарти в напрямку забезпечення комунікаційних мереж, розподіленої обробки даних і захисту інформації;

· Рекомендувати обмеження використання бінарного (об'єктного) коду для додатків в простих системах.

5.

Драйвера можна поділити на 3 типи:

Символьні - працюють з пристроями які дозволяють передавати дані по 1 символу (байту): різні консолі, модеми

Блокові - працюють з пристроями які дозволяють здійснювати буферезацію введення-виводу: різні дискові накопичувачі

Мережеві

Також їх иожно розділити на 3 групи: драйвери системних пристроїв, драйвери карт розширення, драйвери періфірійних пристроїв.

Драйвери системних пристроїв - Зазвичай це драйвери тих пристроїв, в роботу яких користувачеві краще не лізти: контролер електроживлення, процесор.

Драйвери карт розширення - Це драйвери для відеокарт, звукових плат, тв-тюнера і т. Д. Ці драйвери краще оновлювати.

Драйвери періфірійних пристроїв - Це драйвери для тих пристроїв, які підключаються до комп'ютера через різні роз'єми, зокрема через USB.

6.

7. Кожен домен визначає набір об'єктів і типів операцій, які можуть бути здійснені над кожним об'єктом. Можливість виконувати операції над об'єктом є права доступу. Домен - набір прав доступу, кожне з яких є упорядкована пара . Hапример, якщо домен D має права доступу , це означає, що процес, що виконується в домені D, може читати або писати в файл F, але не може виконувати інших операцій над цим об'єктом.

Зв'язок процесів з доменами може бути статичною і динамічною. Організація динамічного зв'язку складніше.

Зауважимо, що домен може бути реалізований різними способами:

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

· Кожен процес може бути доменом. У цьому випадку набір доступних об'єктів визначається ідентифікацією процесу. Перемикання між доменами відбувається, коли один з процесів посилає повідомлення іншому і чекає відгуку.

· Кожна процедура може бути доменом. У цьому випадку набір доступних об'єктів відповідає локальним змінним, певним всередині процедури. Перемикання між доменами відбувається, коли процедура виконана.

Розглянемо стандартну двох режимну модель виконання ОС. Коли процес виконується в режимі системи (kernel mode), він може виконувати привілейовані інструкції і мати повний контроль над комп'ютерною системою. З іншого боку, якщо процес виконується в режимі користувача, він може викликати тільки непривілейованих інструкції. Отже, він може виконуватися тільки всередині зумовленого простору пам'яті. Наявність цих двох режимів дозволяє захистити ОС (monitor domain) від призначених для користувача процесів.

В ОС Unix домен пов'язаний з користувачем. Перемикання доменів відповідає зміні користувача. Ця зміна реалізується через файлову систему.

Резюмуємо коротко інформацію про кільцях захисту. Операційна система повинна працювати в рамках структури і меж, наданих процесором. Процесор надає операційній системі кільця захисту, пронумеровані від 0 до 3. Операційна система логічно розподіляє процеси по різним кільцям, грунтуючись на рівні своєї довіри до цих процесів. Т. к. Ядро операційної системи є найнадійнішим і довіреною компонентом, воно і його процеси розміщуються на кільці 0. Решта процеси операційній системі розміщуються на кільці 1, а всі призначені для користувача додатки розміщуються на кільці 3.

Коли процесу, що працює на кільці 0, потрібно передати процесору команди для виконання, процесор перевіряє номер кільця і ??переконується, що цьому процесу можна повністю довіряти. Після цього процесор дозволяє цього процесу працювати з будь-якими своїми функціями, наданими процесам. Деякими з найбільш критичних дій, для виконання яких необхідні максимальні привілеї (знаходження на кільці 0), є операції введення / виводу і доступ до пам'яті.

Коли іншому процесу, що знаходиться на кільці 3, потрібно передати процесору команди для виконання, процесор знову перевіряє номер кільця процесу. Оскільки це процес

з кільця 3, процесор знає, що операційна система довіряє цьому процесу в найменшій мірі, тому він обмежує обсяг своїх функціональних можливостей, доступних цього процесу.

8.

9.

10.

11.

12.Самий верхній сегмент в адресному просторі процесу - стек, В якому зберігаються локальні змінні і параметри функцій в більшості мов програмування.

Під стеком, розміщується сегмент пам'яті відображення. Тут ядро ??відображає вміст файлів безпосередньо в пам'ять. Будь-який додаток може запитати таке відображення за допомогою Linux mmap () або CreateFileMapping () / MapViewOfFile () в Windows. Пам'ять відображення є зручним і високопродуктивним способом зробити файловий ввід / вивід, тому він використовується для завантаження динамічних бібліотек.

Heap (купа)забезпечує виконання розподілу пам'яті, як стек, призначений для даних, які повинні «пережити» розподіл, яке робить функція, на відміну від стека. Більшість мов забезпечують купі управління програмами. Задоволення запитів пам'яті, таким чином, являє зв'язок між мовним середовищем і ядром.

обидва BSS і DATA сегменти використовуються для статичних (глобальних) змінних в C. Різниця в тому, що BSS зберігає вміст неініціалізованих статичних змінних, значення яких не встановлені програмістом в вихідному коді. Розмір BSS пам'яті є анонімним: він не відображає ніякої файл.

Сегмент даних (DATA), Використовується для розміщення статичних змінних, які не започатковано у вихідному коді. Ця пам'ять не є анонімною. Вона відображає частину бінарних зображень програми, які містять початкові статичні значеня, зазначені в вихідному коді.

Текстовий (TEXT) сегмент розміщує в собі рядки. Він є тільки read-only і зберігає весь ваш код на додаток до строкових літералів. Цей сегмент також відображає ваші виконавчі файли в пам'яті, але запис в цю область призведе до помилки сегментації у вашій програмі. Це допомагає запобігти помилок з покажчиками, хоча і не так ефективно, як уникнути С, в першу чергу.

mmap - POSIX-сумісний системний виклик Unix, що дозволяє виконати відображення файлу або пристрою на пам'ять. Є методом введення / виведення через відображення файлу на пам'ять і природним чином реалізує виділення сторінок за запитом, оскільки спочатку вміст файлу не читається з диска і не використовує фізичну пам'ять взагалі. Реальне зчитування з диска проводиться в «ледачому» режимі, тобто при здійсненні доступу до певного місця.

Механізм роботи mmap наступний - як тільки відбувається звернення до пам'яті за вказівником, який нам повернула функція mmap генерується виняток. Оброблювач виключення завантажує дані з диска в кеш (якщо вони ще не в кеші) і робить mapping (відображення) кеша на адресний простір програми, після чого з додатком дається право на читання цих даних. У тому випадку, якщо дані з кешу вивантажуються з пам'яті, то відображення теж забирається, і як тільки додаток знову спробує звернутися до цих даних, згенерує виняток, і все повториться знову. Це дозволяє програмісту взагалі не піклуватися про оптимізацію роботи з диском - все це бере на себе механізм віртуальної пам'яті Лінукса. У будь-якому випадку відбувається економія і пам'яті, і швидкості (за рахунок відсутності копіювання з кешу в буфер додатки). У разі ж звернення до одних і тих же даних кількома додатками це особливо помітно.

Приклад, для чого може використовуватися: припустимо, що наша програма повинна прочитати файл розміром в декілька сотень мегабайт, і порахувати в ньому статистику зустрічальності різних символів. Завдання виглядає тривіальної - відкриваємо файл, читаємо блоками, скажімо, по 64Kb (експериментально підібрана величина, яка часто виявляється оптимальною) і вважаємо в них статистику. Простіше, начебто не придумаєш. Можна, звичайно, вважати відразу весь файл в пам'ять, але по-перше пам'яті може просто не вистачити, а по-друге ми все-таки в багатозадачному ОС. А тепер подивимося що при цьому відбувається реально для кожного блоку блок даних з диска пересилається в кеш (зазвичай використовуючи, щоб не завантажувати процесор, щоб він міг в цей час зайнятися іншими справами), з цього кеша дані копіюються в наш буфер, в якому і проводиться обробка. При цьому, зрозуміло, дані в кеші зазвичай залишаються. Те ж саме відбувається з наступним блоком. В результаті кілька блоків просто займають кеш (ми ж все одно чітам файл послідовно), відбуваються зайві операції копіювання (які, на відміну від дискових, по-перше забирають на себе ресурси процесора, а по-друге забивають кеш процесора, тим самим гальмуючи всю систему в цілому). Уявімо собі, що ми запустили одночасно десяток таких програм. Частина пам'яті пішла даремно на буфери всередині програм, хоча вона нам в цей момент була б так потрібна в якості дискового кешу, і величезна кількість процесорного часу на тупе копіювання по багато разів однакових даних. Неприємно.

13. Формати файлів, що виконуються:

· .COM(Англ. Command) використовувалося в деяких комп'ютерних операційних системах в різних цілях. в системах DOS і в 8-бітної CP / M, файл COM - простий тип виконуваного файлу, розмір якого не може перевищувати 64 Кбайт-256 байт (65280 = 216 - 28 байт).

· .EXE(Скор. Англ. Executable - програма) - розширення виконуваного файлу, що застосовується в системах DOS, Microsoft Windows, Symbian, OS / 2, і в деяких інших. Крім об'єктного коду, може містити різні метадані (значок, цифровий підпис).

· A.out(Від англ. Assembler output) - формат запускаються файлів в деяких (старих) версіях UNIX. Формат файлу a.out переважно використовується в Linux. Раcшіренная версія цього формату a.outb використовується групою BSD-сумісних операційних систем (NetBSD, FreeBSD і OpenBSD). Компілятор NASM може генерувати файли обох форматів, якщо вказати ключ -f aout для Linux або -f aoutb для BSD. Компілятор GCC за замовчуванням видає файл a.out, якщо не використовується опція -o.

· Executable and Linkable Format
 ELF (англ. Executable and Linkable Format - формат виконуваних і компонованих файлів) - формат файлів, який використовується в багатьох UNIX-подібних операційних системах, наприклад, в GNU / Linux і Solaris, а також, після деякої модифікації ПО, - в деяких мобільних телефонах компаній Siemens, Sony Ericsson, Motorola (платформа P2K) і в багатьох цифрових фотовідеокамера (Olympus, Rekam та ін.). Кожен файл формату ELF має спеціальний заголовок, в якому, зокрема, зазначено адресу точки входу (стартовий адресу) програми. Поля цього заголовка використовує завантажувач (ELF interpreter) для завантаження програми в оперативну пам'ять перед виконанням. Кожен ELF файл складається з одного заголовка ELF, за яким слідують дані. Файли можуть включати в себе

o Таблицю Program Header, що описує нуль або більше сегментів

o Таблицю Section Header, що описує нуль або більше секцій

o Дані, зазначені в записах названих таблиць

Сегменти містять дані, необхідні для виконання файлу, а секції містять інформацію для лінковки і обробку relocation. Кожен байт в файлі може відноситься не більше ніж до однієї секції.

· MZ- Стандартний формат 16-бітових виконуваних файлів з розширенням .EXE для DOS. Файли .EXE і .DLL для Windows починаються з заглушки в форматі MZ, яка при спробі запустити файл в DOS виводить повідомлення This program can not be run in DOS mode. ( «Цю програму неможливо запустити в режимі DOS»).

· Portable Executable (PE) - Формат виконуваних файлів, об'єктного коду та динамічних бібліотек, використовуваний в 32- і 64-бітових версіях операційної системи Microsoft Windows. Формат PE є структурою даних, що містить всю інформацію, необхідну PE завантажувачу для проектування файлу в пам'ять.

14. Угода виклику або модель виклику (Англ. Calling convention) - Частина двійкового інтерфейсу додатків, яка регламентує технічні особливості виклику підпрограми, передачі параметрів, повернення з підпрограми і передачі результату обчислень в точку виклику. Якщо говорити простіше, то це протокол для передачі аргументів функцій, або домовленість між викликає і викликається кодом.

сdecl - Основний спосіб виклику для Сі (звідси назва, скорочення від «c-declaration»). Аргументи передаються через стек, справа наліво. Очищення стека виробляє зухвала програма. Це основний спосіб виклику функцій зі змінним числом аргументів (наприклад, printf (...))

thiscall- Використовується в компіляторах C ++. Забезпечує передачу аргументів при викликах методів класу в об'єктно орієнтованої середовищі. Аргументи передаються через стек, справа наліво. Очищення стека виробляє викликається,. Покажчик (this) на об'єкт, для якого викликається метод, записується в регістр ECX. Значення, що повертається функції зберігається в регістрі eax. Якщо його розмір занадто великий для розміщення в регістрі, то воно розміщується на верхівці стека, а значення в регістрі eax буде вказувати на нього.

15. Що таке віртуальна пам'ять? Які завдання вона вирішує? Що таке трансляція адрес? Опишіть різні види адрес у пам'яті.

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

Віртуальна пам'ять - Технологія управління пам'яттю ЕОМ, розроблена для багатозадачних операційних систем. При використанні даної технології для кожної програми використовуються незалежні схеми адресації пам'яті, які відображаються тим чи іншим способом на фізичні адреси в пам'яті ЕОМ. Дозволяє збільшити ефективність використання пам'яті декількома одночасно працюючими програмами, організувавши безліч незалежних адресних просторів і забезпечити захист пам'яті між різними додатками. Також дозволяє програмісту використовувати більше пам'яті, ніж встановлено в комп'ютері, за рахунок відкачування неіспользуемихстраніц на вторинне сховище.

завдання:

1. підтримка ізоляції процесів і захисту пам'яті шляхом створення свого власного віртуального адресного простору для кожного процесу

2. підтримка ізоляції області ядра від коду призначеного для користувача режиму

3. підтримка пам'яті тільки для читання і з забороною на ісполнененіе

4. підтримка вивантаження що не використовуються ділянок пам'яті в область підкачки на диску (свопинг)

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

6. підтримка розділяється між процесами пам'яті, в тому числі з

7. копіюванням-прі-записи для економії фізичних сторінок

Застосування механізму віртуальної пам'яті дозволяє:

· Спростити адресацію пам'яті клієнтським програмним забезпеченням;

· Раціонально управляти оперативною пам'яттю комп'ютера (зберігати в ній тільки активно використовуються області пам'яті);

· Ізолювати процеси один від одного (процес вважає, що монопольно володіє всією пам'яттю).

Трансляція мережевих адресов- метод, за допомогою якого безліч мережевих адрес і відповідних портів перетворюється в один мережеву адресу і номер порту. NAT забезпечує механізм підключення областей з приватними адресами до зовнішніх областям, в яких використовуються унікальні в глобальному масштабі зареєстровані адреси. (NAT дає можливість організаціям з адресами, глобально недійсними, підключатися до Інтернету шляхом трансляції своїх адрес в глобальні.)

 Відиадресов

Для ідентифікації змінних і команд використовуються символьні імена (мітки), віртуальні адреси і фізичні адреси.

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

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

фізичні адреси відповідають номерам комірок оперативної пам'яті, де насправді розташовані або будуть розташовані змінні і команди. Перехід від віртуальних адрес до фізичних може здійснюватися двома способами. У першому випадку заміну віртуальних адрес на фізичні робить спеціальна системна програма - переміщає завантажувач. Переміщає завантажувач на підставі наявних у нього вихідних даних про початковий адресу фізичної пам'яті, в яку належить завантажувати програму, і інформації, наданої транслятором про адресно-залежних константах програми, виконує завантаження програми, поєднуючи її з заміною віртуальних адрес фізичними.

Другий спосіб полягає в тому, що програма завантажується в пам'ять в незміненому вигляді в віртуальних адресах, при цьому операційна система фіксує зсув дійсного розташування програмного коду щодо віртуального адресного простору. Під час виконання програми при кожному зверненні до оперативної пам'яті виконується перетворення ВА у фізичну. Другий спосіб є більш гнучким, він допускає переміщення програми під час її виконання, в той час як переміщає завантажувач жорстко прив'язує програму до спочатку виділеному їй ділянці пам'яті. Разом з тим використання переміщує завантажувача зменшує накладні витрати, так як перетворення кожного віртуального адреси відбувається тільки один раз під час завантаження, а в другому випадку - кожен раз при зверненні за даною адресою.

16. опишіть сегментну реалізацію віртуальної пам'яті. Які її переваги і недоліки? Опишіть алгоритму трансляції адрес в ній. Що таке плоска модель сегментації? Які ще моделі сегментації існують?

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

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

Якщо віртуальні адресні простори декількох процесів включають один і той же сегмент, то в таблицях сегментів цих процесів робляться посилання на один і той же ділянку оперативної пам'яті, в який цей сегмент завантажується в єдиному екземплярі. Система із сегментною організацією функціонує аналогічно системі зі сторінкової організацією: час від часу відбуваються переривання, пов'язані з відсутністю потрібних сегментів у пам'яті, при необхідності звільнення пам'яті деякі сегменти вивантажуються, при кожному зверненні до оперативної пам'яті виконується перетворення ВА у фізичну. Крім того, при зверненні до пам'яті перевіряється, чи дозволений доступ необхідного типу до даного сегменту.

Віртуальний адресу при сегментної організації пам'яті може бути представлений парою (g, s), де g - номер сегмента, а s - зміщення в сегменті. Фізична адреса виходить шляхом додавання початкової фізичної адреси сегмента, знайденого в таблиці сегментів за номером g, і зміщення s.

переваги:

1. усувається один з великих недоліків сторінкового механізму - внутрішня фрагментація пам'яті (тобто наявність великої кількості невикористаних ділянок пам'яті всередині сторінок)

недоліки:

1. призводить до зовнішньої фрагментації пам'яті (тобто наявності великої кількості дрібних невикористаних ділянок пам'яті між сегментами)

2. більш повільне в порівнянні з сторінкової організацією перетворення адреси

При сегментної організації віртуальну адресу є двовимірним і складається з двох полів - номера сегмента і зміщення всередині сегменту. Логічний адресний простір - набір сегментів. Кожен сегмент має ім'я, розмір і інші параметри. Користувач специфицирует кожну адресу двома величинами: ім'ям сегмента і зміщенням. Кожен сегмент - лінійна послідовність адрес від 0 до максимуму. Різні сегменти можуть мати різну довжину, які можуть змінюватися динамічно (наприклад, сегмент стека). В елементі таблиці сегментів крім фізичної адреси початку сегменту (якщо віртуальний сегмент міститься в основній пам'яті) міститься довжина сегмента. Якщо розмір зміщення у віртуальному адресу виходить за межі розміру сегмента, виникає переривання.

Логічний адреса - впорядкована пара v = (s, d) (номер сегмента і зміщення всередині сегменту). В системах, де сегменти підтримуються апаратно, ці параметри зазвичай зберігаються в таблиці дескрипторів сегментів, а програма звертається до цих дескрипторів по номерам-селекторам. При цьому в контекст кожного процесу входить набір сегментних регістрів, Що містять селектори поточних сегментів коду, стека, даних і ін. І визначають, які сегменти будуть використовуватися при різних видах звернень до пам'яті. Це дозволяє процесору вже на апаратному рівні визначати допустимість звернень до пам'яті, спрощуючи реалізацію захисту інформації від пошкодження і несанкціонованого доступу.

Найпростішою моделлю є плоска модель. В цьому випадку всі сегменти відображаються в єдине фізичне адресне простір. Зсув сегмента може ставитися або до області коду, або до області даних. Дана модель в найвищого ступеня виключає механізм сегментації з архітектури, видимої як розробнику системи, так і прикладного програмісту. Така модель вибирається для програмного середовища типу UNIX, яка підтримує підкачування сторінок, але не підтримує сегментацію. Сегмент визначається дескриптором сегмента. Для плоскої моделі
 має створюватися мінімум два дескриптора, один для посилань до коду, а інший для посилань до даних. Обидва дескриптора мають однакове значення базової адреси. Всякий раз при доступі до пам'яті вміст одного з сегментні регістри використовується для вибору дескриптора сегмента. Дескриптор сегмента містить базову адресу сегмента і його кордон, а також інформацію, що управляє доступом.

Моделі сегментації: Захищена плоска модель, Багатосегментний модель.

17. опишіть сторінкову реалізацію віртуальної пам'яті. Які її переваги і недоліки? Опишіть алгоритму трансляції адрес в ній. Опишіть підходи до її оптимізації. Які проблеми виникають в ній при збільшенні розрядності апаратної архітектури до 64 біт.

Спосіб розривного розміщення завдань в пам'яті при якому всі фрагменти завдання однакового розміру кратного ступеня двійки називається сторінковим, а фрагменти сторінками. У цьому випадку пам'ять розбивається на фізичні сторінки (кадри, фрейми). А програма розбивається на віртуальні сторінки. Частина віртуальних сторінок розміщується в ОЗУ, а частина у зовнішній пам'яті. Місце на жорсткому диску, де розміщено віддалені сторінки називають файлом підкачки або сторінковим файлом (SWAP-файл). Щоб підкреслити, що записи цього файлу-сторінки заміщають один одного в ОЗУ в деяких операційних системах віртуальні сторінки не повинні знаходитись у файлі, а в спеціальному розділі диска. (Фізична адреса комірки пам'яті визначається парою (Pp, I), а віртуальний (Pv, I). Pv - Номер віртуальної сторінки, Pp - Номер фізичної сторінки, а I - номер комірки (індекс) всередині сторінки. Для відображення віртуального адресного простору на фізичну пам'ять для кожного завдання необхідно мати таблиці сторінок для трансляції адресних просторів. Для опису кожної сторінки диспетчер пам'яті операційної системи заводить відповідний дескриптор. За номером віртуальної сторінки в таблиці дескрипторів поточного завдання знаходиться відповідний елемент (дескриптор). Якщо біт присутності дорівнює одиниці, то дана сторінка знаходиться в ОЗУ і в дескрипторі знаходиться номер фізичної сторінки, відведеної під дану віртуальну сторінку.)

переваги:

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

недоліки:

1. Накладні витрати, т. Е. Таблиці сторінок потрібно розміщувати в пам'яті і їх потрібно обробляти

2. Програми розбиваються на сторінки випадково без урахування логічних взаємозв'язків наявних в коді програми. Тому міжсторінкових переходи здійснюються частіше ніж міжсегментні і важко організувати поділ програмних модулів між виконуються програмами

Передача інформації між пам'яттю і диском завжди здійснюється цілими сторінками. Сторінки, на відміну від сегментів, мають фіксовану довжину, зазвичай є ступенем числа 2, і не можуть перекриватися.

 Віртуальний адреса в сторінкової системі впорядкована пара (p, d), де p - номер сторінки у віртуальній пам'яті, а d - зміщення в рамках сторінки p, де розміщується адресованих елементів. Процес може виконуватися, якщо його поточна сторінка знаходиться в оперативній пам'яті. Якщо поточної сторінки в головній пам'яті немає, вона повинна бути переписана (підкачала) із зовнішньої пам'яті. Поступила сторінка може бути розміщена в будь-який вільний сторінковий кадр. Система відображення віртуальних адрес в фізичні зводиться до системи відображення віртуальних сторінок в фізичні і являє собою таблицю сторінок.

Для перетворення адресного простору кожного процесу використовується одна або кілька таблиць сторінок, які зазвичай зберігаються в оперативній пам'яті. Для посилання на таблицю сторінок використовується спеціальний регістр процесора

Динамічне перетворення адрес в системі здійснюється наступним чином. Здійснюється процес звертається по віртуальному адресою v = (p, d). Механізм відображення шукає номер сторінки p в таблиці відображення і визначає, що ця сторінка знаходиться в сторінковому кадрі p ', формуючи реальну адресу з p' і d.

Номер сторінки, як індекс зберігається в таблиці сторінок (page table), яка адресується за допомогою спеціального регістра процесора, і дозволяє визначити номер кадру по віртуальному адресою. Крім цього основного завдання за допомогою атрибутів, записаних в рядку таблиці сторінок, можна організувати контроль доступу до конкретної сторінці і її захист.

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

Для управління фізичної пам'яттю ОС підтримує структуру таблиці кадрів. Вона має одну запис на кожен фізичний кадр, який показує його стан.

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

Для оптимізації сторінкової пам'яті використовуються такі підходи:

- Спеціальний кеш - TLB (translation lookaside buffer) - в якому зберігається дуже невелика кількість (поярдка 64) найбільш часто використовуваних адрес сторінок (основні сторінки, до яких постійно звертається ОС)

- Багаторівнева (2, 3 рівня) таблиця сторінок - в цьому випадку віртуальний адреса розбивається не так на 2, а на 3 (4, ...) частини. Остання частина залишається зміщенням всередині сторінки, а кожна з інших задає номер сторінки в таблиці сторінок 1-го, 2-го і т. Д. Рівнів. У цій схемі для трансляції адрес потрібно виконати не 1 звернення до таблиці сторінок, а 2 і більше. З іншого боку, це дозволяє своп таблиці сторінок 2-го і т. Д. Рівнів, і довантажувати в пам'ять тільки ті таблиці, які потрібні поточному процесу в поточний момент часу або ж навіть кешувати їх. А кожна з таблиць окремого рівня має істотно менший розмір, ніж мала б одна таблиця, якби рівень був один

- Інвертована таблиця сторінок - в ній стільки записів, скільки в системі фреймів, а не сторінок, і індексом є номер фрейму: а число фреймів в 64- і більше розрядних архітектур істотно менше теоретично можливого числа сторінок. Проблема такого підходу - довгий пошук ВА. Вона вирішується за допомогою таких механізмів: хеш-таблиць або кластерних таблиць сторінок

Розмір сторінки та кількість сторінок залежить від того, яка частина адреси виділяється на номер сторінки, а яка на зміщення. Наприклад, якщо в 32-розрядної системі розбити адресу на дві рівні половини, то кількість сторінок становитиме 2 ^ 16, т. Е. 65536, і розмір сторінки в байтах буде таким же, т. Е. 64 КБ. Якщо зменшити кількість сторінок до 2 ^ 12, то в системі буде 4096 сторінки по 1 МБ, а якщо збільшити до 2 ^ 20, то 1 мільйон сторінок по 4КБ. Чим більше в системі сторінок, тим більше займає пам'яті таблиця сторінок, відповідно робота процесора з нею сповільнюється. А оскільки кожне звернення до пам'яті вимагає звернення до таблиці сторінок для трансляції ВА, таке уповільнення дуже небажано. З іншого боку, чим менше сторінок і, відповідно, чим вони більші за обсягом - тим більше втрати пам'яті, викликані внутрішньою фрагментацією сторінок, оскільки сторінка є одиницею виділення пам'яті. У цьому полягає дилема оптимізації сторінкової пам'яті. Вона особливо актуальна при переході до 64-розрядних архітектур.

 



© um.co.ua - учбові матеріали та реферати