Операционные системы: какими они бывают и как они устроены

Windows, macOS, Android, iOS — знакомые всем слова. Но что такое операционная система сама по себе? «То, что управляет компьютером, чтобы там всё работало»? Хороший ответ, но у него есть недостаток: он не даёт понимания, что же это такое. Ну что, давайте разберёмся!

Чем вообще занимается операционная система?

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

Процессор производит вычисления, жёсткий диск хранит информацию, а Wi-Fi-модуль общается с сетью. Чтобы это железо было доступно пользователю, нужна прослойка, которая умеет с этим железом «общаться» и приводить всё в удобный для пользователя вид.

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

А какими они вообще бывают?

Кроме четырёх самых известных и популярных, операционные системы есть почти в каждом сложном современном устройстве. Умные часы, принтер, Алиса, табло в автобусе, автомобили (и медиасистема в них), домашний роутер и даже счётчики воды, умеющие передавать показания...

Так что полезно различать классы операционных систем. Среди них выделяют Windows, *nix и прочие операционные системы (с которыми обычный человек в нормальной жизни не сталкивается).

Самые простые — это Windows. В их числе и знакомые всем версии 7, 10 и 11, и серверные варианты, называемые просто Windows Server, и ушедшая с рынка Windows Mobile, точнее Windows CE, и редкая Windows Embedded для промышленных устройств, а ещё Xbox System Software (да, на игровой консоли от Microsoft тоже стоит Windows, хотя и очень специфическая).

Все эти варианты Windows довольно сильно отличаются друг от друга — в зависимости от задач, для которых они сделаны.

Так же будет с классами систем *nix (это общее название для всех операционных систем, которые пошли из общего корня Unix многие десятилетия назад). Самые известные из них в наше время — это Linux, Android и macOS. Хотя у всех трёх общий предок, теперь уже непонятно, насколько они близки к оригиналу: это как корабль Тесея.

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

Много лет назад Apple взяла один из вариантов Unix и доработала его до операционных систем macOS и iOS, которые теперь используются в Макбуках и Айфонах.

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

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

В том числе Linux стала основой, на которой сделали Android.

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

Ну хорошо. А из чего состоит операционная система?

Операционную систему принято делить на ядро, системные библиотеки, оболочку и утилиты:

  • Ядро содержит в себе все нужные драйверы и понимает, как работать с железом. Также в нём есть всё, что касается управления оперативной памятью и программами.
  • Системные библиотеки — это набор программ, обеспечивающий «общение» всего, что запущено на компьютере, с ядром.
  • Оболочка — это обычно интерфейс, который операционная система предоставляет пользователю для взаимодействия с собой. Например, рабочий стол в Windows и macOS.
  • Утилиты — это готовые программы-инструменты, которые операционная система предлагает для удобства работы пользователя. Трудно представить себе Windows без «Проводника» или macOS без Finder. Но на самом деле их может и не быть, работе самой системы это не помешает.

Как это всё вообще работает?

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

Когда пользователь захочет открыть папку с картинками, проводник спросит у ядра: «А что у нас по этому пути?» И ядро пнёт драйвер жёсткого диска с тем же вопросом.

Драйвер скажет: «Не буду читать диск, у меня тут в кеше данные есть, держи», — и всё это вернётся обратно. Проводник на это посмотрит, скажет: «Тут картинки, нужны превью», — и ядро пойдёт доставать превью картинок из кеша системы, чтобы всё это красиво отобразить.

Если пользователь захочет запустить программу, ядро пойдёт проверять, может ли оно исполнить код, который там написан, и есть ли свободная память, чтобы добавить туда ещё одну программу. Затем начнёт выполнять её и отвечать на запросы программы вроде «А дай мне из такой-то библиотеки то-то».

А для чего нужны драйверы и службы?

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

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

В *nix-системах службы называются демонами.

А служба Plug and Play иногда спрашивает ядро: «У нас ничего нового из железа не появилось?» И если появилось, пытается инициализировать устройство — чтобы, когда вы втыкаете флешку, она сразу отобразилась в «Проводнике».

Расскажите про оболочки операционной системы!

Строго говоря, рабочий стол в Windows или домашний экран Android — это не часть операционной системы, а программа, которая поставляется дополнительно. Но все настолько привыкли к этим элементам, что их обычно включают в состав операционной системы под названием «оболочка».

Оболочки бывают и в виде простой консоли: чёрный экран, белый текст на нём — и всё. Но и это тоже оболочка операционной системы.

Первые операционки были совсем другими?

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

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

А человек всегда стремится к оптимизации работы, так что Роберт Патрик и Оуэн Мок придумали систему, которая позволяла выполнять следующую программу, когда прошлая заканчивалась. Их разработка следила за очередью программ, которую сформировал программист. А из описания программы можно было частично управлять логикой происходящего внутри, например выбирать, какие результаты напечатать. Сейчас это кажется очевидным, но тогда это было весьма инновационно. Этот момент в 1955 году и принято считать началом операционных систем.

Операционная система Роберта Патрика и Оуэна Мока называлась GM-NAA I/O. Если название кажется вам странным, то знайте, что это просто аббревиатура от General Motors & North American Aviation Input/Output system, создатели работали в General Motors и North American Aviation соответственно.

Получается, первая операционная система в мире, если убрать названия компаний, называлась «система ввода и вывода». Впрочем, тогда операционным системам не требовались звучные названия.

А когда появились более привычные операционные системы?

В 1964 году вышла Multics авторства General Electrics и Bell Labs. Её стоит упомянуть из-за концепции файловой системы с деревом папок, знакомой нам до сих пор. А в 1969 та же Bell Labs выпустила первую Unix, которая, ко всему прочему, умела работать с сетью и подключаться к другим компьютерам. Обе системы, как могли на тот момент, реализовывали многозадачность, но это было не очень востребовано. Системы ещё не были приятны и удобны для пользователя, их оболочкой был командный интерпретатор — та самая чёрная консоль с белым текстом.

Перенесёмся в 1973 год, когда компания Xerox создала свою операционную систему Alto OS. Она была уже отдалённо похожа на то, что нам знакомо: там был прототип рабочего стола, графическая оболочка и окна для просмотра файлов.

К сожалению, система сильно опередила своё время: компьютер, который это мог тянуть, стоил очень дорого, а необходимая для работы мышка вызывала у всех вопрос «Что это и зачем?» — и осталась скорее прототипом.

Зато, посмотрев на эту операционную систему, один студент подумал: «А чем я хуже?» Этого студента звали Билл Гейтс.

Так появилась Microsoft. Сперва компания занималась программным обеспечением, а к операционной системе приступила по заказу IBM, перекупив чужие наработки. Так или иначе, сначала на свет появилась MS-DOS, а потом и первая Windows — которая с треском провалилась: она требовала очень много ресурсов, была надстройкой над MS-DOS и никто снова не понял, для чего всё это нужно.

Параллельно с этим Стив Джобс, также насмотревшись на Alto OS, решил сделать свою операционную систему с графическим интерфейсом и мышкой. Он дал ей имя своей дочери — Lisa. Проект был не очень удачным, новая система тоже оказалась очень дорогой, но это позволило Джобсу договориться с Xerox и забрать себе часть наработок. И у него возникла грандиозная идея, что в операционной системе должен быть отзывчивый и приятный пользователю интерфейс. Так появились первые Маки, они же Macintosh, с куда более дружественной графической оболочкой. Вот тогда всё и закрутилось.

Давайте ближе к нашему времени!

В конце 80-х и начале 90-х годов операционных систем было много, как и типов, и архитектур компьютеров. Каждая крупная технологическая компания пыталась сделать что-то своё, но гонку выиграла IBM и те, кто вступили с ней в альянс, начав выпускать компьютеры на основе Intel-чипов.

Упомянем OS/2, к которой тоже приложила руку Microsoft. Сначала это должна была быть альтернатива MS-DOS для IBM PC, но в итоге она уступила Windows, особенно после выхода версии 3.0. Долгое время OS/2 была довольно популярна как серверная система для Java-приложений, но сейчас её проще увидеть в музее.

Microsoft выпустила свой вариант серверной операционной системы, Windows NT (сокращение от New Technology), которая была действительно технологически продвинутой.

Другая ОС, Novell Netware от компании Novell, была сразу ориентирована на работу с сетью и долгое время считалась эталоном быстродействия для операционной системы. Её пятая версия была одной из первых коммерчески успешных систем, которая научилась запускать сомнительные приложения в защищённом пространстве памяти, чтобы снизить потенциальный вред от вирусов. Эту методологию переняли и другие системы, позже это стало стандартом.

Тогда же появляется Linux — и сразу привлекает энтузиастов из-за своей открытости и бесплатности.

А если чуть дальше, к концу 90-х?

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

Но тут Стив Джобс вернулся в Apple и нанёс ответный удар, обвинив Билла Гейтса в краже части кода их операционной системы для создания своей. Всё это подкреплялось иском на миллиард долларов.

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

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

Тут же стоит упомянуть появление мобильных операционных систем. Первые Palm OS, Newton OS от Apple — да, Apple выпускала планшеты со своей ОС ещё в 1993 году, а вы не знали? Compaq выпустила планшет на основе MS-DOS и Windows 3.11 с поддержкой стилуса и экраном Wacom. Вышла Series 20 от Nokia (именную ОС они сразу назвали с числом 20). Почти все такие системы были встроенными, то есть проектировались под конкретные устройства и чипы.

Ну а дальше — уже новая эра операционных систем?

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

В какой-то момент высшей точкой этого подхода стал мем «нескучные обои», подразумевающий очередной вариант Debian (а скорее всего — Ubuntu, так как её проще всего пересобрать): сборки Linux, в которой от оригинала отличаются только обои и цвет окон по умолчанию. Но стоит отметить, что многие долгоживущие сборки Linux действительно серьёзно отличаются друг от друга.

Среди настольных операционных систем также продолжала развиваться Windows: вышла легендарная XP, потом не очень успешная Vista, после которой — семёрка, снова удачная.

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

Но главное случилось в июне 2007 года, когда Стив Джобс вышел на сцену и показал миру первый iPhone, у которого была новая операционная система — iOS. Тут надо сразу сделать ремарку: носимые карманные компьютеры, или КПК, были распространены задолго до этого — и там отлично чувствовали себя Palm OS, Windows Mobile и Blackberry OS. К ним добавлялось много вариантов Symbian, которые были на всех сотовых телефонах с поддержкой Java. Но общая маркетинговая стратегия Apple принесла Айфонам успех, и iOS широко распространилась, перейдя потом на планшеты и карманные музыкальные плееры от всё той же Apple.

А за несколько лет до этого пара энтузиастов создала свою операционную систему для цифровых камер. Первая версия называлась Fadden Demo.

Потом они подумали, что цифровые камеры — это как-то мелко, и захотели сделать что-то для сотовых телефонов, чтобы подвинуть Symbian и Windows на рынке. Один из авторов вспомнил, что у него есть красивый домен android.com, и решил переименовать компанию и операционную систему в Android. Их купила Google, а что было дальше, вы и так знаете: в 2008 выходит HTC Dream — и с тех пор Android на каждом втором телефоне в мире!

Ну и вот мы пришли... в наши дни?

В наши дни на персональном компьютере чаще всего установлена Windows, macOS или Linux. Иногда недорогие компьютеры поставляются с MS-DOS, но эта операционная система используется как заглушка, чтобы пользователь сам поставил то, что ему необходимо.

Есть ещё довольно редкая Chrome OS, операционная система от Google, построенная вокруг их браузера и веб-приложений. Если посмотреть чуть шире и обратить внимание на серверы и промышленное оборудование, то в список добавится Unix, чаще всего представленный RedHat и FreeBSD, но там в основном доминирует Linux.

А сегмент операционных систем для встроенного оборудования зачастую не имеет определённых названий. Например, умная колонка от Google работает на модифицированной версии ChromeCast, так же называется их ТВ-приставка. А у Яндекс-станции операционная система носит лаконичное название YaOS X.

Ну а мы с вами движемся дальше!