Система мультипрограммирования THE или ОС THE была компьютерной операционной системой , разработанной командой под руководством Эдсгера В. Дейкстры , описанной в монографиях в 1965-66 годах [1] и опубликованной в 1968 году. [2] Дейкстра никогда не давал названия системе; «THE» — это просто аббревиатура от «Technische Hogeschool Eindhoven», тогдашнего названия (на голландском языке ) Эйндховенского технологического университета в Нидерландах . Система THE была в первую очередь пакетной системой [3] , которая поддерживала многозадачность ; она не была разработана как многопользовательская операционная система. Она была очень похожа на SDS 940 , но «набор процессов в системе THE был статическим». [3]
Система THE, по-видимому, представила первые формы программно-ориентированной страничной виртуальной памяти ( Electrologica X8 не поддерживала аппаратное управление памятью ), [3] освобождая программы от необходимости использовать физические ячейки в памяти барабана . Это было сделано с помощью модифицированного компилятора ALGOL (единственного языка программирования, поддерживаемого системой Дейкстры) для «автоматической генерации вызовов системных процедур , которые гарантировали, что запрошенная информация находится в памяти, при необходимости выполняя подкачку ». [3] Странично-ориентированная виртуальная память также использовалась для буферизации данных устройств ввода-вывода (I/O), а также для значительной части кода операционной системы и почти всего компилятора ALGOL 60. В этой системе семафоры впервые использовались в качестве программной конструкции.
Конструкция мультипрограммной системы THE примечательна использованием многоуровневой структуры , в которой «более высокие» уровни зависят только от «более низких» уровней:
Ограничение, что более высокие уровни могут зависеть только от более низких уровней, было введено проектировщиками для того, чтобы сделать рассуждения о системе (используя квазиформальные методы ) более послушными, а также для облегчения сборки и тестирования системы пошагово. Уровни были реализованы в порядке, сначала уровень 0, с тщательным тестированием абстракций, предоставляемых каждым уровнем по очереди. Это разделение ядра на уровни было похоже в некотором роде на более позднюю модель сегментации кольца Multics . Несколько последующих операционных систем использовали уровни в некоторой степени, включая Windows NT и macOS , хотя обычно с меньшим количеством уровней.
Код системы был написан на языке ассемблера для голландского компьютера Electrologica X8 . Этот компьютер имел размер слова 27 бит, 48 килослов основной памяти , [3] 512 килослов барабанной памяти , обеспечивающей резервное хранилище для алгоритма кэширования LRU , считывателей бумажной ленты, перфораторов бумажной ленты, плоттеров и принтеров.