Перед операционными системами, какая концепция использовалась, чтобы заставить их работать? [закрыто]

50

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

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

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

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

Итачи Учиха
источник
5
«До этого, что использовалось в компьютерных системах ...» - это было так же, как если бы вы не запускали ОС сегодня. Вы запускаете пакетные задания, передавая всю компьютерную систему одному пользователю, по одному за раз.
опилки
4
Подумайте о коде, работающем на микроконтроллере. Он не работает в операционной системе, но это C-код, который компилируется в машинный код и запускается на реальном физическом устройстве (после того, как этот машинный код «прошит» в прошивку). Операционные системы только облегчают имеющие несколько программ взаимодействуют на одновременно со всеми частями компьютера, используя концепции совместного использования ресурсов и планирование процессов . Кроме того, вы также можете использовать операционную систему на этом маленьком микроконтроллере - если вам это нужно.
Прорыв
Многие ответы касаются ввода-вывода, загрузки программ и периферийных устройств. Но это только затеняет цель ОС: управление ресурсами и совместное использование, и, возможно, многопользовательские возможности. Назначение ОС не меняется, если вы загружаете код с монтажной платы, перфоленты или барабана или используете современную SD-карту.
опилки
Колода. Перфорированная бумажная лента. Оператор кормить же через компьютер.
Даниэль Р Хикс

Ответы:

42

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

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

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

Колосс:

Атлас:

Манчестер:


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

RedGrittyBrick
источник
1
У меня есть оборудование, с которым я работаю и которое использует эти переключатели на втором рисунке. Он также запускает программы точно так же. Upvote за использование такой замечательной картины
Ramhound
не самые ранние, скажем ENIAC, с жесткой проводкой? Не переключил ни сохранив программы? Или это больше не компьютер из-за этого ... любопытно
Rich Homolka
1
@RichHomolka: Как вы понимаете, это действительно зависит от того, что вы считаете компьютером. Большинство людей в настоящее время, вероятно, имеют в виду цифровой электронный программируемый компьютер. Конечно, были, например, механические аналоговые компьютеры, и самые ранние компьютеры были людьми (это было название работы). Если у меня будет время, я могу расширить ответ, чтобы решить эту проблему. Я считаю, что ENIAC был запрограммирован на манипулирование переключателями и кабелями.
RedGrittyBrick
Операционные системы появились довольно рано (1956 г. - см. En.wikipedia.org/wiki/GM-NAA_I/O ). Первый серийный компьютер был около 1954 года
Брюс Мартин
«Я уверен, что оригинальный вопрос не о том, как люди с названием« Компьютер »провели свой рабочий день», - моя бабушка была компьютером.
Пол Д. Уэйт
13

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

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

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

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

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

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

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

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

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

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

ДэвидПостилл
источник
10

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

введите описание изображения здесь

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

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

Мэтью Уильямс
источник
4
Итак, «операционная система» здесь ... кто бы ни делал планирование для пользователей?
Кайл Стрэнд,
2
Я хочу сказать, что ваш ответ на самом деле не объясняет, что вы подразумеваете под «Строго говоря, операционные системы были очень долгое время в той или иной форме». Вы предоставляете базовое описание мэйнфреймов, но совершенно не ясно, что эти мэйнфреймы имели что-то отдаленно похожее на то, что мы называем «операционными системами».
Кайл Стрэнд,
3
Я знаю, что вы пытаетесь сказать, но я не очень доволен этим описанием, будучи достаточно взрослым, чтобы работать на мэйнфреймах, которые соответствуют вашему точному описанию мэйнфрейма выше, но которые действительно содержали операционную систему. Мэйнфрейм на вашей картинке, вероятно, будет мэйнфреймом IBM 1970-х годов (как / 360 или s / 370?) Под управлением OS / 360 или более ранней версией MVS.
Роб Мойр
2
Нет такой вещи как «перфорированные магнитные карты» . Ваша фотография "мэйнфрейма" соответствует представлениям Голливуда и непрофессионалов о компьютере: ряды магнитных лент.
опилки
1
Здесь несколько неправильных утверждений. Как сказал @sawdust, перфокарты не были магнитными. Кроме того, перфокарты часто содержали вашу программу и ваши данные; или ваша программа может быть на бумажной (перфорированной) ленте. Катушки с магнитной лентой были намного позже. До этого программы загружались с помощью переключателей панели, как показано в ответе RedGrittyBrick, или путем перемонтирования компьютера через панель управления. Я нашел Отца, Сына и Ко интересную и познавательную историю.
Стивен П.
6

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

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

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

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

krowe
источник
1
Кто-то упомянул, что OS \ 360 предшествовала UNIX. Это также верно, но, как и все другие операционные системы того времени, оно было написано вручную для каждой отдельной модели машины, на которой оно работало.
krowe
1
Кто-то упомянул, что FORTRAN также может выполнять кросс-компиляцию. что верно, то же самое сделал ALGOL (предшественник C), но C был первым, кто был загружен для создания независимой от машины ОС.
krowe
1
« пока Кен и Деннис не скомпилировали ядро ​​UNIX ... что родилась настоящая ОС в современном понимании ...» OMG. Менее правдивые слова редко были написаны на этом сайте. Нет никакого смысла, в котором это утверждение отдаленно верно.
RBarryYoung
1
также игнорирует МУЛЬТИКИ (и BCPL)
Фрэнсис Дейви
Большинство вышеперечисленных вещей о приоритете UNIX и C неверны, особенно потому , что UNIX и C были так важны в истории ОС. Это было почти полностью связано с Указом о согласии против AT & T 1974 года, который означал, что он (и многие другие технологии AT & T) были бесплатными , включая исходный код . Из-за этого настоящие «первые» были первыми бесплатными полностью функционирующими современными ОС и низкоуровневыми компиляторами, включая весь исходный код. Одиночное положение, которое он занимал бы в течение 10-20 лет, прежде чем его конкуренты честно признали бы преимущество, которое оно дало.
RBarryYoung
3

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

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

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

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

pjc50
источник
3

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

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

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

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

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

Паскаль Бургиньон
источник
2

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

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

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

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

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

Элементарную кнопку «перезагрузить» можно найти на некоторых настольных ПК даже в наши дни.

h22
источник
Это относится к первому (или второму) поколению «персональных компьютеров» для домашнего использования. До того, как они появились, ученики средних школ имели удаленный доступ к компьютерам с разделением времени, которые работали по-другому, но все равно были бы «предназначены для более широкого использования». Я не уверен, что первое поколение домашних компьютеров, Altairs и Heathkits, все имели мониторы командной строки.
RedGrittyBrick
0

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

keshlam
источник