
- •Огляд і характеристика операційних систем Узагальнена структура програмного забезпечення обчислювальних систем
- •Класифікація операційних систем
- •1. По призначенню ос діляться на:
- •2. По режиму обробки даних розрізняють:
- •3. За засобом взаємодії з обчислювальною системою ос діляться на:
- •4. За основним архітектурним принципом ос діляться на:
- •1. Принцип модульності
- •2. Принцип функціональної вибірковості
- •3. Принцип генерованості ос
- •4.Принцип функціональної надлишковості
- •5. Принцип віртуалізації
- •Принцип незалежності програм від зовнішніх пристроїв
- •Принцип сумісності
- •Принцип відкритої і нарощуваної ос
- •Принцип мобільності (переносимості)
- •10. Принцип забезпечення безпеки обчислень.
- •Планування процесів Дисципліни планування - вимоги, показники, класифікація
- •Базові дисципліни планування
- •Управління пам'яттю Віртуальна і реальна пам'ять
- •Фіксовані розділи
- •Односегментна модель
- •Багатосегментна модель
- •Сторінкова модель
- •Сегментно-сторінкова модель
- •Плоска модель пам'яті
- •Монопольно використовувані ресурси Властивості ресурсів і їх уявлення
- •Філософи, що обідають
- •Тупики: попередження, виявлення, розв'язка
- •Нескінченне відкладання
- •Файлові системи Структура магнітного диска
- •Файлова система fat
- •Структура завантажувального запису dos
- •Файлові системи vfat і fat32
- •Файлова система ntfs (New Technology File System)
- •Основні можливості файлової системи ntfs
- •Структура тому з файловою системою ntfs
- •Можливості файлової системи ntfs по обмеженню доступу до файлів і каталогів
- •Основні відмінності fat і ntfs
- •Файлові системи операційних систем класу Unix Структура файлової системи
- •Захист файлів
- •Системні засоби взаємодії процесів Дужки критичних секцій.
- •Віртуальні переривання або сигнали
- •Модель віртуальних комунікаційних портів
- •Загальні області пам'яті
- •Семафори
- •Програмні канали
- •Черги повідомлень
- •Література
- •Операційні системи
- •43018, Луцьк-18, вул. Львівська,75.
Управління пам'яттю Віртуальна і реальна пам'ять
Мультипрограмування буде ефективним тільки у тому випадку, коли декілька процесів одночасно знаходяться в оперативній пам'яті, тоді перемикання процесів не вимагає значного переміщення даних між оперативною і зовнішньою пам'яттю. Але тоді на ОС покладається завдання розподілу оперативної пам'яті між процесами і захисту пам'яті, яка виділена процесу, від втручання іншого процесу. Таким чином, пам'ять є одним з найважливіших ресурсів системи, і від ефективності функціонування менеджера цього ресурсу в значній мірі залежать показники ефективності всієї системи в цілому.
Процесор обробляє дані, які знаходяться в оперативній пам'яті, і процеси розміщують свої коди і дані в адресному просторі, який вони розглядають, як простір оперативної пам'яті. У дуже окремих випадках програміст задає при розробці програми реальні адреси в оперативній пам'яті, в більшості ж випадків між програмістом і середовищем виконання його програми коштує той або інший апарат перетворення адрес. У загальному випадку те адресний простір, в якому пишеться програма, називається віртуальною пам'яттю, на відміну від реальної або фізичної пам'яті - в якій відбувається виконання програми (процесу). Роботу з пам'яттю можна представити у вигляді трьох функцій перетворення, які показані на Малюнку 3.1.
|
Функція іменування проводить відображення крапки з простору імен програми в простір адрес у віртуальній пам'яті, іншими словами - переводить символьні імена, використовувані програмістом, у віртуальні адреси.
Функція прив'язки проводить відображення крапки з простору віртуальних адрес в простір реальних адрес, тобто, переводить віртуальні адреси в адреси фізичних елементів пам'яті.
Функція вибірки відображає крапку з простору реальних адрес в значення, тобто, вибирає вміст пам'яті за заданою адресою.
Функція іменування реалізується здебільшого обслуговуючими програмами, ми розглядаємо її в наступному розділі. Функція вибірки завжди реалізується апаратний. У даному розділі нас цікавитиме перш за все функція прив'язки адрес. Відносно її конструктором ОС повинне бути вирішений основне питання: на якому етапі підготовки/виконання програми її виконувати?
Програміст може писати програму, відразу прив'язуючи її до свідомо відомих адрес фізичної пам'яті, - це називається програмуванням в абсолютних адресах. Таке програмування виконується в специфічних випадках, наприклад, для програм, записуваних в ПЗП. Навіть у таких випадках програміст часто користується символічними іменами, покладаючи завдання перекладу імен у фізичні адреси на транслятор. Отримана таким чином програма називається абсолютною або непереміщуваною. Вона може виконуватися тільки, будучи завантаженій за певною адресою оперативній пам'яті.
Всі прикладні програми і переважна більшість системних програм є переміщуваними. Це означає, що в програмі, підготовленій до виконання (у тому образі програми, який зберігається на зовнішній пам'яті), звернення до пам'яті налаштовані на віртуальні адреси, не прив'язані поки до адрес реальної пам'яті.
Відзначимо, що іноді віртуальною пам'яттю називають саме ці властивості апаратури обчислювальної системи і витікаючі з них можливості для процесів працювати з віртуальним адресним простором більшого розміру, чим розмір наявної в системі реальної пам'яті. Ми ж слідуємо ширшій інтерпретації [13]: віртуальна пам'ять це те адресний простір, в якому розробляється процес. Таке розуміння відповідає визначенню ОС "з погляду користувача", яке ми дали в розділі 1.4. В даному випадку ОС приховує від процесу організацію низькорівневого ресурсу (реальній пам'яті) і конструює ресурс більш високого рівня, зручніший в обігу. Така інтерпретація не бере до уваги, на якому етапі - завантаження або виконання - проводиться трансляція адрес, і чи є в системі апаратна підтримка цієї трансляції. У окремому випадку розмір віртуальної пам'яті може бути і менше реальною.
У загальному випадку проектування менеджера пам'яті у складі ОС вимагає вибору трьох основних стратегій:
стратегії розміщення: яку область реальної пам'яті виділити процесу? як вести облік свободной/занятой реальної пам'яті?
стратегії підкачки: коли розміщувати процес (або частина його) в реальній пам'яті?
стратегії витіснення: якщо реальної пам'яті не вистачає для задоволення чергового запиту, то у якого процесу відібрати раніше виділений ресурс реальної пам'яті (або частина його)?
Нижче ми розглянемо способи реалізації цих стратегій для різних моделей пам'яті. Порядок розгляду відповідатиме принципу "від простого до складного" і в основному відображати також і історичний розвиток моделей пам'яті:
фіксовані розділи - модель, що не використовує апаратну трансляцію адрес;
односегментная віртуальна пам'ять - розвиток фіксованих розділів для апаратної трансляції адрес.
моделі віртуальної пам'яті, що використовують розвинені засоби апаратної трансляції адрес;
багатосегментна;
сторінкова;
комбінована сегментно-сторінкова.
моделі віртуальної пам'яті, що є поверненням до простих моделей, але на більш високому рівні:
плоска;
одноуровневая.