50

Операционные системы были тесно связаны с компьютерной архитектурой.ОС заботится обо всем вводе и выводе в компьютерной системе. Он управляет пользователями, процессами, управлением памятью, печатью, телекоммуникациями, сетями и т.д. Он отправляет данные на диск, принтер, экран и другие периферийные устройства, подключенные к компьютеру.

До введения операционной системы,

Что использовалось в компьютерных системах, чтобы заставить их работать?

Какая концепция была использована для операционной системы в нашей эволюции компьютера?

8 ответов8

42

Ранние компьютеры запускали одну программу за раз.

Программы загружались непосредственно из (например) бумажной ленты с пробитыми в ней отверстиями.

Вы запрограммировали самые ранние компьютеры , установив большой набор выключателей.

Колосс:

Атлас:

Манчестер:


Я использую слово "компьютер" для обозначения устройства, существующего в настоящее время на миллиардах. Из этого огромного количества компьютеров все, кроме незначительно малого числа, представляют собой цифровые электронные программируемые компьютеры с сохраненными программами. Я уверен, что оригинальный вопрос не о том, как люди с названием "Компьютер" провели свой рабочий день. Между этими двумя типами компьютеров есть ряд интересных устройств, не охваченных этим ответом.

13

Источник: История операционных систем

Операционные системы эволюционировали через ряд отдельных фаз или поколений, которые примерно соответствуют десятилетиям.

1940-е годы - первые поколения

Самые первые электронные цифровые компьютеры не имели операционных систем. Машины того времени были настолько примитивны, что программы часто вводились по одному биту в ряды механических переключателей (штекерных плат). Языки программирования были неизвестны (даже языки ассемблера). Операционные системы были неслыханными.

1950-е годы - второе поколение

К началу 1950-х рутина несколько улучшилась с введением перфокарт. Исследовательские лаборатории General Motors внедрили первые операционные системы в начале 1950-х для своего IBM 701. Система 50-х годов обычно выполняла одну работу за раз. Они назывались однопотоковыми системами пакетной обработки, потому что программы и данные были представлены группами или пакетами.

Источник: http://en.wikipedia.org/wiki/History_of_operating_systems

Самые ранние компьютеры были мейнфреймами, в которых отсутствовала какая-либо операционная система.

Каждый пользователь имел единоличное использование машины в течение запланированного периода времени и приходил к компьютеру с программой и данными, часто на перфорированных бумажных карточках и магнитной или бумажной ленте. Программа будет загружена в машину, и машина будет работать до тех пор, пока программа не завершится или не выйдет из строя.

Программы обычно можно отлаживать с помощью панели управления с помощью тумблеров и индикаторов панели. Говорят, что Алан Тьюринг был мастером этого на ранней машине Manchester Mark 1, и он уже выводил примитивную концепцию операционной системы из принципов универсальной машины Тьюринга.

10

Возвращаясь к началу компьютерных систем, у вас не было ни одной компьютерной системы, вместо этого у вас были мэйнфреймы.

Эти мэйнфреймы будут работать на перфокартах, которые будут содержать вашу программу (и часто ваши данные). Люди получат выделенное время на этих системах, возьмут с собой свои карты и подключат их к машинам, чтобы они могли их обработать. Машина будет запускать программу до тех пор, пока она не завершит работу, затем следующий пользователь придет со своей лентой и карточками.

По сути, так оно и было.

6

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

1950-1973 - Работа в системе. В эту эпоху появилось большинство функций, о которых мы думаем, когда говорим об истинной операционной системе. В эту эпоху были представлены отладка, языки программирования, многопользовательская работа, многозадачность, терминалы, дисковые накопители, работа в сети, стандартизация компонентов и т.д. На этот раз произошел гигантский скачок в направлении стандартизации большей части этого, что означало, что у нас было больше стандартизированных устройств, но все же каждая ОС создавалась вручную для каждой машины, что означало, что функциональность ОС была строго ограничена тем, что инженеры, которые разрабатывали эту конкретную систему, решили, что им нужно , В течение этого времени существовала серая область, в которой находилась операционная система, потому что разные архитектуры работают по-разному, и машине более общего назначения потребуется намного больше ОС, чем машине, которая включает аппаратное обеспечение для выполнения тех же задач. Дело в том, что аппаратное обеспечение всегда будет работать быстрее, чем программное обеспечение, и практически все, что делается в программном обеспечении, теоретически может быть сделано в аппаратном обеспечении (это стоимость \ гибкость \ размер \ время \ и т.д., Что ограничивает нас от создания практически чистой аппаратной версии всего этого) день). ОС была сделана для конкретного компьютера или типа компьютера; это не будет работать в другом месте. Каждый новый компьютерный дизайн требовал переписывания всего программного обеспечения низкого уровня для работы с конкретной моделью машины. Ближе к концу этого времени появилась новая ОС, которая вскоре изменит эту парадигму, UNIX, написанная в Bell Labs Кеном Томпсоном и Деннисом Ричи.

1973 - Работа между системами Одна программа изменила все это, но это была не UNIX. Это был компилятор Си (который был классно сделан в гараже Кеном Томпсоном и Деннисом Ричи после того, как Bell Labs его перерезал). До этого момента каждый раз, когда вы писали код, он был либо машинным кодом (код, который машина непосредственно понимает, но не является переносимым), либо он был написан на языке, который компилировал ваш код в байтовый код (код, который интерпретируется другой программой как работает). Огромная разница для ОС, которую принес C, заключалась в возможности делать то, что называется кросс-компиляцией в машинный код. Это означало, что код мог быть написан один раз и скомпилирован для работы на множестве разных типов машин, если компилятор был написан для этой машины. Операционные системы должны быть написаны в машинном коде, потому что машинный код является буквально единственным кодом, который машина знает.

Я бы сказал, что только когда Кен и Деннис впервые скомпилировали ядро UNIX, используя компилятор C, родилась настоящая ОС в современном понимании. До этого операционная система представляла собой либо физический объект, либо просто предварительно инициализированный кусок памяти, предназначенный специально для конкретной машины. Добавление новых устройств в систему буквально требовало переписывания кода «ядра». Теперь ОС UNIX, которую они разработали для конкретной машины, можно было перекомпилировать и запускать на других машинах, не переписывая ВСЁ (если эта машина могла компилировать компилятор C из среды начальной загрузки, остальная часть ОС могла быть записана в относительно высокий уровень кода C).

3

Следует отметить, что в раннем оборудовании (до 1960 года) ввод / вывод был намного проще. Вы могли прочитать карточку, или перфорировать карточку, или напечатать строку на принтере, каждая с одной инструкцией: размер буфера был фиксирован, и часто адрес буфера также фиксирован.

Даже в начале 60-х годов, с более сложными процессорами (например, 7090), вы все равно могли читать или перфорировать карты с помощью небольшой подпрограммы (около 20 инструкций), которая легко копировалась в каждую программу.

Поскольку компьютер был полностью предназначен для выполнения одной работы, не имело значения, находится ли процессор в режиме ожидания, ожидая, когда устройство чтения карт будет готово прочитать следующую карту, или чтобы линейный принтер заполнил следующую строку.

Ну, это имело значение, потому что вычислительное время было дорогим на самом деле. Вот почему люди изобрели многопроцессорную обработку, совместное использование времени, добавили асинхронный ввод-вывод, а также прерывания, драйверы устройств и операционные системы. Интерфейсы аппаратных устройств стали более сложными для программиста, предоставляя доступ к регистрам ввода-вывода более низкого уровня, что требовало большей сложности от драйверов устройств. Эта стоимость сложности (память, время программирования) амортизировалась для нескольких программ с использованием устройств "одновременно", мультиплексированных операционной системой.

Еще в 80-х годах я использовал компьютер на базе микропроцессора, эмулирующий одну из этих старых систем. Машинные инструкции имели единый формат более 80 бит (10 октетов), и инструкция для чтения первого сектора первого жесткого диска и сохранения его в памяти по адресу 0 была очень удобной: 0000000000. Таким образом, процедура загрузки состояла каждое утро для ввода этой инструкции на терминале, который сохранил ее по адресу 0 и выполнил ее, после чего загрузил загрузочный сектор и продолжил выполнение при следующей инструкции (по адресу 10). Файловая система состояла из статической таблицы, сопоставляющей "имена" файлов с диапазонами секторов, которые были выделены вручную! Ввод / вывод выполнялся в ассемблере для этих файлов путем непосредственного чтения или записи секторов, смещенных на положение файла на жестком диске, который был восстановлен подпрограммой "open".

3

В начале программы были зашиты в компьютер, который запускал программу сразу из определенного места при загрузке.

Затем были изобретены различные формы автономного хранилища: перфокарты, кассета, барабаны, даже диски. Гораздо более гибкий. Но не доступны напрямую из процессора. Перед запуском программа должна быть загружена в память. Итак, вы пишете программу для загрузки вашей программы. Это называется загрузчиком или начальной загрузкой (от выражения "чтобы подтянуть себя к ботинкам").

Поскольку система усложняется, у вас может быть простой загрузчик, загружающий более сложный загрузчик. Это началось с микрокомпьютеров: обычный загрузчик ленты работал медленно, поэтому загрузите декомпрессор и быстро загрузите оставшуюся часть ленты. Или дисковые загрузчики, которые удваиваются как системы защиты от копирования, делая нестандартные вещи с диском.

Или процесс загрузки ПК до UEFI: процессор начинает выполняться в BIOS. Это загрузит первый сектор с диска и перейдет к нему. Он ищет активный раздел и оттуда загружает загрузчик, который загружает операционную систему. Первоначально это было бы COMMAND.COM для MSDOS; теперь это обычно NTLDR.EXE для Windows.

2

Компьютеры первого поколения, предназначенные для более широкого личного использования, имели в ПЗУ так называемый "Монитор" (постоянная память).

Сразу после загрузки монитор предоставил очень ограниченный интерфейс командной строки, главным образом, для загрузки программы из хранилища данных, такого как магнитофон, и для запуска выполнения (несколько других команд были доступны для ручного ввода кода, хотя это редко требовалось). Только одна программа может быть запущена одновременно.

В отличие от операционной системы, у Monitor не было никакой поддержки файловой системы. Оператор-человек отвечал за поиск нужной ленты, ее установку на магнитофон и позиционирование в начале необходимой программы для загрузки.

Мониторинг объединил функции как BIOS, так и операционной системы и уже был очень четко программным обеспечением.

После включения короткий сигнал "сброса" просто обнулял программный счетчик так же, как и любой другой счетчик, одновременно переключая устройство отображения памяти (если оно было), чтобы отобразить адрес 0000 в ПЗУ монитора. Позднее было принято иметь какую-то аппаратную схему для переназначения Monitor в большое адресное пространство. Помимо запуска кода, кнопка "Сброс" также использовалась для завершения работающей программы, чтобы можно было загрузить другую.

На некоторых настольных ПК даже в наши дни можно найти элементарную кнопку сброса.

0

Самым прямым предшественником операционной системы была бы комбинация стандартных библиотек для взаимодействия с устройствами и система загрузчика для загрузки программы в память и начала работы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .