Що таке СПЗ
System Software – означає програми і комплекти програм, які є спільними для всіх, хто використовує технічні засоби комп’ютера, які застосовуються, як для автоматизації, розробки і створення нових програмних систем, так і для організації виконання існуючих програм. З цих позицій СПЗ може бути умовно розділене на такі групи:
Операційні системи – під ОС звичайно розуміють комплекс керуючих та обробляючих програм, які з одного боку виступають інтерфейсом між апаратурою комп’ютера і користувачем з його задачами, а з другого боку призначені для найбільш ефективного використання ресурсів обчислювальної системи, та організації надійних обчислень. Довільний з компонентів прикладного ПЗ обов’язково працює під керуванням ОС. Жодна з компонент ПЗ, за виключенням самої ОС, не має безпосереднього доступу до апаратури. Навіть користувачі взаємодіють із своїми програмами через інтерфейс ОС. Довільні команди перш як попасти в прикладну програму проходять через ОС.
Системи програмування – включають в себе такі компоненти, як транслятори з мов програмування, бібліотеки програм, редактори, компоновщики та відладчики. Зовсім самостійних (відірваних від конкретних ОС) систем програмування не буває. Довільна СП може працювати лише під відповідною ОС, під яку вона була створена. Але СП може давати можливість розробляти ПЗ і під інші ОС. В такому випадку коли програми, що створюються, повинні працювати на іншій апаратній базі, маємо крос СП.
Утиліти – це спеціальні системні програми, за допомогою яких можна, як обслуговувати саму ОС, так і готувати до роботи носії даних, виконувати перекодування даних, виконувати оптимізацію розміщення даних на носії, та виконувати деякі інші роботи пов’язані із обслуговуванням обчислювальних систем. Зрозуміло, що утиліти можуть працювати під відповідною ОС.
EMBED Visio.Drawing.6
Узагальнена структура ПЗ обчислювальної системи може бути представлена в такому вигляді:
СУБД – системи управління базами даних






EMBED Visio.Drawing.6
Основними функціями ОС є такі:
Сприймання від користувача завдань, або команд у вигляді директив, або у вигляді вказівок від маніпуляторів та їх обробка
Завантаження, запуск, призупинення та зупинка програм
Керування файловими системами та системами управління базами даних
Забезпечення режиму мультипрограмування, тобто виконання двох, або більше програм а одному процесорі
Забезпечення ф-цій по організації та керуванню всіма операціями вводу/виводу
Забезпечення виконання обмежень на час відповіді в режимі реального часу, що є важливим для ОС реального часу
Розподіл пам’яті, як основної так і зовнішньої, і організація віртуальної пам’яті
Планування та диспетчеризація у відповідності із заданими стратегією та дисципліною обслуговування задач
Організація механізмів обміну повідомленнями і даними між програмами, які виконуються, а також захист одних програм від впливу інших програм
Забезпечення роботи систем програмування
Таким чином ОС виконує функції керування обчислювальними процесами в комп’ютерній системі, розділяє ресурси системи між різним обчислювальними процесами і створює програмне середовище в якому виконуються прикладні програми користувача. Таке середовище називається операційним середовищем або операційним оточенням.
EMBED Visio.Drawing.6
Взаємодія користувачів з комп’ютерними системами відбувається через інтерфейс користувача, який підтримується ОС. Надалі приймаємо, що ф-ції ОС реалізуються програмним способом, але деякі з них можуть бути представлені програмно апаратними засобами і вигляді ПЗП (наприклад BIOS).
Операційне оточення складається з деякої множини стандартних сервісних програм, які можуть бути використані в процесі виконання задач і які надають засоби для керування ресурсами обчислювальної системи, виділяючи ці ресурси користувачам по потребах (наприклад керування вв/вив).
Операційне оточення разом з реальною машиною (апаратурою) створює розширену машину, яка і використовується під час виконання програм. Дякуючи операційному оточенню, кожна програма, тобто завдання для ОС, виконується ніби на окремій розширеній машині, хоча в дійсності ресурси реальної машини можуть роз приділяться між багатьма користувачами. Операційне оточення може включати декілька інтерфейсів: користувацькі і програмні.
Наприклад в Linux є інтерфейс команд рядка, інтерфейс панельний (типу NC), графічний інтерфейс XWindow з різними менеджерами вікон.
З точки зору процесора комп’ютера, як і всього комп’ютера в цілому, двійкова програма (тобто код), створений для роботи в середовищі Linux, використовує ті самі машинні команди і формати даних, що і програма створена для роботи в Windows. Але в цих двох випадках програма звертається до різних операційних середовищ. Програма створена безпосередньо під Windows не буде виконуватись під Linux. Але якщо в Linux створити повноцінне операційне середовище Windows, тоді Windows програма може бути виконана (ц називається емуляція).
Таким чином операційне середовище – це системне програмне оточення в якому можуть виконуватись програми створені за правилами роботи цього середовища.
Типи операційних систем
Не завжди можна досягнути повної якості у визначення типів ОС, оскільки вони можуть підпадати більш ніж під одну категорію класифікацій. Тому існує декілька підходів до класифікації ОС:
1 підхід: Класифікація за кількістю користувачів, які одночасно обслуговуються ОС.
Однопрграмна ОС – забезпечує роботу одної задачі одного користувача (пр. MS DOS 5.0)
Мультипрограмна ОС – дозволяє одночасно виконувати декілька задач одного користувача (Win 3.11, OS/2)
Багатокористувацькі ОС – одночасно обслуговують багато задач багатьох користувачів (Win 95,….., всі Linux…..)
Серед багатокористувацьких треба виділити багатопроцесорні ОС, які працюють на обчислювальних системах з декількома процесорами, і багатомашинні ОС.
Основна мета мультипрограмування – це підвищення продуктивності обчислювальної системи, за рахунок розподілення її ресурсів між декількома завданнями.
2 підхід: Класифікація за типом доступу, який надається інтерфейсом користувача.
1. Системи такої обробки обробляють потік завдань. Все керування по по читанню завдань і їх виконанню бере на себе ОС. Такі ОС були розповсюджені коли апаратура була дуже дорога, в теперішній час такі ОС втратили свою актуальність.
2. Діалоговий або інтерактивний доступ. Забезпечується для деякої кількості користувачів системами розподілу часу. ОС в цьому випадку використовує директиви користувачів по мірі того, як вони вводяться, намагаючись дати відповідь на кожну команду користувача за найкоротший час. Для обробки зовнішніх сигналів, які надходять з різних здавачів, і для швидкої відповіді на такі сигнали використовуються ОС реального часу. Такі системи працюють на ком’ютерах для яких час є критичним параметром (наприклад, керування літаком). Такі системи повинні забезпечувати гарантований час реакції на зовнішні події.
Але досить часто всі ознак класифікацій реалізуються в одній системі і тому реалізувати такі ОС досить важко. На рівні ф-ції і послуг, які надаються операційним оточенням є багато спільного мій ОС, які на рівні інтерфейсу користувача зовсім різні і навпаки.
Керування процесами.
Поняття обчислювальний процес є одним з основних при розгляданні ОС. Процес або задача – це програма під час виконання на процесорі із послідовним виконанням команд. Сам процесор розглядається в двох аспектах:
Він є носієм даних.
Він виконує операції пов’язані з обробкою даних.
Процесом може бути виконання утиліти, виконання прикладної програми, транслятор деякої вихідної програми. При чому коли транслюється одна програма – це один процес, а коли інша – інший процес, хоча працює один і той самий транслятор.
Розглянемо комп’ютер з одним центральним процесом, але всі наступні питання справедливі і для багатопроцесорних систем:

Процес приймає ряд дискретних станів. Зміну станів процесу можуть викликати різні події. Процес знаходиться в стані виконання, якщо в біжучий момент йому надається центральний процесор. Процес знаходиться в стані готовності, якщо він міг би одразу використовувати центральний процесор, який знаходиться в його розпорядженні. Процес знаходиться в стані заблокованості, якщо він очікує на деяку подію; приклад: завершення операції вводу-виводу для того, щоб отримати можливість продовжити виконання. Це основні стани процесу.
В однопроцесорному комп’ютері в кожен конкретний момент часу може викликатися один процес, але декілька процесів можуть знаходитись в стані готовності, а деякі бути заблоковані. Тому створюють списки: список процесів готових до виконання: 2 список або черга заблокованих процесів. Перший список або черга впорядкований за пріоритетом таким чином наступний процес який отримує в своє розпорядження центральний процесор буде першим цього списку. Другий список не впорядкований, не передбачається ніякого пріоритетного порядку розблокування процесорів, тобто їх переводу в стан готовності. Розблокування відбувається в тому порядку, в якому відбуваються події, які очікуються заблокованими процесами. ОС як правило процес з’являє при запуску довільної програми. Коли процес створено, він займає місце в кінці списку готових до виконання процесів. Під час функціонування ОС такий процес поступово просувається до початку списку в відповідності з тим, як завершиться виконання попередніх процесів. Коли процес буде першим у списку готових до виконання і коли звільниться центральний процесор, то центральний процесор буде цьому процесу і в той момент відбувається зміна стану процесу. Вибір процесу до виконання називається пуском. Це виконання за допомогою програми ОС, яка називається диспетчер. В мультипрограмних системах для того, щоб запобігти випадковому або навмисному захвату ресурсів комп’ютера одним довільним процесом ОС встановлює в спеціальному апаратному таймері переривань деяке значення, яке визначає часовий інтервал або квант часу на протязі якого біжучому процесу користувача дозволяється утримувати центральний процесор в своєму розпорядженні. Після закінчення часу таймер виробить сигнал переривань за яким керувати буде передане ОС. Після цього ОС переведе процес, який перед цим виконувався в стані готовності, а перший процес із списку готовий переведе в стан виконання.
Якщо процес, який виконувався ще до закінчення кванту часу згенерує операцією вводу-виводу він тим самим сам звільнить центральний процесор, тобто себе сам заблокує на час завершення операції вводу-виводу.
Системи з трьома активними станами процесів можлива ще одна зміна станів після завершення операції вводу-виводу. Процес перейде із заблокованого стану в стан готовності. Таким чином маємо чотири можливі зміни стану процесу. Єдина зміна станів, яка викликається самим процесом це блокування інші при зміні викликів об’єктами, які є зовнішніми по відношенню до біжучого процесу.
Пасивний стан – це програма, яка не виконується.
Процес із пасивного стану може перейти в стан готовності в таких випадках:
За командою користувача. Це має місце в таких інтерактивних або діалогових ОС, де програма може мати статус задачі, а не бути файлом виконання і тільки на час виконання вона може отримувати статус задачі, тобто процесу.
При виборі планувальника з черги процесу.
За викликом із інших задач. Один процес може створювати, ініціювати, призупинити і зупинити інший процес.
За перериванням від зовнішнього пристрою. Сигнал при виконання деякої події може записувати відповідну задачу
При надходженні запланованого часу програм із стану виконання процес може вийти з таких причин:
процес завершується. При цьому він передає керування ОС і повідомляє про своє завершення. В результаті процес переходить в пасивний стан або знищується. Знищується не сама програма, а саме активний процес, який відповідає виконанню деякої програми. В пасивний стан також може бути переведений за командою користувача.
процес переводиться ОС в стан готовності у зв’язку виникнення більш пріоритетної задачі або через завершення виділення кванту часу.
процес блокується або через запит операції вводу-виводу або через те, що йому неможливо надати ресурс на який виник запит, або за командою користувача призупинку процесу. З початком відповідної дії процес буде деблоковано і переведено в стан готовності до виконання. Таким чином силою, яка міняє стани процесу це події і один з видів подій це - переривання.
Блок керування процесом.
Для того, щоб ОС могла керувати процесуми, вона повинна володіти всією необхідною інформацією про процеси. Для цього для кожного процесу створюється спеціальна інформаційна структура, яка називається блок керування процесом (PCB) або дескриптор процесу або описувач задачі. В загальному випадку PCB вміщує таку інформацію:
Ідентифікатор процесу (PID).
Тип або клас процесу, який визначає для ОС деякі правила надання ресурсів.
Пріоритет процесу в відповідності з яким ОС надає ресурси в рамках. В рамках одного класу у процесі обслуговуються більш пріоритетні процеси.
Зміна стану, яка визначає в якому стані знаходиться процес (готовність, виконання, блокування).
Адреса захищеної області пам’яті, в якій зберігаються біжучі значення регістрів процесора, якщо процес призупиняється або переривається не завершивши роботу. Ця інформація називається контекст процесу або контекст задачі.
Інформація про ресурси, якими володіє процес або має право використовувати.
Адреса місця в основній пам’яті для організації спілкування з іншими процесами.
Параметри часу запису. Це момент часу, коли процес повинен активізовуватись, а також вказується періодичність цієї процедури.
Для дисрезидентних задач, тобто таких, які постійно знаходяться на зовнішній пам’яті і завантажуються в основну пам’ять тільки на час виконання, зберігається адреса задачі на диску в її вихідному стані. PCB як правило постійно розташований в ОП з метою прискорення роботи ОС, яка організовує їх в чергу і відображає зміну стану процесу шляхом переміщення відповідного PCB з одного стану в інший. Для кожного стану ОС веде відповідний список процесів, які знаходяться в цьому стані таким чином PCB це об’єкт, який визначає процес для ОС.
Операції над процесами.
При керуванні процесуми ОС повинна мати можливість виконувати певні операції над процесом, а саме:
Створення процесу.
Знищення процесу.
Відновлення процесу.
Зміну пріоритету процесу.
Блокування процесу.
Розблокування процесу.
Вибір процесу або пуск.
При створенні процесу відбувається:
Присвоєння процесу ім’я.
Включення всього імені в список імен процесів, які відомі системі.
Визначення початкового пріоритету процесу.
Формування блоку PCB.
Виділення процесу початкових ресурсів.
Процес може викликати новий процес. В такому випадку перший процес це батьківський процес, а знову створений – це згенерований активний процес. При такому підході створюється ієрархічна структура процесів, в якій у згенерованого процесу є тільки один батьківський процес, а у кожного батьківського може бути багато згенерованих.

Знищення процесу.
Знищення процесу – вилучення процесу із системи. Ресурси, які були у розпорядженні процесу повертаються в систему, ім’я процесу в системних списках та таблицях стираються. Блок РСВ знищується.
Призупинення та відновлення процесу.
Призупинення – важлива операція, яка реалізується в багатьох різних системах по різному. Призупинений процес не може продовжувати своє виконання до того моменту, доки його не активізує довільний інший процес. Дуже часто ОС використовує призупинення для короткочасного виключення певних процесів в періоди пікового навантаження на систему.
У випадку довгострокового призупинення процесу його ресурси повинні бути вивільнені.
Рішення про необхідність вивільнення конкретних ресурсів в значній мірі залежить від природи цього ресурсу. Основна пам’ять звільнюється негайно, в той час як зовнішній запам’ятовуючий пристрій у випадку короткострокового призупинення може залишатись за проц. Призупинення та відновлення відіграють важливу роль з декількох причин:
Якщо система працює не надійно, є ознаки, що вона може відмовити, то біжучі процеси можна буде призупинити для того, щоб знову їх активізувати після виправлення помилки.
Користувач у якого окремі проміжні результати роботи викликають сумніви може призупинити процес, а не вилучити його зовсім доки не стане зрозуміло правильно чи неправильно працює цей процес.
Деякі процеси можна призупиняти в періоди пікового навантаження на систему з тим, щоб потім їх відновити.
З врахуванням призупинення та відновлення діаграма станів процесу буде мати такий вигляд:

Виникає питання: для чого переводити заблокований процес в стан призупинення?
Справа в тому, що завершення операції вводу-виводу, або подія, яка очікується може ніколи не відбутись, або можуть затриматись на невизначений час, тому перед розробниками ОС виникає вибір:
1.Виконувати призупинення заблокованого процесу.
2.Передбачити механізм, який дозволив би переводити процес із стану готовності в стан призупинення, коли завершиться операція вводу-виводу, або наступить інша очікувана подія.
Оскільки призупинення є операцією найвищого пріоритету, її треба виконувати негайно.
Обробка переривань.
В комп’ютері переривання – це подія, при якій міняється нормальна послідовність команд, яка виконується процесором.
Нормальна послідовність команд вважається така, яка визначається програмою, тобто процесом.
Переривання представляє собою механізм, який дозволяє координувати паралельне функціонування окремих пристроїв комп’ютерної системи та реагувати на особливі стани, які виникають при роботі процесора.
Переривання – примусова передача керування від програми, яка виконується до ОС, а через неї до відповідної програми обробки переривань.
Переривання відбуваються при виникненні відповідної події. Механізм переривань реалізований апаратно-програмними засобами.
І Відключення переривань, збереження контексту перерваної програми, установка режиму роботи системи переривань
ІІ Тіло програми обробки переривань
ІІІ Відновлення контекста перерваної раніше програми, відновлення попереднього режиму роботи системи переривань
переривання
Програма,що виконується
Структура системи переривань в залежності від архітектури компютера системи може бути різною, але всі вони реалізують одну ідею: переривання викликає зміну порядку виконання команд процесора.





Перехід від перерваної програми до обробленої програми і назад повинен виконуватись як можна швидше. Один з методів реалізації цього є використання таблиці, яка вміщує перелік всіх допустимих для комп’ютера переривань та адреси відповідних обробників переривань. Для коректного повернення до переривань програма перед передачею управління обробнику переривань вмістиме регістрів процесора запам’ятовується або в пам’яті з прямим доступом, або в системному стеку. Таким чином, якщо відбулось переривання, то:
Керування передається ОС.
ОС запам’ятовує стан перерваного процесу, як правило ця інформація запам’ятовується в блоці PCB для перерваного процесу.
ОС аналізує тип переривань і передає керування відповідній програмі обробки цього переривання.
Ініціатором переривання зокрема може бути процес, який виконується або воно може бути викликано деякою подією, пов’язаною або навіть непов’язаною з цим процесом.
Переривання, які виникають при роботі комп’ютерної системи можна розділити на такі основні групи:
Зовнішні або асинхронні переривання.
Вони викликаються асинхронними подіями, які відбуваються поза процесом, який переривається. Це такі:
Переривання від таймера, тобто від системного годинника.
Переривання від зовнішніх пристроїв.
Переривання від збоїв живлення.
Переривання з пульта оператора системи або від користувача.
Переривання від іншого процесора або від іншої комп’ютерної системи.
Внутрішні переривання.
Викликаються подіями, які пов’язані з роботою процесора і є синхронними з операціями процесора. Це такі:
при неправильній адресації, коли в адресній частині команди, яка виконується вказано заборонену або неіснуючу адресу, вказано звертання до неіснуючого сегмента пам’яті або сторінки, при організації механізму віртуальної пам’яті;
2. при наявності в полі коду операції коду неіснуючої команди;
3. при діленні на нуль;
при переповненні або попаданні порядку в числах з рухомою комою;
при виявленні помилок парності, а також помилок в роботі різних пристроїв в апаратурі комп’ютерними засобами контролю.
3. Переривання за звертанням до супервізора.
В деяких комп’ютерах існують привілейовані команди, які може використовувати тільки ОС, а не програмний користувач. Відповідно в апаратурі передбачені різні режими роботи. При спробі виконати команду заборонену в даному режимі відбувається внутрішнє переривання і керування передається супервізору.
4. Програмні переривання.
Ці переривання відбуваються за відповідних командних переривань. За такими командами процесор виконує практично ті самі дії, що і при звичайних внутрішніх перериваннях. Оскільки сигнали переривань виникають в довільні моменти часу, то на момент переривання може існувати декілька таких сигналів, які можуть бути оброблені тільки послідовно. Щоб обробляти їх в деякому логічному порядку їм присвоюють пріоритети. За рівнями пріоритетів переривання розподіляють таким чином:
SHAPE \* MERGEFORMAT Засоби контролю процесора
Системний таймер
Зовн.
пристр.
Програмні переривання
Магнітні диски
Мережеве обладнання
Термінали
Високий приорітет
Низький

Сигнали з більш високим пріоритетом обробляють в першу чергу, обробка інших сигналів відкладається.
Переключення контексту.
Для обробки кожного з видів переривань в складі ОС передбачені програми, які називаються оброблювачі переривань (IH, Interrupt Handler).
Коли відбувається переривання, ОС запам’ятовує стан перерваного процесу і передає керування відповідному оброблювачу. Це робиться в спосіб, який називається переключення контексту. При реалізації цього способу використовується слово стану програми (PSW, Program Status Word). Ці слова керують порядком виконання команд і вміщують інформацію відносно стану процесу. Існує три типи PSW:
Адреса наступної команди, яка має виконуватись вміщується в біжучому PSW, в якому вказані також типи переривань дозволені і заборонені в біжучий момент.
Центральний процесор реагує тільки на дозволені переривання, обробка заборонених переривань або затримок в деяких випадках ігнорується. Процесору не можна заборонити реагувати на переривання за викликом супервізора, за рестартом, а також на деякі види програмних переривань. В одно процесорній машині є тільки одне біжуче PSW, але n нових PSW, і n старих PSW. Нове PSW для біжучого типу переривань містить постійну адресу, за якою резидентно розміщується оброблювач переривань цього типу.
Коли відбувається переривання, якщо воно не заборонено для процесора відбувається автоматично, яке виконується апаратно переключення PSW таким чином:
біжуче PSW робиться старим PSW для переривань цього типу;
нове PSW для переривань цього типу робиться біжучим PSW.
Після такого заміщення біжуче PSW буде вміщувати адресу відповідного оброблювача переривань, який починає відробляти біжуче переривання. Коли обробка переривань завершиться, центральний процесор починає обслуговувати або той процес, який виконується в момент переривань, або готовий процес з найвищим пріоритетом.
Ядро операційної системи
Всі операції пов’язані з процесами виконуються під керуванням тої частини ОС, яка називається ядром. Ядро – це невеличка частина ОС, але це компонент який найбільш інтенсивно використовується. З цієї причини ядро звичайно розміщується в основній пам’яті, в той час як інші частини ОС знаходяться на зовнішніх запам’ятовувальних і при необхідності викликаються в ОП такий процес називається Swapping. Одна з найважливіших функцій ядра це обробка переривань. У великих багатоабонентських в процесор надходить постійний потік переривань, коли ядро обробляє біжуче переривання воно забороняє всі інші і дозволяє їх знову тільки після обробки текучого переривання. При постійному потоці переривань може утворитись така ситуація, що ядро буде блокувати переривання на протязі значного часу, тобто не буде мати можливості реагувати на переривання. Тому ядро звичайно розробляють таким чином, щоб воно виконувало мінімально можливу попередню обробку кожного переривання, а потім передавало це переривання на подальшу обробку відповідно обробнику переривань, після початку роботи якого ядро отримало Можливість дозволити обробку інших переривань. Таким чином реакція суттєво зростає.
Основні функції ядра. Ядро як правило вміщує програми тобто компоненти ядра для реалізації таких функцій:
Обробка переривань
Створення і знищення процесів
Переключення стану процесу
Диспетчеризація
Призупинення та активізація процесів
Організація взаємодії між процесами
Маніпуляція блоками PCB
Підтримка операцій вводу/виводу
Підтримка розподілу і перерозподілу пам’яті
Підтримка роботи файлової системи
Підтримка роботи виклику та повернення для звертання для процедури
Підтримка функцій обліку в роботі КС
Функції які реалізує ядро називаються примітивними – найпростіші функції в ОС.
В ієрархічних системних структурах ядро розташується безпосередньо над базовим апаратурного комп’ютера. А на вищих рівнях розташовані процеси системи та процеси користувача. Практика показала що такі системи піддаються відладці, модифікації та тестуванню.
Асинхронно паралельні процеси
Процеси називаються паралельними якщо вони існують одночасно. Розвиток технології створення апаратури сприяють зменшенню габаритів апаратури , розвитку багатопроцесорних систем і як кінцевий результат реалізації максимального паралелізму на всіх рівнях роботи КС. Паралельні процеси можуть бути повністю незалежними або взаємодіючими. Взаємодіючі процеси можуть бути конкуруючими або такими що сумісно виконують спільну роботу. Як правило маємо справу з паралельними процесами яким необхідно тільки час від часу синхронізуватись та взаємодіяти. Такі паралельні процеси називаються асинхронними.
EMBED Visio.Drawing.6

EMBED Visio.Drawing.6

Ця програма друкує за чергою всі файли, імена яких послідовно в порядку надходження записують в загально-доступний спеціальний файл замовлень інших програм. Спеціальна змінна NEXT, яка також доступна усім процесам-клієнтам вміщує номер першої вільної для запису імені файла позиції у файлі замовлень. Процеси клієнти читають адресу з NEXT і записують у відповідну позицію файла замовлень своє ім’я і збільшують значення NEXT і записують у відповідну позицію файла замовлень своє ім’я і збільшують значення NEXT на 1. припустімо, що в деякий момент процес вирішив роздрукувати свій файл. Для цього він прочитав значення NEXT. Процес запам’ятав це значення але розмістити туди ім’я файла не встиг оскільки його виконання було перервано, наприклад через закінчення кванту часу. Черговий процес S який теж хоче роздрукувати свій файл так само прочитав значення NEXT розмістив в позицію 4 ім’я свого файлу(S2) і збільшує NEXT на 1(S3). Коли в черговий раз керування буде передано процесу R то він продовжить своє виконання у повній відповідності із значенням біжучої вільної позиції у файлі замовлень, яке було отримане під час попередньої ітерації і запише ім’я свого файла також в позицію 4 поверх імені файла, яке записав процес S. В результаті процес S ніколи не побачить свій файл роздрукованим таким чином, має місце проблема синхронізації процесів.
Складність проблеми синхронізації полягає в тому що синхронізації виконують регулярно. Це визначається взаємними швидкостями процесів і моментами їх переривання. Така відладка взаємодіючих процесів є складною задачею. Ситуація подібна тій коли два або більше процесів обробляють дані тобто такі що дозволяються і що кінцевий результат залежить від співвідношень швидкостей процесів називають перегонами або гонками. Вони мають місце не тільки в програмному але й апаратному рівні.
Взаємовиключення – спосіб взаємодії між процесами, при якому під час звертання одного процесу до даних що розділяються всім іншим процесам це заборонено. Якщо процес звертається до змінних які розділяються то цей процес знаходить на своїй критичній ділянці або критичній області. Для всіх інших процесів, які розділяють дані можливість входу в критичні ділянки повинна бути виключена. Він не повинен блокуватись на критичній ділянці. Критичні ділянки потрібно програмувати найбіль ретельно, щоб виключити наприклад можливість зациклювання. Таким чином, маємо наступну задачу. Ми хочемо реалізувати взаємовиключення з виконаним таким чином 4-х обмежень:
задача повинна бути розв’язана програмним способом на комп’ютері який не має спеціальних команд взаємовиключення, причому:
а). кожна команда виконується як операція яка не може бути поділена
б). при одночасній спробі декількох процесорів звернутись до того самого елемента даних спрацьовує апаратна схема захисного блокування пам’яті. Будується черга яка дозволяє виконуватись тільки одне звертання.
не повинно бути ніяких припущень щодо відносних швидкостей виконання асинхронних паралельних процесів
процеси які знаходяться поза своїми критичними ділянками не можуть заважати заходити у їх власні користувацькі ділянки
не повинно бути безумовного відкидання моменту входу процесів в іх критичні ділянки
Семафори
Всі найважливіші поніття які мають відношення до взаємовиключення були об’єднані в концепції семафорів. Семафор – це захищена змінна значення якої можна читати та міняти тільки за допомогою операцій Р, V також операцій ініціалізації двійкові семафори можуть приймати значення 0 та 1. семафори з рахуванням можуть приймати невід’ємні цілі значення. Операція Р-типу семафори S:
EMBED Visio.Drawing.6
Узагальнений зміст примітиву Р(S) полягає у перевірці біжучого значення семафора S і якщо він не менше 0 то виконується перехід до наступної за даним примітивом операції, процес змінюється на деякий час з виконання і переходить в стан пасивного очікування. V(S) пов’язана із збільшенням значення семафора на 1 і переводом одного або декілька процесів в стан готовності.
Операції P та V виконуються ОС у відповідь на запит виданий деяким процесом і який вміщує ім’я семафора. Для роботи з семафорами треба мати операцію ініціалізації семафора. Семафори можна використовувати для реалізації механізму синхронізації процесів шляхом блокування розблокування. Один процес блокує себе виконуючи операцію Р з погчатковим значенням S=0 для того щоб очікувати на прихід деякої події. Інишй процес виясняє що подія яка очікуватиме відбулась і відновлює заблокований процес за допомогою операції V. Семафори з рахуванням осбливо корисні у випадку коли деякий ресурс виділяється з множини ідентичних ресурсів кожна Р-операція показує що ресурс виділяється деякому процесу а V-операція що ресурс повертає в загальну множину. Операції над семафорами можна реалізувати з використанням режиму активного очікування, але це може призвести до втрати ефективності, щоб цього уникнути подібні операції потрібно реалізовувати в ядрах.
Асинхронні паралельні процеси
Тупики (дедлока, клінча):
В багатопрограмній системі процес знаходиться в стані тупика, дедлока або клінча якщо він очікує на деяку подію, яка ніколи не відбудется. Системна тупикова ситуація – це коли один або декілька процесів виявляються в стані тупика. Одна з основних функцій ОС це розподіл ресурсів, коли ресурси розподіляються між багатьма користувачами кожному з яких надається право виключного керування виділеними йому конкретними ресурсами можливе виникнення тупиків, які дадуть процесам деяких користувачів коли-небудь дійти до завершення. Розглянемо таку ситуацію:
EMBED Visio.Drawing.6

EMBED Visio.Drawing.6




Нехай після того, як А захопив принтер, тобто встановив блокуючу змінну в семафорі він був перерваний керування отримав процес в який спочатку захопив диск але при виконанні наступної команди був заблокований оскільки принтер захоплений процесом А і процес В став в чергу за цим ресурсом, керування знову отримує процес а, який у відповідності зі своєю програмою хоче захопити диск. Але диск захоплений процесом В і процес а блокується. Маємо ситуацію тупика. В такому стані процеси А і В можуть знаходитись безмежно довго. Можливий інший розвиток взаємодії цих процесів:
EMBED Visio.Drawing.6
EMBED Visio.Drawing.6
в такому випадку не виникає тупика, виникає лише черга на диску.
В цих 2-ох прикладах процес А і
процес В розділяють ресурси
тобто спільно використовують.
Якщо б мало місце незалежне
використання ресурсу кожним процесом
то така діаграма виглядає наступним чином:
Типові ситуації треба відрізняти від звичайних, хоча ті і інші виникають при сумісному використанні ресурсів зовні виглядають схоже. Процес призупиняється і очікує звільнення ресурсу. Але черга нормативне явище однаково високого коефіцієнту використання ресурсу. Графічно тупикові ситуації можна представити таким чином:
EMBED Visio.Drawing.6




Для виникнення тупика необхідні такі умови:
умова взаємо виключення – процеси вимагають надання їм права монопольного керування ресурсами які їм виділяють
умова очікування ресурсу – процеси утримують за собою ресурси які вже виділені їм, очікуючи в той же час виділенню нових ресурсів
умова неперерозподілюваності – ресурси неможливо відібрати у процесів які їх утримують, доки ці ресурси не будуть використані для завершення роботи
умова кільцевого очікування – існує кільцевий ланцюжок процесів в якому кожний процес утримує за собою один або декілька ресурсів, які потрібні наступному процесу ланцюжка.
Якщо хоча б одна з умо не виконується, тупик не виникає. Стратегія боротьби з тупиками полягає в томк щоб порушити хоча б одну умову. В системах із спулінгом можливе виникнення тупиків коли виділена область буферної пам'яті заповнюється коли процес завершує свою роботу.
Алгоритми планування процесів
Планування включає в себе розв8язок наступних задач:
вибір момента часу для зміни процеса який виконується
вибір процеса на виконання з черги нових
переключення контекстів старого і нового процесів
Задачі 1 і 2 розв'язуються програмними засобами, а 3 в значній мірі розв'язується апаратно. Існує багато алгоритмів клонування процесів, які по різному розв'язуються ці три задачі. Найчастіше зустрічаються такі дві групи алгоритмів:
алгоритми побудовані на принципі квантування
алгоритми побудовані на принципі пріоритетів
В першому випадку зміна активного процесу відбувається якщо:
процес закінчився
виникла помилка
процес перейшов в стан очікування
закінчився квант процесорного часу який був відведений деякому процесу
В другому випадку використовується поняття пріоритету. Пріоритет – це число яке характеризує ступінь привілейованості процесу при використанні ресурсів комп'ютера, зокрема процесорного часу. Чим вищий пріоритет тим вищі привілеї. Чим вищі привілеї тим менше часу він буде проводити в чергах. Пріоритети можуть призначатись ОС або адміністратором за якимись критеріями. Він може залишатись фіксованим на протязі всього життя процеса або мінятись в часі. В останньому випадку пріоритети називають динамічними. Вибирається процес який має найбільший пріоритет інакше розв'язується проблема визначення моменту зміни процесу.
В багатьох ОС алгоритми планування побудовані з використанням як квантування так і пріоритетів. Наприклад в основі планування лежить квантування але величина кванта або порядок вибору процесів з черги готових визначається пріоритетами процесів.
Витісняючи невитісняючі алгоритми планування:
Існує два основні типи процедур планування процесів:
витісняючи preemptire
невитісняючі non – preemptire
Невитісняюча багатозадачність – це спосіб планування процесів при якому активний процес виконується до того часу доки він сам за власною ініціативою керування планувальнику ОС для того щоб той вибрав з черги інший готовий до виконання процес
Витісняюча багатозадачність – це такий спосіб планування при якому рішення про переключення процесора з виконання одного процеса на інший процес приймається планувальником ОС а не активним процесом.
Типи багатозадачності – це більш широкі поняття ніж типи пріоритетності. Пріоритети задач можуть як використовуватись так і невикористовуватисьяк при витісняючій так і при невитісняючій багатозадачності. Основна відмінність між витісняючи ми і невитісняючими плануваннями – це ступінь нейтралізації механізма планування задачі. У витісняючому випадку механізм планування задач повністю зосереджено в ОС. В цьому випадку ОС виконує такі функції:
визначає момент коли знімається з виконання остання задача
запам'ятовується контекст
вибирається з черги готових задач наступна
ця задача запускається на виконання шляхом завантаження її контексту
EMBED Visio.Drawing.6
В невитісняючому випадку механізм планування розміщається між ОС і прикладними програмами. Прикладна програма отримає керування від ОС. Сама визначить момент завершення чергової ітерації і передає керування ОС за допомогою системного виклику. ОС формує черги задач і вибирає із врахуванням пріоритетів. Такий механізм досить складний як для користувача так і для розробників. Програміст повинен забезпечити дружнє відношення до інших програм які виконуються одночасно, тобто досить часто їм віддавати керування.


EMBED Visio.Drawing.6
мал.1. Витісняюча багатозадачність

мал.2. Невитісняюча (кооперативна) багатозадачність
Витісняючу багатозадачність називають справжньою багатозадачністю.
Нитки (thread)
Багатозадачність – найважливіша якість ОС. Для її підтримки ОС визначає і створює для себе ті внутрішні одиниці роботи, між якими будуть розділятись всі ресурси комп’ютера.
ОС підтримує відокремленість ресурсів. У кожного процесу є свій віртуальний адресний простір. Кожному процесу призначаються свої ресурси: файли, семафори, вікна тощо. Все це створюється для того, щоби захистити один процес від інших. При мультипрограмуванні підвищується пропускна здатність системи в цілому, але окремий процес ніколи не може бути виконаний швидше, ніж у випадку його виконання в однопрограмному режимі, оскільки витричається час на очікування розділюваних ресурсів. Але задачі, яка розв’язуються в рамках одного процесу, може бути притаманний внутрішній паралелізм, який в принципі дозволяє прискорити її розв’язок. Наприклад, в ході виконання задачі відбувається звертання до завантаження принтера. Під час цієї операції можна не блокувати цей процес, а продовжити виконання по іншій гілці алгоритму. Для цього пропонується механізм багатониткової обробки (multithreating).
І мультипрограмування тепер можна реалізувати на рівні ниток. Оскільки всі нитки одного процесу завжди належать одній програмі, між ними досить легко організувати тісну взаємодію. Програміст може завчасно продумати роботу множини тредів процеса таким чином, щоби вони могли взаємодіяти, а не боротись за ресурс. Тобто нитки подібні до процесів, але в рамках одного процеса не такі незалежні. Всі нитки мають один адресний простір, вони розділяють одні і ті самі глобальні змінні, кожний тред має доступ до кожної віртуальної адреси. Одна нитка може використовувати стек іншої нитки і між ними немає повного захисту. Всі нитки розділяють набір відкритих файлів, таймерів, сигналів тощо.
Таким чином нитки мають власні:
програмний лічильник;
стек;
регістри;
треди-нащадки;
стани.
Треди розділяють:
адресний простір;
глобальні змінні;
відкриті файли;
таймера;
семафори;
статистичну інформацію про роботу системи.
Головне, що забезпечують нитки – це можливість паралельно виконувати декілька видів операцій в одній прикладній програмі. Паралельність обчислень, а значить і більш ефективне використання ЦП і менший сумарний час виконання задач тепер реалізується і на рівні тредів. Об’єкт-процес припускає, що при диспетчеризації треба враховувати всі ресурси, а при роботі з об’єктом “тред” можна міняти тільки контекст задачі, якщо ми переключаємось в рамках одного процесу. Всі інші ресурси не торкаються.
Кожний процес складається як мінімум з одного треда. І тільки якщо є внутрішній паралелізм програміст може його розділити на декілька тредів. В багатопроцесорних системах із спільною пам’яттю треди просто необхідні, оскільки вони дозволяють завантажити роботою всі процеси. Але треба мати на увазі, що все-таки бажано зменшити взаємодію тредів між собою, оскільки прискорення від одночасного використання паралельних потоків обробки даних може бути зведене до мінімуму через затримки синхронізації і обмін даними.
Для того, щоб можна було ефективно організувати паралельне виконання як процесів так і тредів, в архітектуру включається можливість працювати із спеціальною інформаційною структурою, яка описує або процес, або тред. Для цього на рівні архітектури процесора використовується поняття задачі (task). Воно об’єднує в собі як процес, так і тред. Це поняття і інформаційна структура, яка підтримується для нього на рівні апаратури, дозволяє побудувати відповідні дескриптори. Вони будуть відрізнятись перш за все тим, що дескриптор треда може зберегти тільки контекст призупиненого обчислювального процесу, а дескриптор процесу повинен вміщувати поля, які описують всі ресурси, які виділені цьому процесу.
Керування ресурсами
Найважливіші ресурси КС – це пам’ять і процесорний час.
EMBED Visio.Drawing.6
Процесор може ____ працювати, виконуючи команди __ програм. Для того, щоб CPU міг звернутись до програм та даних ІІ групи їх треба спочатку переписати в пам’ять І групи.
Під організацією пам’яті ми розуміємо те, яким чином представляється і використовується основна пам’ять. При цьому виникають такі можливості:
однопрограмін системи;
багатопрограмні системи з фіксованими розділами пам’яті з трансляцією та програмних завантаженням модулів в абсолютних адресах;
багатопрограмні системи з фіксованими розділами пам’яті, але з трансляцією та завантаженням модулів, які переміщаються;
багатопрограмні системи із змінними розділами пам’яті;
системи із свопінгом, тобто системи із сторінковою організацією пам’яті і обміном сторінками.
Стратегії керування пам’яті визначають, яким чином буде працювати пам’ять конкретної системи при різних підходах до вирішення таких питань:
коли треба розміщувати нову програму в пам’яті;
ми будемо розміщувати нову програму в пам’ять тоді, коли система буде сама про це просити; будемо намагатись випередити запити системи;
в яке місце ОП ми будемо розміщувати чергову програму для виконання;
програми в ОП ми будемо розміщувати як можна більш щільно, щоди звести до мінімуму затрати пам’яті, чи будемо прагнути до найшвидшого розміщення програм, щоби звести до мінімуму витрати комп’ютерного часу;
якщо в ОП необхідно розмістити нову програму, а ОП в біжучий момент буде заповнена, то яку з інших програм треба вивести із пам’яті: ту, яка в пам’яті довше, ніж інші, або ту, яка використовується найменш часто, або ту, яка довше за ініші не використовується?
Існують системи, які орієнтовані на реалізації кожної з таких стратегій керування пам’яттю. Всі стратегії направлені на те, щоб забезпечити найкраще можливе її використання. Стратегії керування пам’яттю поділяються на такі категорії:
стратегії вибірки
стратегії розміщення
стратегія заміщення.
Визначає, яки блок програм або даних треба виштовхувати з ОП, щоб звільнити місце для нових програм або даних.
Розподілення пам’яті
В перших універсальних комп’ютерах, а зараз в спеціалізованих обчислювальних пристроях, було реалізоване зв’язане розподілення пам’яті. Кожна програма була розташована в одному неперервному блоці комірок пам’яті. З появою мультипрограмування значно більш ефективним став незв’язний розподіл, при якому програма розбивається на декілька блоків або сегментів, які розміщуються в ОП в ділянках, які не обов’язково розташовані поруч. Забезпечити такий розподіл пам’яті набагато важче, але він має важливу перевагу: якщо ОП має декілька невеликих вільних ділянок замість одної великої, то ОС все ж зможе завантажити і виконати програму, якій в іншому випадку треба очікувати звільнення пам’яті.
Зв’язане розподілення пам’яті для одного користувача
Розмір програми в загальному випадку обмежується ємністю ОП. Але існує можливість виконання великих програм. Це досягається за допомогою концепції оверлея (overlay).
EMBED Visio.Drawing.6
Примітка: EMBED Equation.3 , EMBED Equation.3 , EMBED Equation.3 .


Мультипрограмування з фіксованими розділами пам’яті.

Якщо деяка програма виконує інтенсивне обчислення то її взаємодію з ЦП можна представити мал.а). Для програм які інтенсивно використовують в/в їх взаємодію з ЦП як на мал.б). Після видачі запиту на в/в така програма часто не може проц. виконання доки не буде завершено в/в і оскільки в час в/в процесорний час не завантажено його можна віддати іншій задачі. Тобто, для використанн ефективності проц. – мультипр., але як ув’язати використ. ОП з мультипроц.
Фіксований розділи ОП, трансляція та завантаження програми в абсолютних адресах в кожному розділі розміщується одне завданням, ЦП швидко переключається з завдання на завдання і створюється ілюзія їх одночасного виконання.
Трансляція завдань виконується за допомогою асемблерів або компіл. в абсолютних адресах з розрахунку на виконання тільки в конкретному розділі. Якщо завдання для конкретного розділу в цей час готово для виконання, а його розділ в цей час був зайнятий, то завдання буде очікувати не дивлячись на те, що інші розділи були рівні.
Позитивним моментом такого підходу є те, що на трансляції і розм. в конкретному розділі витрач не більші часу.
Фіксовані розділи ОП, трансляція та завантаження переміщуваних модулів.
Переміщуючі завантаж. дозволяють створити програмні модулі, які прац. в дозволеному місці ОП. Тоді утворюється єдина черга завдань і чергове завдання відправляється в той розділ, який в даний момент вільний, а черга завд. обслід. за якоюсь пріоритетною дисципліною. Але в такому випадку виникає проблема захисту адресного простору. в кожному розділі. Може виникнути ситуація, що програма переходить в інший розділ тому система захисту пам’яті реалізує контроль за допомогою граничних регістрів – 2 регістри дозволяють вказувати верхню та нижню межу розділу кор., або одну з меж та розмір розміру. Є місце явище фрагментації. Буде мати місце завжди незалежно від способу організації пам’яті, але воно може проявлятися в >або< степіні.
Мультипрограмування із змінними розмірами пам’яті.

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




Всю ОП в кожен біжучий момент займає 1 завдання. Це завдання виконується доти, доки не вийде певний час, а потім звільняється, як ЦП так і ОП для наступного завдання, така система працює до того моменту доки не відбувається одна з таких подій:
Виданий запит на в/в.
З’явиться сигнал таймера.
Програма завершиться.
Тоді область Свопінга для цієї програми копіюється в зовнішню пам’ять, а область ОП для наступних програм завантажується в область свопінга і ця програма знову виконується доти, доки не відбудеться одна з 3-х подій.
Системи із Свопінгом використовуються в системах з розподілом часу.
Принцип кешування даних.
Ієрархію запам’ятовуючого пристрою можна представити таким чином:

Кеш-память спосіб організації сумісного функціонування двох типів запамятовуючого пристрою які відр. часом доступу до даних за рахунок динамічного копіювання у швидкій запамятовуючий пристрій інформ. з повільного зап. пристрою.
При чому інформація, що найбільш часто використов.
Вартість кеш-памяті >. Він має не великий обєм, механ кеш-память прозорий програмісту, програміст не повинен повідомляти ніякої інформації про інтенсивне використання памяті і не повинен приймати участі у переміщені даних з запамятовуючого пристрою одного типу у запам пристрій іншого типу. Все це робить автомат сист. засоб.
Розглянемо один варіант використання кеш-памяті для зменшеня середнього часу доступу до даних, які зберігаються в ОП.
Розглянемо випадок використання кеша-даних:
Між ОП і ЦП розм. шв. запит пр. кеш. Вміст кеш-памяті представляє собою сукупність записів про всі елементи даних які в неї завантажені. Кожен запис про елемент даних включає в себе адресу яку цей елемент даних має в основній памяті і керуючу інформацію, модифік. цих даних і ознаку звертання до даних за деякій останній період часу в системах з кеш памятю.
Кожен запит до ОП виконується в такий спосіб:
Перегляд вмісту Кеш-памяті з метою визначення, чи не знаходяться вже потрібні дані в кеші. Кеш-память не є адресованою, тому пошук потрібних даних виконується шляхом аналізу поля адреси даних в ОП, а ця адреса береться із запиту.
Якщо дані є в кеш-памяті то вони читаються з неї і передаються в процесор.
Якщо потрібних даних в кеші нема то вони разом із своєю адресою копіюються з основної памяті в кеш-память і одночасно передаються в ЦП.
При копіюванні даних може виявитись, що в кеш-памяті немає вільного місця і тоді вибираються дані до яких в останній пріод часу було найменше звертань і вони вилучались з кеш-памяті. Якщо дані які вилучались були модифіковані за час свого знаходження в кеш-памяті, то вони передаються в основну память. Якщо модифікації не було (їх копія є в ОП), то їх місце в кеш-памяиі оголошується вільним. На практиці в кеш зчитується цілий блок, це збільшує ймовірність “попаданння в кеш” , тобто знаходження потрібних даних в кеш-памяті.
Покажемо що середнiй час доступу до даних залежить вiд ймовiрностi попадання в кеш,тобто вiд ймовiрностi знаходження потрiбних даних в кешi. Припустимо, що маємо ОП iз середнiм часом доступу до даних t1 i кеш iз середнiм доступом до неї t2 (t2<t1). Позначимо через t-середнiй час доступу до даних в системi iз кеш пам'ятю, а p- ймовiрнiсть попадання в кеш. З формули повної ймовірності t=t1(1-p)+t2*p, бачимо, що середнiй час доступу в системi iз кеш, лiнiйно залежить вiд ймовiрностi попадання в кеш i мiняється вiд середнього часу доступу до ОП при p=0 до середнього часу доступу безпосередньо в кеш при p=1. В реальних системах ймовiрнiсть попадання в кеш 0,9. Таке велике значення ймовірності пов'язане з наявнiстю у даних об'єктивних властивостей, а саме просторової локальностi та часової локальностi.
Просторова локальнiсть: Якщо вiдбувається звертання за деякою адресою з високим ступенем ймовiрностi то в найближчий час вiдбудеться звертання до сусiднiх адрес.
Часова локальнiсть: Якщо вiдбулося звертання за деякою адресою то наступне звертання за такоюж адресою вiдбудеться в найближчий час. Всi цi мiркування справедливi i для iнших ЗП.
Концепцiя вiртуальної пам'ятi.
Вiртуальним наз. ресус в якому в уявi користувача, програмiста, або з точки зору програми користувача притаманнi якостi яких у нього немає. Так користувачу може бути наданна в розпорядження вiртуальна ОП розмiр якої перевищує всю реальну ОП, яка є в системi. Програмiст пише програму так нiби у нього в роспорядженнi є однорiдна ОП великого об'єму, але вдiйсностi усi данi якi використовуються програмою зберiгаються на одному, або декiлькох рiзнорiдних ЗП. Звичайно на дисках i при необхiдностi переносяться в ОП.
Вiртуальна пам'ять- це сукупнiст апаратно програмних засобiв, якi дозволяють програмiстам писати програми якi перевищують розмiр реальної ОП.
Для цього ВП розв'язує такi задачi:
1. Розмiщує данi на ЗП рiзного типу.
2. Перемiщує данi в мiру необхiдностi мiж ЗП рiзного типу.
3. Перетворює вiртуальнi адреси у фiзичнi.
Всi цi дiї виконуються автоматично без участi програмiста. Тобто механiзм ВП є прозорим по вiдношенню до користувача. Дiапазон вiртуальних адрес до яких може звертатись працюючий процес наз. V- простором вiртуальних адрес, а простiр дiапазону реальних адрес наз. простором реальних адрес цього комп'ютера R. Не зважаючи на те що ми працюємо з вiртуальними адресами, необхiдно перетворювати V->R. Є рiзнi механiзми цього пертворення: DAT(Динамічне перетворення адрес пiд час виконання процесу).
Сумiжнi адреси ВП не обов'язково будуть сумiжними в реальнiй пам'ятi. Таким чином користувач звiльняється вiд необхiдностi враховувати розміщення процедур, функцiй в програмi.
Комп'ютур розглядається як логiчний засiб який забезпечує реалiзування необхiдних алгоритмiв, а не як фiзична машина з унiкальними характеристиками.
Керування процесами
Процеси отримують можливiсть виконувати конкретну роботу коли в їх розпорядження надаються фiзичнi процесори. Розподiлення процесора мiж процесами наз. плануваням завантаження процесорiв.
Iснують такi рiвнi планування.
1. завдання якi очiкують на ввiд в систему.
2. Завдання якi очiкують на запуск.
3. Призупиненi процеси, якi очiкують на активiзацiю.
4. Активнi процеси.
5. Процеси якi виконуються.
6. Процеси якi завершились.
Iснують такi рiвнi планування процесорного часу:
1. Планування верхнього рiвня або планування допуску: Визначають яким завданням буде дозволенно активно конкорувати за захват ресурсу системи.
2. Планування промiжного рiвння: Визначають яким процесам буде дозволено змагатись за захват ЦП. Активно реагує на бiжучi змiни системного навантаження i короткочасно призупиняє i знову активiзує процеси i цим забезпечує рiвномiрну роботу системи i допомагає досягненю певних глобальних цiльових характеристик комп'ютерної системи. I таким чином планування промiжного рiвння виконує функцiї буфера мiж завданнями доступу.
3. Планування на нижньому рiвнi: Визначають якому з процевсiв, що готовi до виконання, буде надаватись ЦП. Це планування виконується так званим диспетчером який працює з високою частотою i тому повинен розмiщуватись в ОП (резедент).
Планання понно бути:
1. Справедливим. Однаково вiдноситись до усiх процесiв.
2. Забеспечувати максимальну пропускну здатнiсть системи.
3. Забезпечує максимальнiй кiлькостi користувачiв допустимий прийнятний час вiдповiдi.
4. Забезпечувати передбачуванiсть. Мiнiмальнi накладнi витрати. Збалансоване використання ресурсiв.
5. Планування повинне виключати безмежне вiдкладання виконаних процесiв.
6. Враховувати прiоритети.
Планування з переключенням та без переключення.
Якщо пiсля надання ЦП в розпорядження деякого процеса, вiдiбрати ЦП в нього не можна то має мiсце дисциплiна планування без переключень, а iнакше з переключеннями.
Планування з переключенням необхiдне в системах де процеси з високим прiоритетом вимагають негайної уваги. Для того, щоб не допукстити монополiзацiї систем користувачу в ОС передбачаються системи користувача.
До таких механiзмiв належать:
1. Iнтервальний таймер. ОС встановлює iнтервальний таймер або годиник який генерує сигнали переривань в деякий момент часу в майбутньому. Пiсля переривання ЦП передається наступному процесу.
2. Система прiоритетiв. Статичнi прiоритети призначаються один раз для їх реалiзацiї потрiбнi незнiчнi прiоритети. Динамiчнi прiоритети реагують на змiни в операцiйному середовищi. Потрибують бiльших витрат, але система краще використовує ресурси.
3. Види планування.
1. Планування за строком завершення. Органiзовується таким чином, щоб певні процеси завершились у визначенi строки.
2. FIFO- Перший, що прийшов обслуговується першим. Це десцеплiна планування без переключення, при якiй процесам надається ЦП у вiдповiдностiз часом їх надходження у список готових до виконання. Таке планування не дозволяє гарантувати можливий час вiдповiдi для iнтерактивних користувачiв.
3. Циклiчне планування (RR). Диспечеризацiя виконується за принципом FIFO, але кожний раз процесу надається обмежена кiлькiсть часу ЦП яка наз. квантом. Процес у якого був перехвачений ЦП переходить в кiнець списку готових до виконання процесiв. Така дисциплiна RR ефективна для роботи в систесах розподiлу часу коли система повинна гарантувати час вiдповiдi для всiх процесiв.
4. Планування за принципом SJF.
Найкоротше завдання виконується найперше. Це план. без перекл., яке застосовується перш за все для планування потоку завдань. Воно забезпечує мін. середній час очікування для завдань , але для тривалих завдань час очікування може бути великим, надається перевага коротким завданням. Чергове завдання вибирається так, щоб воно завершило свою роботу і виходило із системи як можна скоріше, і в результаті ця дисципліна планування дозволяє звести до мінімуму середній час очікування завдання, які проходять через систему. Проблема, треба точно знати скільки займає завдання або процес. Ця система планування не застосовується в системах розподіленого часу, де необхідно гарантувати можливий час відповіді.
5. Планування за принципом SRT .
Планування за найменшим часом, що залишився. Це аналогічно попередньому методу, але з переключенням, завжди викликається процес, який має мінімальний за оцінкою час до завершення, але треба враховувати час на обслуговування, який минув, а це приводить до збільшення накладних витрат.
6. Планування за принципом HRN.
Планування за найбільш відносним часом відліку. Це планування без переключення при якому коректуються недоліки SJF, зокрема перебільшення ігнорування довгих завдань і надання переваг коротким новим завданням.
7. Багаторівневі черги із зворотніми зв’язками
EMBED Visio.Drawing.6
Це найбільш досконалий механізм планування. Це системне планування з переключенням яка найбільше ефективна для систем, де виконуються суміш різнорідних завдань.
Нові процеси надходять в сітку черг з певними початковими пріоритетами. Кожному процесу виділяється квант часу. Процеси першого рівня отримують ЦП і якщо воно не завершене, то воно поступає на кінець черги нижчого пріоритету і т.д. Чим довший такий процес використовує ЦП, тим нижчає пріорітет, доки не спуститься на найнижчий рівень. На найнижчому рівні реалізується цикл обслуговування RR і тут завдання циркулює поки не завершиться. Як правило квант часу збільшується з переходом процесу в кожну наступну чергу. Така дисципліна планування це прикладний адаптивний механізм планування, який реагує на зміну поведінки системи, яка контролюється цим механізмом планування.
Керування даними і файлова система.
Файл – це сукупність даних, яка має своє ім’я. Звичайно розміщений на пристроях зовнішньої памяті. З файлом можна виконувати маніпуляцію, як з одним цілим компонентів за допомогою відповідних операторів. Файлова система - це частина загальної системи керування памятю, яка відповідає перев.за керування файлами, які зберігаються зовні. Вона відповідає за забезпечення можливого збереження приватної інформації та за контрольоване розділення інформації між багатьма користувачами.
Функції файлової системи.
Користувачу надається можливість створювати, модифікувати і знищувати файли.
Надається можливість розділяти, тобто колективно використовувати файли різних користувачів під ретельним контролем з тим, щоб користувачі могли ефективно взаємодіяти під час виконання спільної роботи.
Механізм для розділення файлів повинен передбачати різні варіанти контролю доступу ( доступ для читання, запису, виконання ).
*Користувачам надається можливість задавати вручну для прикладних програм , структур, файлів.
Надається можливість керування попередження інформації між файлом.
В файловій системі передбачають засоби збереження , які запобігають випадковій втраті або навмисному руйнуванні інформації.
Користувач може звертатися до своїх файлів за допомогою символьних імен, а не через імена фізичні.
Системи зв”язаних з обробкою персональної, конфіденційної та секретної інформації, яку необхідно захищати від несанкціонованого доступу файлові системи передбачають шифрування і дешифрування даних і тоді для доступу до інформації треба мати ключі дешифрації.
Файлова система повинна мати дружній інтерфейс з користувачем. Вона повинна дозволяти користувачу працювати тільки з логічним представленням своїх даних і тих операцій, які мають виконуватися а не фізичне представлення. Необхідно щоб користувачу файлової системи не треба було думати про конкретну фізичну властивість, про формати даних, або фізичними засобами обміну даними з цими пристроями.
Формати записів інформації
Фізичний запис або блок - це одиниця інформації, яка реалізується, читається з фізичного пристрою або записується на нього.
Логічний запис це сукупність даних, яка розглядається як одне ціле.
Якщо кожен фізичний запис вміщує тільки один логічний запис, то файл буде складатися з незблокованих записів. Якщо кожен фізичний запис може вміщати декілька логічних, то такий файл складається із записів об”єднаних блоків або з блоків записів. У файлі із записами фіксованих довжин всі записи мають однакову довжину, розмір блоку є цілим кратним розміру запису. У файлі із записами змінної довжини записи можуть мінятися за своїм розміром до цілого блоку.
Формати запису такі:
BL – довжина блоку.
RL – довжина запису.
EMBED Visio.Drawing.6
Фіксована довжина запис незблокований.
Фіксована довжина запис зблокований.
Змінна довжина запис незблокований.
Змінна довжина запис зблокований.
Організації файлів.
Під організацією файлів розуміється спосіб розміщення записів файлів на зовнішній памяті.
Зараз найбільш відомо:
Послідовна організація . Записи розташовані у фізичному порядку, наступний запис це такий, який фізично іде за попереднім. Така організація застосовується для файлів, які зберігаються на магнітних стрічках вивод. на друк, тому, що ці пристрої є послідовними носіями інформації .
Індексно послідовна організація. Записи розташовані в логічній послідовності у відповідності із значенням ключів, які є в кожному записі в системі повинен бути спеціальний системний індекс, де вказані фізичні адреси повних голов. записів. Доступ до індексів послідовних записів може відбуватися послідовно у відповідності із меншим значенням ключа щляхом пошуку по системі індексу.
Пряма організація. Доступ до записів відбувається довіл.прямо за їх фізичною адресою, яка як правило на запам’ятовувальних пристроях прямого доступу. Прикладна програма розміщує записи на таких пристроях в довільному зручному їй порядку. Файли з прямою організацією вимагають, щоб користувач мав детальне представлення про фізичну його особливість зовнішніх запам’ятовувальних пристроях, на яких зберігаються файли.
Бібліотечна організація файла. Це файли, які складаються з послідовних під файлів, який називається елементом. Початок адреси кожного елемента зберігається в директиві файлу. Такі файли застосовують з збереженням бібліотек програм. На практиці ці види організації файлів мають багато варіантів. Носій записів який використовується в кожному конкретному зовнішньому ЗП називається ТОМ.
Методи доступу
В ОС як правило реалізується декілька методів доступу. Методи доступу – це сукупність угод та засобів, за допомогою яких реалізується заданий спосіб обміну фізичних записів файлу.
Є дві групи методів доступу:
Методи доступу з чергами.
Базисні методи доступу.
Застосовується в тих випадках , коли послідовну обробку записів можна передбачити. Наприклад при послідовній та індексно-послідовній організації файлів. В цих методах передбачене випередження. В цих методах передбачаються випередження буферизації та планування операцій вводу-виводу, тобто засоби направленні на те, щоб по можливості до кінця обробки першого запису наступний запис був готовий до обробки. В ОП кожний конкретний момент часу знаходиться більше одного запису, це дозволяє суміщати обробку записів та виконувати операції вводу-виводу. Ці методи забезпечуються також автоматичним блокуванням та деблокуванням записів.
Застосовується в тих випадках, коли послідовна обробку записів передбачити неможливо. Кожна процедура обміну даними викликаються операторами відповідно вводу-виводу в програмі яка виконується в ОС не забезпечує автономного блокування, деблокування, попередньої буферизації, синхронізації операції обміну з обробками даних. Базисний метод читається та записується фізичними блоками. А блокування та деблокування виконується самим користувачем.
Характеристики файлів.
Для файлів як правило вказують такі характеристики:
Змінність – ця х-ка пов’язана з тим як часто заносяться у фвйл нові записи і вилучаються старі. Коли ця частина мала – файл називається статичним, я якщо велика, то це инамічний або змінний файл.
Активність – визначається відсотком запитів файлів, які обробляються за час якогось періоду роботи з пам’яттю.
Розмір – визначає к-сть інформації, яка зберігається у файлі.
Файлова система.
Файлова система вміщує як правило такі засоби:
Методи доступу – визначають конкретну організацію доступу до даних, які зберігаються у файлі.
Засоби керування файлами – забезпечення зберігання файлів, звертання до них, розділення і захист.
Звсоби керування зовнішньою пам’яттю – забезпечують розподіл адресного простору зовнішньої пам’яті для розміщення файлів.
Засоби забезпечення цілісносі файлів – призначені гарантувати зберігання інформації в файлі. Гарантова цілісність означає, що у файлі буде зберігатись лише та інформація яка в ньому має бути, тобто та яку визначив користувач, а не та яку визачив вірус.
Головне завдання файлової системи – це розподіл простору зовн пам’яті та керування її робото, зокрема роботою дискової пам’яті. Приклад: маємо велику комп’ютерну систему яка працює в режимі розподілу часу і обслуговує близько 100 робочих станцій, до яких мають доступ близько 1000 користувачів. Кожен користувач може мати в такій системі декілька прикладних програм, система в яких виконує певні роботи. З кожною такою роботою може бути пов’язана велика кількість файлів. Ні кожну роботу припадає близько 10 – 100 файлів. І таким чином в зовнішній пам’яті може зберігатись до 100 тис файлів. Необхідно мати можливість швидкого доступу до цих файлів, щоб забезпечити малий час відповіді на запит користувача. Структура файлово системи може бути такою:

Кореневий вузол показує в якому місці дискової пам’яті починається коренева директорія, в якій в свою чергу вміщується адреси дерикторійц користувачів.
Дерикторія користувача вміщує по одному запису для кожного з файлів користувачів. Кожен запис показує в якому місці дискової пам’яті зберігається відповідний файл. Імена файлів повинні бути унікальними в рамках певної дерикторії користувача. В той же час системні імена файлів повинні бути унікальними в рамках всієї файлової системи. В файловій систкмі з ієрархічною структурою системне ім’я файлу формується як ім’я шляху від кореневої папки до файлу.
Керування зовнішнім адресним простором.
Проблема виділення та звільнення місця в зовнішньому адресному просторі багато в чому нагадує проблему розподілу основної пам’яті при мультипрограмуванні із змінними рзмірами. Якщо бажано розміщувати файли в сусідні областя зовнішньої пам’яті, то ці області необхіднозібрати разом. Але оскільки в процесі роботи системи файли створюються і знищуються, з часом простір зовнішньої пам’яті робиться фрагментованим. В зв’язку з цим при розміщенні наступних файлів, вони розташовуються по розкиданим блокам. Один з можливих способів розв’язання проблеми полягає в тому, що періодично виконується ущільнення вмісту пам’яті або „збирання смітя”.
Файли можна реорганізовувати таким чином, щоб вони займали сусідні ділянки дискової пам’яті , а вільні ділянки зібрати у великий блок. Деякі ОС передбачають динамічне „збирання сміття” в процесі роботи в момент коли користувач не працює активно. Система може вибирати для реоганізації файли тих коритсувачів, які в біжучий мометн не працюють або файли до яких не було звертань на протзі довгого часу. При створенні ефективної файлової системи необхідо чітко явити який контингент користувачів вона буде обслуговувати. Треба знати кількість користувачів, середню кількість афайлів для одного користвача, характер задач, які виконуватимуться і т.д. Які файли треба ретельно аналізувати для того щоб визначити найбільш раціональні форми організації файлів і дерикторій.
Зв’язаний розподіл зовнішньої пам’яті. При такому розподілі кожному файлу ваідводиться одна неперервна область зовнішньої пам’яті. Користувач вказує розмір ділянки необхідної для розміщення створеного файлу. Якщл потрібної за розміром неперервної вільної області немає файл створити не можливо. Позитивним в такому розміщенні є те, що послідовні логічні засоби розміщуються фізично поруч і це підвищує швидкість доступу. Директорія файлів в системах з зв’язаним розподілом реалізується досить просто. Для кожного файлу необхідно зберігати тільки початкову адресу і довжину файлу. Недоліки розподілу: коли файл знищується простір, який він займав повертається в сиписок вільних ресурсів. Цей простів надається для розміщення нових файлів, які повинні за розміром відповідати вільним ділянкам. Таким чином сусідні вільні області зовнішньої пам’яті необхідно об’єднувати, виконувати періодично ущільнення, для того щоб створювати великі вільні ділянки для розміщення нових файлів і при умові, що розміри файлів часто міняються зв’язаний розподіл може бути не раціональний, а може бути і доцільним.
Незв’язаний розподіл адресного простору зовнішньої пам’яті. Його поширення викликане тим, що файли з часом або збільшуються або зменшуються, а користувач як правило не знає якого розміру будуть його файли.
2.1) Розподіл за допомогою списків секторів – дискова пам’ять розглядажться як набір індивідуальних секторів. Файли складаються з секторів, які можуть знаходитись в різних місцях дискової пам’яті. Сектори, які належать одному файлу вміщують покажики одинна одного, які створюють список. Коли з’являється необхідність збільшити розмір файла, відповідний процес робить запит по додаткову к-сть секторів із числа вільних. Файли розміряких зменшився повертають сектори у список вільного простору. Проблема ущільнення пам’яті на рівні секторів не виникає. Недоліки: оскільки записи файлів можуть розміщуватись в різних місцях дискової пам’яті вибірка логічно суміжних запсів може бути пов’язана з довготривалим пошуком; маємо додаткові витрати машинного часу для обробки посилок покажчиків; оскільки покажчики зберігаються в елементах списків, це веде до зміни об’єму пам’яті для зберігання власне даних.
2.2) Поблочний розподіл – існує схема яка об’єднує методи зв’язаного і незв’язаного розподілів. В цій схемі пам’ять розподіляється не індивідуальними секторами, а блоками суміжних секторів. При виділленні нових блоків система намагається вибрати вільні блоки як можна ближче до вже існуючих блоків файлів. При кожному звертанні до файлу, спочатку визначається блок, а потім відповідний сектор в рамках цього блоку. Існує декілька способів реалізації поблочного розподілу:
а) схема з ланцюжками блоків

Рядок дериторії користувача показує на перший блокфайлу. Кожний з блоків фіксованої величини, який входить до складу файлу вміщує 2 частини: блок даних і покажчик на наступний блок. Мінімальна одиниця виділеної пам’яті – це блок фіксованого розміру, який включає багато секторів. Звичайно розмір блоку вибирається рівним повній доріжці дискового накопичувача. Для знаходження конкретного запису необхідно передивитись ланцюжок блоків, знайти необхідний блок, переглянути його поки не буде знайдено необхідний запис. Пеерегляд ланцюжка блоків необхідно починати з самого початку. А оскільки блоки розподіляються по всьому диску процес перегляду може зайняти багато часу. При такому підході виконання вставки нових блоків або виключати блоки з файлу досить легко. Це робиться шляхом модифікації покажчиків попереднього блоку. В деяких системах для прискорення перегляду та пошуку необхідних записів в списках застосовується подвійне зв’язування, тобто формуються як прямі так і зворотні посилки між блоками. І тоді перегляд блоків може відбутися в будь-якому напрямку.
Б) Схема з ланцюжком індесів.

Покажчик розміщується в окремі індексні блоки. Кожен індексний блок вміщує фіксовану к-сть елементів. Кожен рядок індексного блоку вміщує ідентифікатор запису і покажчик на цей запис. Якщо для опису файла необхідно декілька індексних блоків, то вони створюються і зв’язуються в ланцюжки. Основна перевага ланцюжка індексних блоків полягає в томк, що для пошуку потрібного блоку необхідно продивитись тільки індексні блоки. Для скорочення часу пошуку індексні блоки можна розташувати поруч один идного в зовнішні пам’яті. Якшщо вимагається дуже швидкий пошук індексні блоки можуть зберігатись в основній пам’яті. Після того як за допомогою індексних блоків виявлено місце розташування відповідного запису, блок даних, який вміщує цей запис переписується в основну пам’ять. Омновний недолік в тому, що для вставки додаткових записів може виникнути необхідність в перебудові всієї структури індексних блоків.
Дескриптор файла (File Descriptor).
Дескриптор файла або блок керування файлом – це керуючий блок, який вміщує інформацію необхідну системі для виконання різний операцій з файлом. Це структура, яка залежить від конкретоної ОС. Як правило ДФ вміщує таку інформацію:
символьне ім’я файла;
розміщення файла на зовнішній пам’яті (адреса);
тип організайії файла (послідовний, індексно-послідовний);
тип пристроб на якому зберігається файл;
дані керування доступом до файлу;
тип файла (дані або об’єкти програми, або ивзіна програма на конкретній мові програмування);
диспозиція – тимчасовий або постійний файл;
число та час створення файлу;
число та час знищення файлу;
число та час останньої модифікації;
лічильник активності файлу.
Як правило ДФ зберігається на зовнішній пам’яті. Вони передаються в основну пам’ять тільки після відкриття віповідного файла. Дескрипторами файлів керує файлова система. Користува не може безпосередньо звернутися до дескриптора файда.
Копіювання та відновлення інформації.
Операційні системи та файлові системи зокрема повинні розроблятись з врахуванням можливості руйнування інформації. Найбільш розповсюджений спосіб захисту від руйнування – це періодичне копіювання. Але це не виключає можливості втрати всіх змін в файлі з моменту його останнього копіювання. Ще один спосіб це реєстрація або протоколювання всіх змін у файлі. Така надлишковість може бути досить дорогою. Але дозволяє реконструювати всю роботу з файлом. При умові щло реєструючий або журнальний файл не буде зіпсований.
Періодичне копіювання не влаштовує, якщо відновлення треба вионати швидко. Для цього використовується інкриментний спосіб. Всі файли вміст яких обновлявся на протязі роботи помічаються спеціальними ознаками і коли коритувач виходить із системи, список всіх цих файлів передається спеціальному процесу який виконує їх копіювання. Недоліком є те, що він не допоможе, якщо в момент збою корстувач знаходиться близько до кінця сеансу роботи з комп’ютером. Для систем для яких втрата результата навіть в невеликій кількості інформації є спосіб протоколювання взертань. В цьому способі кожна зміна у файлі дублюється в той самий момент, коли вона відбулась. Тому інтенсивність дублювання легше забезпечити для інтерактивних систем, де загальний об’єм робіт обмежується швидкістю роботи людини.
Не існує ніяких підходів та засобів, які б гарантували абсолютну безпечність файла.
Планування роботи з дисковими запам’ятовуючими пристроями.

Для того, щоб отримати можливість доступу до конкретного запису даних, які розташовані на диску з головками, які переміщуються, в загальному випадку треба виконати декілька операцій:
Коретку треба встановити на відповідний циліндр і це є час пошуку циліндра;
Треба зачекати коли під головками опиниться та точка на диску з якої починається запис. Це час очікування запису;
Сам запис, який може мати довільний розмір, до повної доріжки повинен пройти під головкою і це час доступу або час передачі.
Кожна з цих операцій пов’язана з механічним рухом і тому загальний час доступу до конкретного запису до 10 мс. І це все досить повільно в порівнчнні з роботою ЦП.
Для чого потрібне планування роботи з дисками.
В багатопрограмних системах одночасно виконується багато процесів, які можуть генерувати запити до дисків. Оскільки ці процеси роблять запити швидше ніж їх обслуговують дискові пристрої, то до кожного такого пристрою формується черга запитів. Можна ці запити обслуговувати в порядку їх надходження (FCFS). Це справедливий метод надання послуг, але коли частота запитів велика такий метод може призвести до затримок. Щоб звести до мінімуму цей час пошуку доцільно навести порядок в запитах до диску за яким небуть іншим принципом ніж FCFS. Цей порядок і називається плануванням роботи з диском. Планування вимагає аналізу запитів, які очікують в черзі для того щоб визначити найбільшефективний порядок їх обслуговування. Планування дискової пам’яті повинен аналізувати позиційні взаємозв’язки між запитами які очікують в черзі. Після чого черга запитів перебдовується таким чином, що їх використання виконується при мінімальних механічний переміщеннях.
Маємо 2 найбільш поширений види планувань:
оптимізація планування за часом пошуку циліндра;
оптимізація планування за часом очікування запису.
Оскільки час пошуку циліндрів перевищує час очікування записів, як правило на порядок, більшість алгоритмів планувань ставить своює метою мінімізацію часу пошуку циліндрів для деякої множини записів. А мінімізація часу очікування запису дає позитивний ефект при дуже великих навантаженнях.
Цільові характеристики принципів планування.
При створенні алгоритмів планувань враховуються такі критерії:
пропускна здатність;
середній час відповіді;
розкид (дисперсія) відповіді в часі – це є характеристикою передбачувагості.
Ці критерії направлені на покращення загальних швидкісних характеристик. Планування часто політшує загальну картину хоча і може дещо знизити швидкість обслуговування дейких запитів. Одним із важливих кількісних показників для оцінки цього явища може служити розкид відповіді в часі. Дисперсія – це міра того на скільки далеко значення індивідкальних елементів може відхилитись від середнього значення для цих елеметів. В зв’язку з цим ми використовуємо дисперсію, як показник передбаченості. Чим менша диперсія, тим краще передбачення. Необхідна така стратегія плануванняяка б мінімізувала дисперсію, інакше може виникнути та ситуація, що час обслуговування певних запитів н еможн абуде передбачити. Якби стратегія планування була направлена тільки на досягнення максимальної пропускної здатності без одночасної мінімізації дисперсії, то система обробляла би тільки зручні для обслуговування записи, а деякі запити ігнорувала б повністю.
Найбільш поширені стратегії оптимізації.
FCFS:
Запити ослуговуються в порядку надходження.

SSTF:
З найменшим часом пошуку обслуговується першим.

При переміщення головки наступним вибирається той запим, для якого необхідне мінімальне переміщення коретки. Прешим обслуговується запит з найменшим часом пошуку циліндра, якщо цей запит і не є першим в черзі. Тобто має місце дискримінація певних запитів. Звертання до диску виявляє тенденцію концентруватись. В результаті запити на самих внутрішніх або на самих зовнішніх доріжках можуть обслуговуватись значно гірше, ніж на середніх доріжках. Така стратегія має кращу пропускну здатність ніж 1-а і найкоротший час відповіді при помірних навантаженнях. Але має місце велика дисперсія і це не підходить для інтерактивних систем.
SCAN – метод сканування
EMBED CorelDRAW.Graphic.10
Каретка рухається над поверхнею диска, обслуговуючи всі запити, які зустрічаються на шляху. Каретка міняє напрям руху, якщо в біжучому напрямку більше нема запитів для обслуговування. Ця стратегія була розроблена спеціально для зменшення дискримінації крайніх доріг. Характеристики даної стратегії аналогічні попередній стратегії за винятком того, що вона обирає для обслуговування той запит, для якого має місце мінімальна відстань пошуку у вибраному напрямку. Ця стратегія є основою більшості практично-реалізованих стратегій планування дискової пам’яті. І хоча крайні доріжки обслуговуються не так часто, це краще, ніж метод SSTF.
N-Step SCAN – N-крокове сканування
EMBED CorelDRAW.Graphic.10
Каретка рухається над поверхнею в прямому і зворотному напрямках, але всі запити, які надійшли під час руху в одному напрямку, групуються і перешиковуються таким чином, щоб їх можна було якомога ефективніше обслуговувати під час зворотного ходу. Ця стратегія дає невелику дисперсію часу відповіді у порівнянні з іншими стратегіями. Вона виключає можливість безмежного відкладання обслуговування запитів, яке може виникнути у випадку надходження великої кількості запитів до біжучого циліндра. Ця стратегія передбачає запам’ятовування таких запитів для обслуговування при зворотному ході каретки.
C-SCAN – циклічне сканування
EMBED CorelDRAW.Graphic.10
Каретка рухається в напрямку до внутрішньої доріжки. Якщо попереду більше нема запитів для обслуговування, каретка стрибком повертається до початку, обслуговує запит найближчий до зовнішньої доріжки, а потім знову рухається до внутрішньої доріжки. Ця стратегія виключає дискримінацію внутрішніх і зовнішніх доріжок. При просуванні від зовнішнього циліндра до внутрішнього, обслуговування запитів проводиться за стратегією найменшого часу пошуку. Записи, що надійшли під час біжучого прямого ходу, обслуговуються протягом наступного проходу. В результаті маємо дуже малу дисперсію часу відповіді.
Найбільш ефективна стратегія планування роботи дискового простору мала б мати два режими:
при малих навантаженнях – SCAN;
при середніх і великих навантаженнях – C-SCAN.
Стратегія C-SCAN з оптимізацією за часом очікування запитів найбільш ефективна при дуже великих навантаженнях.
Схема Ешенбаха (оптимізація за часом пошуку циліндра)
EMBED CorelDRAW.Graphic.10
В схемі Ешенбаха каретка рухається як в способі C-SCAN, але при обслуговуванні кожного циліндра виконується доступ лише до одної повної доріжки, не зважаючи на наявність ще запитів до цього циліндра.
Передбачається перешикування запитів для обслуговування в рамках одного циліндра з врахуванням кутового положення запитів, але якщо 2 (два) запити відносяться до таких секторів одного циліндра, що перекриваються (зверху і знизу), то тільки один з них обслуговується при біжучому ході каретки.

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

Розробники нових операційних систем прагнуть забезпечити користувача можливостями працювати одразу з декількома файловими системами. В такому випадку узагальнена файлова система має багаторівневу структуру, на верхньому рівні якої розташований перемикач файлових систем. В Windows 98 – це IFS (він підтримує FAT і NTFS).
Цей конкретний перемикач ФС забезпечує інтерфейс між запитами прикладної системи та конкретною ФС, до якої відбувається звертання. Цей перемикач перетворює запити у формат, який сприймається наступним рівнем – рівнем ФС. Кожен компонент рівня ФС виконаний у вигляді відповідного драйвера ФС і підтримує повну організацію ФС. Прикладна система не може звертатись до такого драйверу напряму. Кожен драйвер ФС в процесі власної ініціалізації реєструється у перемикача, передаючи йому таблицю точок входу, які будуть використовуватись при наступних звертаннях до ФС.
При виконанні своїх функцій драйвер ФС звертається до підсистеми вводу/виводу. Ця підсистема – складова частина ФС, яка відповідає за завантаження, ініціалізацію та керування усіма модулями нижчих рівнів ФС. Звичайно, ці модулі представляють собою драйвери портів, які безпосередньо працюють з апаратними засобами. Підсистема вводу/виводу повинна постійно знаходитись в основній пам’яті і організовувати сумісну роботу ієрархії драйверів пристроїв.
Велика кількість рівнів архітектури ФС забезпечує більшу гнучкість. Драйвер може отримати керування на довільному етапі виконання запиту: від виклику прикладною програмою функції яка працює з файлами до того моменту, коли працюючий на самому низькому рівні драйвер починає проглядати регістри відповідного контролю.
Інтерфейс прикладного програмування
(API – Application Programme Interface)
API призначений для використання прикладними програмами системних ресурсів ОС і функцій, які реалізуються ОС. API описує сукупність функцій і процедур, що належать або ядру операційної системи, або надбудовами надопераційної системи.
Тобто, API – це набір функцій, що надаються системою програмування розробнику прикладної програми і які є орієнтовані на організацію взаємодії результуючої прикладної програми із сукупністю програмних та апаратних засобів, в оточенні яких виконується прикладна програма. Сама результуюча програма породжується системою програмування, ґрунтуючись на коді вихідної програми, створеної програмістом, а також об’єктних модулів і бібліотек, що входять до складу системи програмування.
API використовується не лише прикладними, але й системними програмами, які входять до як складу ОС, так і до складу систем програмування. Функції API дозволяють розробнику будувати результуючу програму таким чином, щоб використовувати засоби комп’терної системи для виконання типових операцій. При цьому розробник програми не повинен створювати код для виконання цих операцій. Програмний інтерфейс API включає в себе не тільки свої функції, але й домовленості про їх використання, які регламентовані ОС, архітектурою комп системи і системою програмування.
Існує декілька варіантів реалізації API:
реалізація на рівні ОС;
реалізація на рівні системи програмування;
реалізація на рівні зовнішньої бібліотеки процедур та функцій.
Реалізація API на рівні ОС – за виконання функцій API відповідає ОС. В цьому варіанті результуюча програма звертається безпосередньо до ОС, тому досягається найбільша ефективність виконання функцій API в порівнянні з іншими варіантами. Недоліком такого підходу є те, що відсутня можливість вільного переносу коду результуючої програми. Програма, яка створена для одної архітектури КС не зможе виконуватись на КС іншої архітектури. Можна було б уніфікувати функції API в різних ОС, але нажаль існують корпоративні інтереси. Приклад такого інтересу є WinAPI для ОС Macintosh/Windows, але навіть всередині цього корпоративного API існує певна невідповідність, яка дещо обмежує переносимість програми між різними ОС.
Реалізація API на рівні системи програмування – в цьому випадку функції API надаються користувачу у вигляді бібліотеки функцій відповідної мови програмування. Система програмування надає користувачу бібліотеку відповідної мови програмування і забезпечує підключення до відповідної програми об’єктного коду, що відповідає за виконання цих ф-цій. Ефективність такого API буде нижчою, ніж у першому випадку і це тому, що для виконання багатьох функцій API бібліотека мови програмування повинна все-одно виконати звертання до функцій ОС, але переносимість буде високою, оскільки синтаксис і семантика будуть строго регламентовані в стандарті конкретної мови і вони будуть залежати від мови, а не від архітектури КС. Тому для використання прикладних програм на новій архітектурі досить заново побудувати код результуючої програми за допомогою відповідної системи програмування. Але знову ж таки натикаємося на корпоративні інтереси (Borland C i Visual C).
Реалізація API на рівні зовнішньої бібліотеки процедур чи функцій – в цьому випадку функції API надаються користувачу у вигляді бібліотеки процедур і функцій, яка може бути створена стороннім розробником і СП буде відповідати тільки за те, щоби підключити об’єктний код бібліотеки до результуючої програми. При цьому ця зовнішня бібліотека може бути і такою, що динамічно завантажується. З точки зору ефективності цей метод – найгірший, оскільки зовнішня бібліотека сама звертається як до функцій ОС, так і до функцій мови програмування. З точки зору переносимості є умова: зовнішня бібліотека, що використовується, повинна бути доступною в довільній з архітектур КС на які орієнтується прикладна програма. Це можливо, якщо бібліотека відповідає деякому прийнятому стандарту і система програмування підтримує цей стандарт. Відомі бібліотеки:
Xlib ? Xwindow (лише під ОС Windows)
MFC ? Microsoft Foundation Classes (лише під ОС Windows)
VCL ? Virtual Control Library (лише під ОС Windows)
CLX (Borland) – як під Windows, так і під Linux.
Як правило API не стандартизовані. В кожному конкретному випадку набір викликів API визначається перш за все архітектурою ОС та її призначенням.
Особливості конкретних ОС.
MS DOS.
MS DOS була створена , як однозадачна ОС одного користувача. Історична її роль дуже важлива оскільки вона створила персональний комп’ютер.
Існувало декілбка фірм які випускали цю ОС. Найкращим варіантом було запропоновано фірмою DR. Але згодом Microsoft “зжерла” можливості цієї фірми і опанувала ринок ОС.
Всю систему MS DOS можна поділити на 6 основних частин:
BIOS.
З одного боку це є самостійний програмний продукт, з іншого боку це є частина ОС. Ця система забезпечує найбільш прості й універсальні засоби ОС, в основному пов’язані з реалізацією вводу/виводу. BIOS міняється тільки тоді коли міняються апаратні засоби. Сам BIOS складається з декількох частин. Ці частини це програми і таблиці даних. Програма системи BIOS яка виконується першою при включені комп’ютера – це тести функцій комп’ютера. Ці програми перевіряють пам’ять і зовнішні пристрої які підключені до комп’ютера. Чим більше пам’яті тим довше іде тест. Після цього програма ініціалізації читає з системного диска головний завантажуючий запис – Master Boot Record і передає йому керування. ГЗЗ вирішує яку ОС (якщо їх декілька) потрібно завантажувати в пам’ять.
Якщо ГЗЗ визначив яку ОС завантажити тоді він переходить до зчитування Boot Record Program. В BIOS також знаходяться програми обслуговування всього стандартного периферійного обладнання комп’ютера (клавіатура, дисплей, диски та інше). Крім того є програма Setup, яка визначає, наприклад, з якого диска підключатися, поточний час, дату та ін. Цю програму можна змінювати.
BOOT RECORD PROGRAM – Завантажуючий запис необхідний для запуску ОС.
Ця програма вміщує мінімум команд для читання і запису основних частин ОС. ЇЇ розмір 512 байт – стандартний розмір сектора на диску. Основне призначення завантажити файли io.sys, msdos.sys. Для того щоб ця програма не була складною, ці файли завжди розміщуються на диску у визначених місцях на диску (або системної дискети).
IO.SYS – системний файл вводу/виводу.
Цей файл призначений для доповнення функцій в системі BIOS. На відміну від функцій BIOS файл io.sys можна легко міняти. Цей файл вирішує 3 задачі, які не може BIOS:
Настройка на потреби конкретної ОС.
Виправлення помилок, які можуть бути в BIOS при необхідності.
Обслуговування нових периферійних пристроїв.
Коли підключений новий пристрій до програми (driver), яка його обслуговує повинний бути включений в файл io.sys.
BIOS, MBR, IO.SYS – це все фізичний рівень ОС (які безпосередньо працюють з апаратурою).
MS DOS.SYS
Цей файл реалізує службові процедури ОС, які розділяються на такі:
Які розділяються за допомогою власних переривань.
Які розділяються за допомогою спільних переривань.
В MS DOS перша група це переривання дискової ОС, 2 – га група виклику функцій ОС.
В обох випадках для їх виклику використовуються програмні переривання.
Програмне обслуговування переривання включає читання і запис секторів дискети, доступ до контролю за помилками ОС і операцій з клавіатури. Виклики функцій DOS забезпечують в основному проміжний рівень операцій вводу/виводу, вводу з клавіатури, операцій виводу на екран, вводу/виводу по асинхронному зв’язку, передбачені також логічні операції для дискети, відкривання і закривання файлів, пошук, вилучення, читання і запис файлів, і всі процедури які забезпечують всі елементарні операції, які можуть бути потрібні програмі для роботи з файлами і даними, які зберігаються в файлі для того, щоб програмі користувача не треба було самостійно перекодовувати дані, працювати з таблицями і розміщувати файли. Більша частина цих службових функцій ОС використовує програми ОС більш високого рівня.
Файл COMMAND.COM і внутрішні команди ОС.
Цей файл виконує такі основні функції:
Це процесор команд. Тобто вводить команду яка задана з клавіатури і визначає подальші дії цією командою.
Це ініціатор процесора команд. Тобто частина Command.com яка використовується тимчасово. При запуску системи вона шукає пакетний файл autoexec.bat. Якщо його буде знайдено то він виконує команди які записані в цьому файлі. Після виконання і ініціалізації ця частина більше не працює.
Напіврезидентна. Ця частина включає інтерпретатор команд і програми, які реалізують внутрішні команди ОС. Це досить велика програма і з точки зору швидкодії вона постійно повинна зберігатися в RAM. Але вона потрібна не вся і не потрібно всю пам’ять використовувати. В MS DOS ця проблема вирішується так: вся частина command.com розміщується в верхніх адресах стандартної частини основної пам’яті також іншим програмам дозволено використовувати частину основної пам’яті. Коли виникає необхідність використовувати інтерпретатор команд резидентана частина Command.com вже знаходить Command.com в основній пам’яті. Для цього обчислюємо ці комірки пам’яті де повинен знаходитися інтерпретатор. Якщо ця сума не підходить то значить, що ця частина є скорочена і Command.com перезавантажується.
Зовнішні команди.
Ці команди називаються зовнішніми тому, що вони не є резидентними в основній пам’яті комп’ютера. Вони зберігаються у вигляді програмних файлів на дискових запам’ятовуючих пристроях.
З одного боку це команди, які є частиною ОС і без яких ця система не може функціонувати.
З другого боку це додаткові програмні утиліти, які дуже корисні але які не є складною частиною ОС.
ОС MS DOS була задумана так, що створення і виконання нових програм нічим не відрізнялися від зовнішніх команд. Тому ОС MS DOS і аналогічні їй це відкрита система. Програми завантаження і виконання зовнішніх команд, які знаходяться в файлах з розширенням .сом і .ехе викликані функціями ехе для завантаження цих програм в область використання.
Завантаження ОС виконується таким чином:
Завантажується потрібний драйвер. Встановлюється перша група векторів переривань. Настроюється адреса програм функцій MSDOS.SYS. Настроюється файл конфігурації config.sys.
Блок3: Перевіряється чи є файл на системному диску io.sys, msdos.sys.
EMBED PBrush
Бдок4:завантаження файлів в ОП io.sys ініціал зовн пристроїв завантаження порібних драйверів, встановл перша група векторів переривань, настроюється адрес і прог файла msdos.sys і аналізуються файли конфігурації в якому вказані які драйвери потрібно підключити.
Блок 6.Ініціалізація файла msdos.sys, ініціалізується керована таблиця, установлюється 2-га група векторів переривань, створюється префікс сегменту для встановлення проц. команд command.com., повертаємо на блок 5’.
Блок5’:завантажується процесор команд command.com.
Блок7. Завантажується системний файл autoexec.bat. виконуються команди цього файла.
Блок8. Виконання команд файла autoexec.bat. На цьому завершується настройка ОС.
Блок9. Встановлюється мітка системи і ОС готова приймати команду. Якщо системний, то буде стояти мітка С).




Структура DOS.
Інтерфейс користувача:
МАЛЮНОК
Інтерфейс користувача.
Програмний інтерфейс ОС верхнього рівня.
Програмний інтерфейс ОС нижнього рівня.
Програмний інтерфейс ОС.
Програмний інтерфейс аппарат комп’ютера.
Керування пам’яттю в MS DOS.
Це забезпечення доступу до неї її облік, та розподіл її між програмами. В DOS вбудовані тільки мінімальні засоби керування пам’яттю. Всі інші засоби реалізовані як зовнішні драйвери і їх треба підключати до системи.
Пам’ять розподіляється блоками. Блок – це неперервний фрагмент пам’яті. Перші 16 байт відводять під блок керування пам’яттю.(MCB memory Control Block). MCB описує розмір блоку пам’яті і вказує програмі якій виділ цей блок, а також забезпечується зв’язок із наступним блоком пам’яті. Так, що всі МСВ зв’язані в ланцюжок, що забезпечується можливість керування пам’яттю.
Початок МСВ
МСВ
Копія оточення ОС для
програми

МСВ
Код програми

Коли DOS записуэ програму ОС виділяє блок пам’яті для копії свого оточ. яке передається прграмі, а потім весь залишок в пам’яті розподіляється в самій програмі. Сформовані блоки для одної програми не обов’язково повинні бути суміжні. Блоки завжди виділяються на початок вільної області.

Логічна структура основної пам’яті в ПК

Сама ОС DОS без додаткових драйверів може адресувати тільки 1мб адресного простору, оскільки вона була створена під процесори 80/86 це так званий реальний режим роботи процесора ( симуляція процесора 80/86 ). Сучасні процесори в захищеному режимі використовують всі можливості адресної шини процессора. Але переключатись з реального режиму в захищений не просто і ще складніше повертатись назад без втрати даних. Всі фрагменти верхньої пам'яті доступні так само як і в стандартній пам'яті. Пам'ять розподіляється блоками, пам'ять до 1мб поділена на блоки – 16, по 64кб в кожному. EMS-відображена пам’ять 3 фірми ( Лотус, Intel I Microsoft) розроблено стандарт відображення пам’яті. Вона використовується для збереження даних . Для керування відображеням пам’яті потрібен спеціальний драйвер EMM – Expended Memory Manager ( EMM 386.EXE ) і ця пам’ять може мати розмір до 32 мб. Цей драйвер – це набір функцій, які доступні по 21 перериванню. Як і стандартна пам’ять відображаюча пам’ять також виділяється блоками, блоки виділяються по запиту від програми яка називається кількість потрібних сторінок. Програма, яка видала запит отримає в своє розпорядження handle (обробник) або маніпулятор виділеного блоку. Це невелика інформаційна структура, яка зберігає всі необхідні дані про блок. Таким чином, обмін даними між стандартною пам’яттю і відображаючою пам’яттю, на логічному рівні реалізується аналогічно обміну між стандартною і зовнішньою пам’яттю. Перший блок відображаючої пам’яті драйвер EMM завжди використовує для своїх потреб. (Тому це розширює пам’ять) XMA-розширена пам’ять.
EMS-цей стандарт визначила правила доступу як до самої розширеної пам’яті так і до додаткової пам’яті інших типів, які створюються за рахунок розширеної пам’яті. Був розроблений драйвер, який реалізує цей стандарт і дозволяє пересилати дані із стандартної пам’яті в розширену і навпаки. HIMEM.sys. Виділення розширеної пам’яті також відбувається блоками по спеціальному запиту від програми. Програма, яка запросила блок розширенох пам’яті отримала в своє розпорядження XMM і користується ним для доступу до розширенох пам’яті, крім розширення пам’яті, яка використовується за стандартом XMS розширення пам’яті можна використовувати за іншим стандартом – це базове розширення пам’яті.
Висока пам’ять – HMA.
адреса
параграфа

адреса
зміщення

24-розрядна
адреса байта
Коли розробили процесор 80/86 на кристалі булла зроблена помилка. Не був заблокований доступ в реальноиу режимі до адрес вище 1мб.(Але адреси можна записати по різному).
F0000:FFFFF
FFFFF:0000F В результаті отримали 64кб пам’яті – 16 байт, до яких можливий доступ в реальному режимі. Помилково утворюють область високої пам’яті, але доступ виявився дуже цінним. То наявність такої області враховується в драйвері HIMEM.sys розширеної пам’яті. Вся висока пам’ять використовується безпосередньо без переключення режимів роботи процесора. Але стандарт XMS дозволяє використовувати високу пам’ять тільки одній програмі. Найчастіше цей масив використовується для програм ОС і тоді вони звільнять практично цілий блок стандартної пам’яті.
Верхня пам’ять – це дуже фрагментований масив пам’яті. Ці фрагменти пам’яті називаються регіоном. Повна підтримка верхньої пам’яті виконується драйвером EMM386.EXE. Пам’ять такого типу-це програмна пам’ять, оскільки вона формується програмними засобами при наявності відповідного програмної підтримки. Ознакою наявності і апаратної...?...-це наявність можливості підтримки тіньової пам’яті – це копія BIOS в основній пам’яті. Зміна базової адреси тіньової пам’яті відбувається при зміні статусу підтримки тіньової пам’яті і це виконується в середині підсистеми SETUP, яка знаходить в постійній пам’яті. Верхня пам’ять виділяється блоками, які не можуть бути більшими регіона . Для підтримки повної структури пам’яті для процесорів Intel-архітектури треба зробити таке: в файлі config.sys перед усіма іншими драйверами підключити драйвер
1.HIMEM.SYS
2.EMM386.EXE. RAM
3. Встановити ком. DOS.OMB.
4.Для того, щоб резидентні модулі ОС могли завантажитись у високу пам’ять треба написати таку комунду DOS=HIGH.
5. Для завантаження зовнішніх драйверів використовують таку команду DEVICEHIGH. Для того, щоб мати можливість завантажити резидентні програми у високу пам’ять у файл AUTOEXEC.bat використовують команду LOADHIGH. В результаті в ПК може бути 6 типів команд: 1) стандартна; 2)векторна;3)висока;4)базова розширена;5)розширена пам’ять за стандартом XMS; 6)відображена
І тому проблема керування цією основною пам’ятю не вирішено в цілому. Вона вирішена до 1 або декількох типів пам’яті.
Оптимізатор пам’яті.Microsoft Mem Mater.
Проблема оптимізації використання основної пам’яті найбільше стосується верхньої пам’яті. Оскільки вона є більш фрагментована. Важливе значення має розподіл програм і драйверів по регіону так і порядок їх завантаження. Для підвищення ефективності використання верхньої пам’яті цей оптимізатор формує і аналізує велику кількість варіантів, до декількох тисяч. Завантаження драйверів із файла config.sys і резидентних програм із файла autoexec.bat. В верхню пам’ять вибирається найбільш оптимальний варіант. В процесі своєї роботи оптимізатор:
- може вставляти у файл config.sys команди на підключення драйверів HIMEM.SYS та EMM386.EXE.
- розміщати в файл config.sys DOS=UMB
- заміняти у файлі config.sys команди device на команду devicehigh і навпаки.
- включати у файл autoexec.bat команду loadhigh або виключати.
- вставляти в команду devicehigh I loadhigh ключі, які конкретизують місце завантаження драйверів і резидентних програм.
- змінювати і встановлювати ключі в драйвері EMM386.EXE.
Але оптимізатор не може змінити порядок підключення драйверів і завантаження резидентних програм, тому що він не може оцінити сематичні зв’язки між ними і тому це є квазі оптимізація. Цей оптимізатор підтримує 2 режими:
1.Експрес оптимізація, яка виконується автоматично без впливи користувача на процес оптимізації.
2.Замовлена оптимізація, яка виконується під користувачем шляхом установки певних ключів.
СОМ файли і EXE файли
Сом файли вміщують машинний код - дані без заголовка без таблиці переадресації і іншої
додаткової інформації. Мах об’єм 64кб. Завантажувач працює з сом файлами таким чином:
1) Відводить мах можливий блок вільної пам’яті.
2) Будує так званий префікс програмного сегмента (РSP) Program Segment Prefix і будує його на початок блока пам’яті.
3) Читає сом файл у пам’ять одразу за префіксом і передає керування на 1 байт програми.
Файл абсолютно не захищений, можна взяти довільний файл надати йому назву з розширенням сом і це буде сом файл.
Коли створювалось MSDOS така система не влаштовувала. Була запропонована структура exe файлу.

ss – сегмент стеку
sp – покажчик стеку
cs – сегмент коду
ip – покажчик команд
min - мінімальна додаткова пам’ять що відводиться цьому файлу
max – максимальна додаткова пам’ять
“MZ”- Marck Zbicovsky
Заголовок файла.
Максимальний розмір exe файлу необмежений. До exe файлу можна дописати внизу відлагоджену інформацію і при цьому не треба мін. Інформацію про розміщення файлу і при завантаженні ОС зігнорує інформуцію. Головний недолік exe, який проявляється при створені багатопрограмних систем в тому що він не зберігає інформацію про окремі сегменти програми, коли компонент створюється exe файл компонент просто зберігає всі заявлені сегменти в один великий об’єм із спільною таблицею переадресації. В результаті система завантаження не може визначити, яка частина програми. Це машинний код, що виконується, яка частина це статичні дані, а яка частина – змінні дані. Тому завантажувач не має можливості відвести для зберігання команди з цих компонентів окремі блоки пам’яті і незалежне маніпулювання сегментами, що випливають при багатозадачності. Була запропонована нова структура exe файлу

Стара частина вміщує повний заголовок старого exe файлу, таблицю переадресації і програму. Якщо запустити новий exe файл під DOS, то завантажувач DOS розпізнає заголовок старого exe файлу і запустить свою програму, а оскільки це не старий exe, то в блоці старого exe файлу збережеться повідомлення – This program regnives Microsoft Windows.
1) Заголовок та різні таблиці, які визначають розмір розташування та характеристики всіх інших частин файлу, вони використовують системний завантажувач і невидимі для самої програми під час виконання.
2) Сегменти коду та даних програми, кожна із своєю таблицею переадресації, ресурсна частина програми, піктограма, яка належить файлу, меню повідомлення.
Кожний ресурс у файлі розпізнається за іменем і типом. Він завантажується у пам’ять за вимогою самої програми.
Використання дискового ЗП
Перш ніж скопіювати, поставити ОС на дисковий ЗП і створити там файл config.sys i autoexec.bat диск потрібно приготувати до роботи. Підготовка диску полягає в розподілі на декілька областей (Partitions). Форматування диска, створення на ньому одної або декількох ОС, а потім і прикладного ПЗ.
Для цього використовують спеціальні утиліти:
1. Створення первинної (Primary) або розширеної (Extenden) розділу.
2. Зміна активності розділу.
3. Знищення (Partitions) розділу – припустимо було 2 ОС якщо щось знищити Disk Manager знищить назавжди.
4. Вивід інформації про розділи.
5. Якщо декілька дисків дозволяють створити, розділи в 2-му диску модифікують його або поміняють конфігурацію. Змінити конфігурацію диску- знищити інформацію на цьому диску.
Утілітa fdisk має меню:
1) Create Partitions
2) Change Active Partitions
3) Delete Partitions
4) Delete Partitions Data
5) Select Next Fixed Disk Dreve

Існування логічних дисків виправдано з таких точок зору:
1) У випадки пошкодження логічного диску пропадає тільки та інформація, яка знаходиться на цьому логічному диску.
2) Реорганізація та вивантаження диску невеликого розміру робиться простіше і швидше, ніж всього диску вцілому.
3) Можливе розділення дискового простору між декількома ОС, між декількома користувачами.
4) Можна заборонити міняти файли на одному з дисків і інформація на такому диску буде захищена від вірусів.
5) Можна вказати той логічний диск, з якого буде завантажуватись при включенні комп’ютера ОС.
Самий перший сектор жорсткого диску – стандартний розмір сектора 512б
- сектор1, доріжка 0 , головка0, вміщує головний завантажуючий запис Master Boot Record. Цей запис займає початкову частину сектора. Це програма, яка під час завантаження ОС розміщується за фіксованою адресою в ОП 7000 : 0000 і після чого їй передається керування. В кінці цього першого сектора розташована таблиця розділів диску, ця таблиця вміщує 1 елемент і в останніх 2-х байтах сектора вміщується число 55АА – ознака кінця таблиці розділів, що представляє собою елемент таблиці розділів диску.

Всі елементи таблиці ...?... 1-й байт – байт активності, 0-неактивний, 80h- активний, 2-й байт – номер заголовка для початкового сектора розділу.
Зміщення +2 – номер сектора та ... для початкового сектора розділу у форматі функцій читання сектору через int 13h
Байт із зміщенням +h – код операції системи
Байт +5 – номер головки для останнього сектора розділу.
2 байта +6 – номер сектора та ... для останнього сектора розділу у формати функції читання сектора через int 13h
Зміщення +8 4б – відносний номер сектора початку розділа
Зміщення +12 4б – розмір розділу в секторах.
В самомо 1-у сект. Акт. Розділі розташ. boot program. Запис зав. цит. В ОП головн. Завант. Запис після цьог 1-у перед керування це двоступ. Процес. Спочат. Модуль ініціал. BIOS читає гол. Заван. Запис в ОП поч. З адр 7С00:0000 і йому перед. керув. Цей запис проч. Табл. Розділів логіч. Диску і знах. акт. розділ. акщо акт.розд. Декілька, то вивод. повід. Про необх. вибору. потр. акт.розділу, тобто потр.ОС. Пвсля того як акт.рознайд.гол.зов.запис читає самий 1-й сектор вибр.розд.в ОП. Цей сектор вміщує запис завант. Якому і перед. управління. Такий двоступ.процес завОС необ.тому, що спос.заван.залеж.від конкр.ОС, тому кожна ОС має свій вл.заван. Фіксов.є тальки розташув.запису завантажен, самий 1-й сектор акт.розділу.
В елемен.табл.розділ.диска поле із змін. +8 вміщує віднос.номер 1-0 сект.розділу. Значення “0” відпов. Доріж”0”; голови “0”; і сект.”1”.
При збіл.віднос.ном.сект.споч.збіл.номер сек.на доріж., потім номер голов.і накін.ном.дор.
ReLSect = (CyL.Sect*Hand) + (Head * Sect) + (Seet-1) де Cyl – номер доріж.
Sect – ном.сект.на доріж.
Head – ном.головки.
Звичайно розділи поч.з парних номерів доріжок за виключен.самого 1-о розділу. Цей роздпоч.з сект.2, дор.0, головка0, тому що самий 1-й сект зайнятий головн.заван.зап.
Байт із зміш. +4 – це код ОС яка викор.даним розділ.диска. В залеж. Від того який там нах.код змін.одна важл.харак.поч.диск., це розмір елем.табл.розміщення файлів.
Викор.розшир.розділів дозв.ств.довіл.к-ть логіч. Дисків.
Структура логічного диску.
Самий 1-й сектор лог.диску займає запис завдання. Навіть для різних верій зап.зав.може вик.різні дії.Крім цієї прог.у зап.заван.знах.харак.які опис.парам.даного лог.диску. Всі ці парам.розташ.на поч сект.в форматованій обл. (Воон-сект).
Вміст Воон-сект. Може бути викор.загал.к-ті сект.на лог.диску.
Далі іде 2-і копії FAT .
Як орган.збер.інф.на диску ?
Доступ може бути орг.як посл.та і прями мет.дост.
Прямий метод дозв.став.головки цит.зразу на той сектор, який потрібен. Але викор.той чи ін.мет.ще не все, важл.знач.має спос.розп.місця на диску для записів файлів. В усіх суч.ОС при ств.файла для нього не задаєт.поч.розпод.пам.в доріж.або секторах. По мірі того як Ф збал. ОС віділ.йому додат.сект.з числа вільн.в резул.записи Ф.розп.не обов’яз.в суміж.обл.диску. Тобто ОС повин.вести облік ділянок диска які використ., тобото, для кожн.ф.необ.збер.інф.про те якому ф.які ділян.диска виділ, і для цього викор. ФАТ. Весь лог.диск розб. ОС на ділян.один.розміну які наз.кластери. Кластер може віщ.декіл.сект. Для кожн.клас.ФАТ має свою індив.комір.в якій збер.інф.про вик. Даного кластеру. Тобто ФАТ це масив визн.загал.к-ті кластерів на лог.диску.
Якщо декіл.ф.вміщ.в класт.то вони зв’яз.у сетк номери наступ.кластерів які викор.даним ф.Кінцього спис.відм.в табл.спец.значенням. Номер 1-о кластера який належ. Файлу збер.в елем.директорії який описує цей файл. Є спец.утіліти ОС які перев.диск.на появн.дефект.областей. Кластери відмін.в таб. ФАТ як bad і невкор. Отже, ФАТ це масив інф.про викорис.кластерів диску, він вміщцє однозв’зані списки кластерів які розпад.ф.номера поч.клас.ф.збьеріг.в директорії.
На прик.показ.фрагм.корен.директ.диска С і елем.табл.ФАТ для ф. Autoexec.bat і Config.sys. Кластери можуть і не розташ.одинза одним.
Навіть для ф.який має довж.1байт виділ.й класт.
Припуст.що розмір клас.8сект.і тоді для зб.1-го байта буде викор.4 байта диск.пам.
Файли і директорії.
Файлова сист.має як прав.деревопад.і є роз.які розм.інф.про ф.і ін.дирек. Для цит.корен.знах.одразу за табл.ФаТ. Коренева директ.займає неперер.обл.фіксов.розм. Розмір кор.дир.задається при форм.і вона визн.та к-сть ф.і дир., що може бути опис.в корен.директорії.
Довіл.дирек.вміщює 32-байтні елем., дескриптолри, які описують ф.та ін.дир.
Формат дескриптора такий:
Вміст
Ім’я файла або директоріх вирівн.на рівну межу і доповн.пробіг.
Розшир.імені Ф.,вирів.на рівну межу і доп.проб.
Атрибути файла
Зарезервоване
Час створ.ф.або час модиф.остач.
Число ств.ф. -||-
Номер 1-о класт.розпад.в даному ф.
Розмір ф.в байтах
Байт атриб.
Біти цього ф.мають
Якщо в 0-у розр. Знах. “1” –ф.тільки для читання
1 > “1” – прихований файл
2 > “1” – системний файл
3 > “1” – цей дискрип. Описує мітку диска, і для цього диск.поля 1) і 2) розглд.якодне ціле 11байт, і ця 11б.вміщ.мітку диска.
4 > “1” – озн., що цей дскр.описує ф.який є піддир.даної директорії.
5 > “1” – даний ф.небув завант.утілітою.
6,7 >зарезервованію.
Для звичайних файлів байт атриб буде:

це ф.які тільки чит., прихов.сист.файл.
В довіл.дирек.крім корен.два перших дескр.мають спец. Призначення.
1-й дискрип.в полі імені має такий рядок “*”. Цей диск.вказує на директ.яка його вміщує.
2-й спец.дискр.має в полі імені “**”.І цей дискр.вказує на дирек.бульш висок.рівня.
Якщо в полі ном.1-го кл.дискрипт.з іменем “**” знах. “0” то це озн.що ця дирек.розташов.в кореневій директ. Таким чином в деревопод.стр.директ.маємо посилки як в прямому так і в звором.напр.і ці посилки можна викор.для перевір.цілісності структ.директ.файл.системи, при знищенні ф.1-й байт його імені заміняєт.на байт Е-5h як вільні і якщо ф.вилуч.тільки що і ще нічого не запис., то його можна віднов.тому що в дискр.запис.всі поля крім 1-о байта імені файла.
Недоліки в MSDOS
Творці MSDOS пішли найбільш легшим шляхом і створили ОС, яка пропонує мінімальне операційне оточення для програм користувача. Як правило програми не використовують практично нічого із стандартного СПЗ, крім ФС і взаємодія програми з апаратурою, яка працювала під MSDOS виглядає так:
EMBED Visio.Drawing.6



За задумом програміст який хоче вивести символи повинен використати підсистему вводу/виводу, ОС або відповідною функцією BIOS. Те саме стосується всієї іншої апаратури. Але на практиці функції ОС і BIOS ігноруються і пристрій програмується напряму. Практично всі графічні програми працювали безпосередньо з відеопам'яттю. Дуже часто програми самостійно використовували клавіатуру. Такий підхід обумовлений кількома об'єктивними причинами:
Структурне ПЗ ОС неефективне бо не реалізує всі потенційні можливості комп'ютера.
повна відкритість архітектури IBM PC що дає кожному програмісту керувати комп'ютером.
Звідси і витікає великий мінус: великі строки розробки програмних продуктів. Програмісту потрібно було стати системним програмістом, а потім вирішувати конкретну задачу. Для комерційних програм найважливіше:
час розробки
апаратно програмна сумісність
З точки зору користувача спілкування через командний рядок вимагало певної кваліфікації користувачів. Перехід до операційних оболонок спростив це спілкування.
З ростом продуктивності апаратури ідея спілкування через графічний інтерфейс набула поширення. Вона полягає в переході на більш зрозуміліший рівень. Тобто середовище наглядно представляє предметну область пропонує широкий набір засобів і прощає людські помилки.
Що дає WINDOWS користувачу?
Універсальна графіка.
Ключова ідея – забезпечити повну незалежність програм від апаратури. Як користувачу так і програмісту під WINDOWS надаються універсальні засоби, які знімають проблему забезпечення сумісності з конкретною апаратурою і ПЗ. Тобто забезпечити апаратно-програмну сумісність.
Єдиний інтерфейс
Логічний уніфікований єдиний графічний інтерфейс значно полегшує освоєння нових програмних продуктів. WINDOWS звільняє від необхідності організовувати меню, роботу з клавою, мишою. Тобто не треба писати системні програми можна зразу займатись задачею
Обмін даними між програмами
Запропоновані ефективні системні засоби Clipbook, DDE, OLE, які забезпечують програмну сумісністьі механізм обміну даними між різними програмами.
Сумісність з існуючими ПЗ
Не тільки є можливість працювати з існуючими програмами, але надаються додаткові можливості і паралельний запуск.
Повне використання апаратних ресурсів
При своїй інсталяції WINDOWS аналізує наявні апаратні ресурси і автономно встановлює режим який найбільш певно використовує можливості апаратури.
Багатозадачність
Реалізована витісняючи багатозадачність
Повні засоби програмування
Нові ідеї організації операційного оточення вимагають нових засобів які реалізують ООП, зокрема розвиток візуальних технологій. Складність функціонування WINDOWS більша ніж MS DOS, але ця складність не надлишкова, а визначається тим що при створенні програм для WINDOWS програміст отримує доступ до якісно нових засобів, яких немає в MS DOS. Схема взаємодії WINDOWS з апратурою така:
EMBED Visio.Drawing.6





Програма не має права звертатись до апаратури на пряму, повинна для цього використовувати внутрішні функції WINDOWS. Це є паралелізм для багатозадачної системи, коли всі ресурси розділяються. Основні функції WINDOWS виконують 3 системні модулі:
Kernel.exe – керує пам'яттю, завантаженням та вивантаженням програм і виконує інші
системні функції.
Gdi.exe – інтерфейс з граф пристроями
User.exe – виконує всю іншу роботу
Ці основні модулі взаємодіють з апаратурою через драйвери пристроїв. Модуль gdi та деякі драйвери можуть викликати функції ядра, а програми можуть в принципі безпосередньо звертетись до драйвера. Якщо програма звертається до дозволених функцій DOS середовище WINDOWS забезпечує сумісність з існуючою організацією по ОП. А в деяких випадках заміняє функцію DOS на відповідну функцію WINDOWS. Таким чином зв'язки між програмою ситемою і апаратурою чітко визначені.
Обмін даними у WINDOWS
На відміну від DOS, WINDOWS як багатозадачне середовище була розрахована на високий ступіньінтеграціх компонент. Одним з найважливіших елементів інтеграції – є можливість обміну даними між різними програмними продуктами:
EMBED Visio.Drawing.6
1)


При роботі WINDOWS Clipboard постійно активний і доступний усім програмам.
В продукті-джерелі його всі засоби виділяють необхідні дані командоюCopy цей фрагмент заноситься в Clipboard. Потім звертаємось до продукта-приймача і розміщуєм курсор на місце де треба встановити дані після виконання Paste. Той самий порядок обміну даними зберігається і для одного продкту. Тому відпадає необхідність вбудовувати в продукт внутрішні засоби копіювання переміщення при програмуванні під WINDOWS.
Переваги: можливість об'єднати в 1 документ об'єкти різних продуктів з автоматичним перетворенням форматів, для всіх WINDOWS продуктів були створені стандартні в яких можуть представлятись дані.
Недоліки: неможливість накопичення даних в буфері. При розміщенні нового фрагменту старий вилучається, також є обмеження за об8ємом інформації, яка розміщається в Clipboard.
DDE – Dynamic Data Exchange.
Динамічний обмін даних.
зв’язок
clipboard
прог джерело
Прог приймач
прог приймач

copy



Зв’язок
Суть технології DDE в тому, що об’єкт, який вставляється через Clipboard зберігає звязок з оригіналом і при внесенні змін оригінал може автоматично обновлятися. Цей зв’язок зберігається і після закриття продукту, тобто в довільний момент можна бути впевненим в тому, що всі зміни відбуваються в усіх документах пов’язаних з оригіналом. З одним оригіналом можна зв’язати довільну кількість елементів. Має місце зіркоподібний тип зв’язку. Це дає можливість автоматичному оновленню коду. Окрім діркоподібного зв’язку можливе зв’язування за ланцюжком, коли джерело наступного зв’язку буде не оригіналом, а раніше звяз об’єкт. В цьому випадку використовують Paste. Команда Links дозволяє переглянути всі зв’язки для даного документа, розірвати певний зв’язок, переключити зв’язок з одного об’єкта на інший, встановити режим ручної активації зв’язків.
OLE – Object Linking and Embedding. Зв’язування і включення об’єктів.
OLE1, OLE2.
Для користувачів основне нове введення. OLE – це можливість активації вбудованих об’єктів. За попередніми технологіями вставлений об’єкт був складовою частиною документа, в якому цей об’єкт розташований і внести зміни в цей об’єкт досить складно. Для цього треба було запустити продукт, в якому був створений цей об’єкт і змінити його певним чином. Потім через Clipboard виправлений об’єкт копіюється на своє місце.

Для роботи за технологією OLE потрібна така сама послідовність, але якщо продукт підтрим техн, то обмін буде відбуватись за цією технологією. Вбудований об’єкт можна активізувати, тоді запуск продукту, який породив цей об’єкт. Об’єкт передається у вікно прод для редагування та інших дій, які достають батьків програмі. Після завершення роботи з об’єктом батьків програма закривається, а змінений об’єкт автоматично передається назад в документ, звідки він був викликаний. Таким чином відпадає необхідність запам’ятовувати імена батьків продуктів і файлів, в яких міститься встановлений об’єкт. В технології OLE об’єкт – нове поняття, раніше об’єкт – довільний фрагмент, який переноситься з одного продукту в інший. Насправді переноситься не сам об’єкт, а його спрощений образ. Продукт джерело перетв дані із свого внутрішнього формату в один із стану Windows і в такому вигляді фрагмент вставляється в продукт прийм.
В технології OLE об’єкт – це комплекс, який складається з даних у внутрішньому форматі батьків продукту, представлених в одному із стану формату Windows і інформація про програми, що створює обєкт, розмір обєкту, час створення. При переносі об’єкта з одного документу в інший він зберігає всі свої особливості не залежно від типу документа, в якому знаходиться в біжучий момент. Якщо технологія DDE дозволяє вставляти тільки об’єкти, що є файлами, то в OLE цього обмеження нема. Відміність Linking від Embedding – при зв’язуванні друга копія об’єкту не створюється. Воно економне з точки зору простору. При внесенні змін у заданий об’єкт ці зміни з усіма документами, з якими зв’язаний. Embedding – забезпечує можливість коректно встановлювати об’єкт, не вносити змін в оригінал. Embedding більш зручний, якщо треба перенести файли з машини на машину, оскільки при зв’язуванні запам’ятовується шлях до оригіналу і при переході на інший комп’ютер треба переписати всі файли об’єктів включ в даний.
Drag – and – drop – робить проц наглядним.
Недоліки:
1. Реалізація деяких проц складна.
2. Низька ефективність зберігання і пере форматування даних.
3. Складна внутрішня логіка перетворення даних створила певні проблеми для створення ПЕ, які підтримують OLE.
OLE2 – можливість місцевої активізації об’єктів. В OLE1 при активізації об’єкта завантажуються батьківські програми і об’єкт передається для редагування в вікно в OLE2. об’єкт залишається на місці, а загальне вікно буде комбінацією загального продукту, в якому знаходиться об’єкт і загальний продукт, який породив об’єкт. Якщо в OLE1 при переміщенні файлів зв’язок з об’єктом автоматично втрачався, то в OLE2 він відслідковується, тобто можливий доступ безпосередньо до об’єкта, тобто до частини файла без читання файла повністю.
DDE, OLE1, OLE2 – сумісні зліва направо, тобто продукт джерело і продукт приймання обмежуються даними за найбільш новою технологією, яка доступна їм обом. Чим простіший інтерфейс, тим складніші логічні закони програми, що його реалізує. Тому потрібні автоматичні засоби розробки OLE продуктів (засоби візуальної технології).
Суть ООП – не програми керують даними, а дані ком. Це дані, які зв’язують одне з одним і описують певний об’єкт. На основі цього об’єкту реалізується модель того або іншого явища природи. Виділення керуючих даних і об’єктів, якими вони керують. Об’єкт – неділима сутність, яка зберігає свої якості тільки залишаючись єдиним цілим. Разом з даними, які описують певне явище зберігається і програмний код, який описує його поведінку. Вікно – прямокутна область екрана, що займає кожна програма, що працює під Windows. З точки зору програми, вікно – самостійний існуючий об’єкт, параметри якого описані в спеціальній структурі даних, а його поведінка визначається функцією вікна. Дані, які описують вікно мають однаковий формат, тип, розмір.
Первинність даних, механізм повідомлень.
В ООП первинні дані називаються повідомленнями. Так само як і в Windows модель даних керуючись об’єктами реалізується за допомогою спеціального механізму повідомлень, більше повідомлень, які отримує об’єкт. Вікно виникає в результаті дій користувачів, але ідея повідомлень значно глибша. Повідомлення – потужний і єдиний засіб зв’язку вікна всього продукту з ОС Windows. Через повідомлення вікно отримує інформацію про всі події в системі Windows, які мають відношення до деякого вікна.
Саме механізм повідомлень дозволяє реалізувати багато віконне операційне середовище.
Приклад: взаємодія Windows та програмного продукту при обробці клавіш.

Драйвери клавіш викликають продукт в модуль user.exe, яка і формує відповідне повідомлення.
Повідомлення, яке розміщене в системній черзі розподіляється потім по продуктам. Для кожного продукту Windows створює і підтримує окрему чергу продукту. Розподілення полягає в тому, що повідомлення береться із системної черги і визначає, якому вікну належить дане повідомлення і це повідомлення розміщується в чергу продукту, якому належить вікно. Цю роботу виконує user.exe, а обробка черги продукту виконує сам продукт, який бере повідомлення з черги, перетворюючи їх в повідомлення стандарту ansi і направляє у відповідну функцію вікна продукту. І конкретні дії по даному повідомленню робляться функцією вікна. Як Windows визначає якому продукту направляти повідомлення, оскільки багатозадачна система, але один користувач в кожен конкретний момент часу працює тільки з одним вікном. Продукт, що попадає в повідомлення від клавіш має в цей момент фокус вводу.
Системна черга є тим засобом, який розподіляє повідомлення по продукту, але якщо заздалегідь відомо, якому продукту належить те або інше повідомлення, то воно одразу розміщується в чергу продуктів повз системну чергу. Таким чином в Windows в повній мірі реалізована основна ідея ООП. Дані керуються об’єктами, тобто функціями вікна Windows. Windows – продукт створивши вікно і приготувавши середовище, продукт передає керування Windows і надалі до завершення роботи продукт отримає керування від Windows тільки після приходу повідомлень, які належать даному продукту.
Створивши вікно продуктів програма WinMain організовує цикл повідомлень. Основним призначенням обробки черги повідомлень даного продукту, яке створює і підтримує Windows. Повідомлення, які розміщуються в Windows в черзі продуктів беруться з черги циклом обробки повідомлень і направляються не на пряму, а через Windows в функцію керування відповідним вікном продукту. Чому не можна викликати функцію вікна на пряму? Тому, що це протиречить прийнятій технології. Windows – об’єкти спілкуються між собою тільки шляхом повідомлень.