1890-1950 - Операция, присущая системе. Самые ранние компьютеры имели эквивалент того, что в настоящее время встроена в них ОС. Вы (оператор) также были частью операционной системы. Вы щелкнули переключатели регистра (или использовали перфокарту) и физически поменяли местами провода шины (вспомните телефонную станцию старого образца), и память была связана (через физические провода) напрямую с лампочкой (монитор дня) и принтерами ( долговременное хранение) таким образом, чтобы вывод программы загорелся и распечатывался непосредственно на устройстве, поскольку он был помещен в буфер памяти вывода. Для этих вещей не было необходимости в драйвере, потому что (из-за того, как эти физические провода были проложены) они «просто работали» (в наши дни не было такого понятия, как монитор). Фактически, до этой цифровой эпохи еще несколько десятилетий, пока не будет изобретен цифровой числовой дисплей, чтобы вы могли фактически видеть числа, которые вы уже ввели в регистр, и выводить их как десятичные числа; Принтеры правили всю эту эпоху, пока не появились мониторы. Они были подключены именно так, как им нужно, чтобы работать правильно. Ничто из этого не сильно изменилось с переходом с механического (1890-е годы) на электрический аналоговый (1910-е годы) на цифровой (1930-е годы). Эта архитектура «Plug N play» была заменена системой прерываний в течение этого времени и не будет появляться снова до конца девяностых; конечно к тому времени было бы намного меньше подключения. Благодаря прерываниям устройствам разрешалось занимать процессорное время, что позволяло архитектурам, которые не были напрямую связаны с аппаратным обеспечением, но потребовалось несколько поколений, чтобы это стало действительно упорядоченным процессом, который мы видим в арке x86 (и новее); ранние системы часто сталкивались с ужасными условиями гонки, проблемами с совместимостью оборудования / задержками и другим странным поведением в случае прерываний. Потому что каждая машина использовала радикально разные (экспериментальные) архитектуры в этот период; почти все устройства были сделаны на заказ для машины, на которой они работали.
1950-1973 - Работа в системе. В эту эпоху появилось большинство функций, о которых мы думаем, когда говорим об истинной операционной системе. В эту эпоху были представлены отладка, языки программирования, многопользовательская работа, многозадачность, терминалы, дисковые накопители, работа в сети, стандартизация компонентов и т.д. На этот раз произошел гигантский скачок в направлении стандартизации большей части этого, что означало, что у нас было больше стандартизированных устройств, но все же каждая ОС создавалась вручную для каждой машины, что означало, что функциональность ОС была строго ограничена тем, что инженеры, которые разрабатывали эту конкретную систему, решили, что им нужно , В течение этого времени существовала серая область, в которой находилась операционная система, потому что разные архитектуры работают по-разному, и машине более общего назначения потребуется намного больше ОС, чем машине, которая включает аппаратное обеспечение для выполнения тех же задач. Дело в том, что аппаратное обеспечение всегда будет работать быстрее, чем программное обеспечение, и практически все, что делается в программном обеспечении, теоретически может быть сделано в аппаратном обеспечении (это стоимость \ гибкость \ размер \ время \ и т.д., Что ограничивает нас от создания практически чистой аппаратной версии всего этого) день). ОС была сделана для конкретного компьютера или типа компьютера; это не будет работать в другом месте. Каждый новый компьютерный дизайн требовал переписывания всего программного обеспечения низкого уровня для работы с конкретной моделью машины. Ближе к концу этого времени появилась новая ОС, которая вскоре изменит эту парадигму, UNIX, написанная в Bell Labs Кеном Томпсоном и Деннисом Ричи.
1973 - Работа между системами Одна программа изменила все это, но это была не UNIX. Это был компилятор Си (который был классно сделан в гараже Кеном Томпсоном и Деннисом Ричи после того, как Bell Labs его перерезал). До этого момента каждый раз, когда вы писали код, он был либо машинным кодом (код, который машина непосредственно понимает, но не является переносимым), либо он был написан на языке, который компилировал ваш код в байтовый код (код, который интерпретируется другой программой как работает). Огромная разница для ОС, которую принес C, заключалась в возможности делать то, что называется кросс-компиляцией в машинный код. Это означало, что код мог быть написан один раз и скомпилирован для работы на множестве разных типов машин, если компилятор был написан для этой машины. Операционные системы должны быть написаны в машинном коде, потому что машинный код является буквально единственным кодом, который машина знает.
Я бы сказал, что только когда Кен и Деннис впервые скомпилировали ядро UNIX, используя компилятор C, родилась настоящая ОС в современном понимании. До этого операционная система представляла собой либо физический объект, либо просто предварительно инициализированный кусок памяти, предназначенный специально для конкретной машины. Добавление новых устройств в систему буквально требовало переписывания кода «ядра». Теперь ОС UNIX, которую они разработали для конкретной машины, можно было перекомпилировать и запускать на других машинах, не переписывая ВСЁ (если эта машина могла компилировать компилятор C из среды начальной загрузки, остальная часть ОС могла быть записана в относительно высокий уровень кода C).