Heisenbug 25 сентября 2019

Разбираем операционные системы по косточкам: как всё начиналось?

Интересует история развития операционных систем? Супер! Вы узнаете, почему "Яблоко" круче "Окон", и разберетесь в принципах работы основных ОС.
Разбираем операционные системы по косточкам: как всё начиналось?

Определение

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

Разные уровни абстракции

Абстракции необходимы для работы с hardware, так как без них использование металла практически невозможно. Также операционная система должна создавать виртуальные ресурсы или делать невозобновляемые ресурсы возобновляемыми. Примером невозобновляемых ресурсов может стать память (4GB виртуальной памяти vs 1GB физической памяти).

Защита

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

Например, что произойдет, если программе предоставится неограниченный доступ к памяти?

        int* p = (int*) 0xdead;

*p=1;
    

А если юзер попробует израсходовать все ресурсы?

        while(1) { fork(); }
    

Управление ресурсами

Многие ресурсы являются ограниченными, поэтому нужно максимально точно распределить их между приложениями и программами.

Что произойдёт, если сразу несколько программ запросят много памяти?

        char buf[1000000];   //memory
    

История в датах

1950 — Single user programmable computer.

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

1955 — Пакетная обработка (batch processing).

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

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

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

1965 — IBM System/360

Этот мэйнфрейм со стандартной архитектурой был разработан для научного и коммерческого программирования. OS/360 был операционной системой System/360.

1959-1965 — Time-Sharing OS: CTSS (Compatible Time Sharing System)

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

1963-1970 — Time-sharing OS: Multics

MIT, Bell Labs и GE изменили дизайн всего. Появилось кастомизированное оборудование, увидели свет новые языки программирования и операционные системы. Несмотря на то, что эта система никогда по-настоящему не работала, она является самой влиятельной ОС, так как положила начало Unix, MacOS, Linux и Windows.

1969 — Time-sharing OS: Unix

Кен и Деннис
Кен и Деннис

Кен Томпсон и Деннис Ритчи (Bell Labs) разработали операционную систему Unix. Система написана на языке высокого уровня — языке С. Unix обладала простой оболочкой, которую можно было заменить на другую. Файловая система представляла собой структуру-дерево, а сами файлы были имплементированы в виде неструктурированных последовательностей байтов. Также операционная система обладала многопроцессорностью: одни процессы могли создавать другие. В приоритете была интерактивная система. Множество пользователей имели одновременный доступ к компьютеру через неинтеллектуальные терминалы. В первой Unix системе не было компоновщика. Наверно, этот концепт не был известен в то время. Но вполне возможно, что его просто забыли имплементировать. И такое бывает.

Эволюция Unix и Unix-like систем с 1969 по 2008 год
Эволюция Unix и Unix-like систем с 1969 по 2008 год

IEEE разработал стандарт для Unix систем (POSIX), чтобы избежать хаоса. Этот стандарт представляет собой набор системных вызовов, который должен поддерживаться операционными системами Unix.

Продолжение развития


IBM Personal Computer

Разбираем операционные системы по косточкам: как всё начиналось?

Данный экспонат обладал микропроцессором Intel 8088 4.77 MHz и имел цветной монитор. Его стоимость составляла 6000$. Открытая архитектура позволяла юзерам писать собственный софт и производить оборудование.


MS-DOS

Ранняя DOS была очень примитивной, если так можно сказать об операционной системе. Microsoft разработала основанную на GUI систему Windows, которая работала на MS-DOS (в самом начале OC Windows была простым GUI для MS-DOS). Windows 95 и 98 были GUI операционными системами, разработанными на 16-bit Intel ассемблере. В 90-х также вышла в свет ОС Windows NT ( “New Technology”) .За Windows 98 появились Windows 2000 (Windows NT версия 5.0), Windows XP, Windows Vista и Windows 7.

1991 — Linux

Разбираем операционные системы по косточкам: как всё начиналось?

Open source операционная система, которую разработал Линус Торвальдс на основе 80386 процессора. Linux v.01 запускалась на ограниченном количестве устройств и не имела абсолютно никакого нетворкинга. Зато с соответствующей Unix поддержкой ;)

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

Зоопарк Операционных Систем

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

Мэйнфреймные ОS

Разбираем операционные системы по косточкам: как всё начиналось?

Стали развиваться мэйнфреймные операционные системы. Мэйнфрейм — это огромная компьютерная система, обычно занимающая целую комнату. Она довольно дорогая (>1 млн EUR). Такие компьютеры содержат много процессоров (доходит до 64) и еще больше дисков (>1000, иногда даже >65 000).

RAM у таких устройств соответствующая (> 100 GB). Такие системы очень надежные: никаких ребутов в течение 10 лет, а то и дольше. Они оптимизированы для обработки больших данных на высокой скорости. Мэйнфреймы обычно продаются вместе с ПО: System/z с z/OS, IBM 390 с OS/390, IBM 360 с OS/360.

Серверные ОS.

Разбираем операционные системы по косточкам: как всё начиналось?

Подобное серверное устройство подключено к сети. Непринципиально, к какой (например, к TCP/IP или SNA) . Такое устройство должно предоставлять услуги множеству пользователей (email-server, web-server, printing-server, Application-server и другие). Эта система должна быть всегда доступна для клиента, то есть, downtime не должно составлять более одного часа в неделю (зависит от конкретного случая, конечно). Также вид платформ не должен влиять на доступ пользователей к серверу. Серверные системы работают на Unix/Linux (Enterprise Edition) операционных системах.

Personal Computer ОS

Разбираем операционные системы по косточкам: как всё начиналось?

Модифицированная серверная операционная система с GUI. Обычные ОС на таких устройствах — Linux, Android, Windows 98, XP, Windows 8, Mac OS (BSD Unix), iOS. Такая система обеспечивает эффективную коммуникацию с пользователем через GUI. Ещё одним преимуществом является доступ к интернету. Не на последнем месте находятся мобильность и выполнение операций offline, так как было бы проблематично положить мэйнфрейм в рюкзак. Зато так можно сделать с ноутбуком.

Real-Time ОS

Разбираем операционные системы по косточкам: как всё начиналось?

Такие системы выполняют задания за определенный период времени и могут реагировать на изменения. Обычно они нуждаются в приложениях контроля. Real-Time OS встречается, например, в контрольной системе ядерного реактора или в системах наблюдения. Также данный вид ОС используют во многих медицинских приборах. Параллелизм является проблемой, так как надо обеспечить 100%-ую гарантию того, что какой-нибудь процесс не будет прерван другим. Типичным ПО для таких систем являются Realtime Linux, QNX, VxWorks.

Embedded Systems OS

Разбираем операционные системы по косточкам: как всё начиналось?

Встраиваемые системы (Embedded Systems) представляют собой малые или очень маленькие вычислительные системы. К малым относятся мобильные телефоны. Они похожи на PC, но у них более ограниченный функционал. Эти системы работают на Embedded Linux, Windows CE, Symbian. К очень маленьким можно отнести микроконтроллеры и сенсоры. Они предназначены для выполнения узкого спектра задач. ПО: VxWorks, QNX, TinyOS.

Chip Cards OS

Разбираем операционные системы по косточкам: как всё начиналось?

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

Для более углубленного изучения операционных систем советуем вам ознакомиться с нашими статьями 7 книг по UNIX/Linux и UNIX-подобная операционная система: пишем ядро на языке C.

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ