THE (операційна система)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
THE multiprogramming system
Розробник Едсгер Дейкстра і інші розробники з Ейндговенського Технологічного Університету
Написано на Мова асемблера машини Electrologica X8
Робочий стан Проект закрито
Початковий випуск 1968; 56 років тому (1968)
Платформи Electrologica X8

THE multiprogramming system або THE OS — операційна система, спроектована і реалізована командою розробників, яку очолював Едсгер Дейкстра, у 1965-66-х роках.[1] Монографії, що описували систему, були опубліковані 1968-го року.

Сам Дейкстра не використовував назву THE для операційної системи, це була просто абревіатура з нід. Technische Hogeschool Eindhoven (Технічний університет Ейндговена, Нідерланди). Система призначалася переважно для пакетної обробки завдань[2] і підтримувала багатозадачність; дизайн системи не передбачав більш ніж одного користувача. THE була схожа на операційну систему машини SDS 940, але «множина процесів у THE була статичною»[2]

У системі THE з'явилася підтримка одного з перших програмних реалізацій віртуальної пам'яті (машина Electrologica X8 не забезпечувала механізмів, потрібних, щоб реалізувати віртуальну пам'ять апаратно).[2] Таким чином, прикладна програма для THE звільнялася від необхідності знання фізичних адрес пам'яті на магнітному барабані. Реалізація досягалася за допомогою модифікованого компілятора мови ALGOL (це була єдина мова, що підтримувалася у THE), який «автоматично генерував системні виклики при доступі до пам'яті, таким чином гарантуючи, що якщо дані, до яких звертаються, не були у оперативній пам'яті, вони автоматично підвантажувались з барабана».[2] Механізми сторінкової віртуальної пам'яті також застосовувалися для буферизації даних вводу-виводу і тісно були інтегровані з багатьма підсистемами самої ОС. THE була першою ОС, у якій знайшли широке застосування семафори.

Архітектура[ред. | ред. код]

Архітектура операційної системи вирізнялася новітніми для свого часу підходами до розділення шарів (англ. layers): «вищі» шари мали, за задумом, залежати лише від «нижчих»:

  • Шар 0 відповідав за аспекти багатозадачності: відбувалося прийняття рішення про те, якому процесу виділити центральний процесор, з врахуванням процесів, що були заблоковані на семафорах. Цей найнижчий шар містив обробники переривань і здійснював перемикання контексту, коли потрібно було запустити черговий процес. Говорячи сучасними термінами, це був планувальник операційної системи.
  • Шар 1 відповідав за виділання пам'яті. У сучасній термінології це був диспетчер підкачування сторінок.
  • Шар 2 забезпечував комунікацію між операційною системою і консоллю оператора.
  • Шар 3 забезпечував введення і виведення даних з і на пристрої, під'єднані до комп'ютера (включно з механізмами буферизації даних).
  • Шар 4 складався з застосунків. Всього було 5 користувацьких процесів, що відповідали за компіляцію, виконання програм, і вивід (друк) даних користувацьких програм. Коли будь-яка програма завершувалася, виконання передавалося назад до планувальника ОС (орієнтованого на пріоритети), який запускав процеси, що чекають на ввід-вивід.
  • Шаром 5 вважався користувач системи (за словами Дейкстри, «компонент, який реалізували не ми»).

Такий підхід, на думку розробників, полегшував формальне доведення коректності аспектів ОС, а також сприяв інкрементальній розробці компонентів системи. Шари реалізувалися крок за кроком, шар 0 у першу чергу, а наступні — після ретельного тестування і формального доведення (в рамках прийнятих абстракцій). Такий поділ ядра ОС був у дечому схожий на підхід, застосований у Multics з її механізмами кілець доступу і сегментації.

Система була написана на мові асемблера для комп'ютера Electrologica X8. Ширина машинного слова у цьому комп'ютері становила 27 розрядів, об'єм пам'яті на феритових кільцях складав 32 кілослів[2], а барабанної — 512 кілослів.

Джерела[ред. | ред. код]

  1. Dijkstra, E.W. (1968), The structure of the 'THE'-multiprogramming system, Communications of the ACM, 11 (5): 341—346, doi:10.1145/363095.363143
  2. а б в г д Silberschatz, Abraham; Peterson, James L. (May 1988), 13: Historical Perspective, Operating System Concepts, с. 512