THE (операційна система)
THE multiprogramming system або THE OS — операційна система, спроектована і реалізована командою розробників, яку очолював Едсгер Дейкстра, у 1965-66-х роках.[1] Монографії, що описували систему, були опубліковані 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 кілослів.
Джерела
- Dijkstra, E.W. (1968). The structure of the 'THE'-multiprogramming system. Communications of the ACM 11 (5): 341–346. doi:10.1145/363095.363143.
- Silberschatz, Abraham; Peterson, James L. (May 1988). 13: Historical Perspective. Operating System Concepts. с. 512.