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

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

THE multiprogramming system
Розробник Едсгер Дейкстра і інші розробники з Ейндговенського Технологічного Університету
Стан проєкту Проект закрито
Початковий випуск 1968 (1968)
Доступні мови програмування Мова асемблера машини Electrologica X8
Платформи, що підтримуються Electrologica X8

Сам Дейкстра не використовував назву 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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.