Перейти к содержимому
2.1. Зачем нужна операционная система

Что делает система: такты, режимы и полвека истории

Посмотрите, как процессор достаётся процессам по тактам, разберитесь, что программе можно и чего нельзя, и пройдите путь систем от перфокарт до смартфона.

// полоса тактов

Одно ядро, четыре процесса, двенадцать тактов

У каждого процесса своя дорожка, у каждого такта своя клетка. Жёлтая клетка значит «этот процесс сейчас на ядре», синяя - «готов работать, но ядро занято другим», розовая - «ждёт диск или сеть, и процессор ему пока не нужен». Жмите «такт» и следите за жёлтыми клетками: их всегда ровно одна на столбец.

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

на ядре готов, но ядро занято ждёт диск или сеть
такт 1 2 3 4 5 6 7 8 9 10 11 12 Браузер Музыка Обновление Резервное копирование
такт 0 из 12

  1. Браузер Отрисовывает страницу, потом уходит ждать ответ от сети - и на четыре такта процессор ему не нужен вовсе.
  2. Музыка Ему нужно понемногу, но регулярно: пропустит свой такт - и звук прервётся. Поэтому у плеера приоритет выше обычного.
  3. Обновление Работает в фоне и на всё соглашается: ему всё равно, когда именно достанется процессор.
  4. Резервное копирование Почти всё время ждёт диск. Такой процесс почти не отбирает процессор, хотя в диспетчере задач висит и выглядит занятым.

такт 1: Ядро занял браузер. Музыка и обновление готовы работать, но ждут своей очереди; копирование запросило данные с диска и ждёт устройство.

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

такт 5: Браузер ушёл ждать ответ от сети. Обратите внимание: ядро не простаивает ни один такт - его сразу забирает обновление. Именно на этом и держится вся эффективность многозадачности.

такт 9: Ответ пришёл, браузер снова на ядре. Для человека это выглядело как мгновенная реакция, хотя четыре такта он вообще не выполнялся.

такт 12: Двенадцать тактов кончились. Посмотрите на столбцы: жёлтая клетка ровно одна в каждом - ядро одно и делит его планировщик, а не сами программы.

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

// что кому можно

Почему одна программа падает, а другая роняет всю машину

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

Кто выполняет код

Браузер, редактор, игра. Работает в пользовательском режиме: своя память, никакого прямого доступа к железу. Всё, что ей нужно снаружи, она просит у ядра.

Что он пытается сделать

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

Что будет

Обычная программа - Считает в своей памяти Работает как обычно

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

Обычная программа - Просит открыть файл Системный вызов: ядро сделает это за неё

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

Обычная программа - Сам лезет к железу Система останавливает программу

Обращение к железу или в чужую память из пользовательского режима запрещено на уровне процессора: он сам сообщает ядру о нарушении, а ядро закрывает программу. Это не сбой, а защита - и ровно она отличает нынешние системы от MS-DOS, где программа могла записать что угодно куда угодно.

Обычная программа - Ошибается: неверный адрес Падает одна программа, остальные работают

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

Драйвер или само ядро - Считает в своей памяти Работает как обычно

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

Драйвер или само ядро - Просит открыть файл Просить не у кого - делает сам

Ядру не нужен системный вызов: оно и есть тот, у кого просят. Файл открывает драйвер файловой системы, и обращается он к диску напрямую.

Драйвер или само ядро - Сам лезет к железу Так и должно быть: это его работа

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

Драйвер или само ядро - Ошибается: неверный адрес Синий экран: падает вся система

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

Режимов у процессора на самом деле больше двух - есть промежуточные уровни, а под системой может лежать ещё и гипервизор. Но правило, которое здесь показано, работает именно так: чем больше прав у кода, тем дороже его ошибка.

// полвека систем

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

  1. 01

    1956: GM-NAA I/O, автоматическая очередь

    Первые программы-мониторы появились в IBM в середине пятидесятых. GM-NAA I/O считается одной из первых операционных систем: она сама загружала следующее задание, когда предыдущее заканчивалось.

    ! Чего ещё не было Ни графики, ни многозадачности, ни пользователей - только лента заданий.

    Что появилось Очередь заданий без участия оператора.

  2. 02

    1960-е: разделение времени

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

    ! Чего ещё не было Машина по-прежнему одна на институт, и стоит она как здание.

    Что появилось Иллюзия одновременности, на которой стоит вся сегодняшняя многозадачность.

  3. 03

    1969: MULTICS, слишком амбициозная

    Совместный проект MIT, Bell Labs и General Electric оказался слишком сложным. Но из разочарования в нём выросло главное: Кен Томпсон и Деннис Ритчи написали свою систему - лёгкую и удобную.

    ! Чего ещё не было Сама MULTICS так и не стала массовой.

    Что появилось Понимание, что простое побеждает всеобъемлющее.

  4. 04

    1969-1971: Unix и язык C

    Unix написан на C - языке высокого уровня, но близком к железу. Систему впервые стало можно перенести на другую машину, не переписывая заново. Оттуда же пришла идея «всё есть файл».

    ! Чего ещё не было Персональных компьютеров ещё нет, и Unix живёт в университетах.

    Что появилось Переносимость: одна система на разном железе.

  5. 05

    1981: MS-DOS и персональный компьютер

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

    ! Чего ещё не было Ни многозадачности, ни защиты: одна ошибка роняла всё.

    Что появилось Своя машина у каждого, а не одна на всех.

  6. 06

    1984-1990: графический интерфейс приходит к людям

    Macintosh в 1984 году, затем Windows: окна, мышь, значки. Компьютером стало можно пользоваться, не зная ни одной команды - и именно это открыло его всем остальным.

    ! Чего ещё не было Многозадачность ещё кооперативная: зависла одна программа - встали все.

    Что появилось Мышь, окна и понятная метафора рабочего стола.

  7. 07

    1991: Linux и открытый код

    Студент Линус Торвальдс выкладывает ядро, которое может дорабатывать кто угодно. Сегодня на нём работает большая часть серверов интернета и, в виде Android, большинство телефонов.

    ! Чего ещё не было На домашних столах она так и осталась редкостью.

    Что появилось Система, которую развивает не одна компания, а весь мир.

  8. 08

    2007: смартфон меняет всё

    iPhone и следом Android переносят операционную систему в карман. Появляются сенсорный ввод, магазины приложений и жёсткие права: программа спрашивает разрешение на камеру и на местоположение.

    ! Чего ещё не было Свободы у программ стало меньше - и это оказалось к лучшему.

    Что появилось Права приложений и экономия батареи как обязанность системы.

Даты и системы - из статьи. Хронология здесь спрямлена: в жизни эпохи наезжали друг на друга, а Unix, DOS и Linux долго существовали одновременно.

Интерактив разработан - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/zachem-os