01/51

Занятие 2 · 2 академических часа

История, назначение
и функции ОС.
Виды операционных систем

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

от ENIAC до Androidфункции ядрашесть признаков классификациидемонстрация планировщика
02

Машинный зал · конец 1950-х

Простой оборудования между задачами: постановка проблемы

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

ОРГАНИЗАЦИЯ РАБОТ

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

ЭКОНОМИЧЕСКАЯ ОЦЕНКА

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

ПОСТАНОВКА ЗАДАЧИ

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

IBM 704 — машина конца 1950-х годов
IBM 704, 1957 · Wikimedia Commons

Структура занятия · четыре раздела

Структура темы: четыре вопроса занятия

01НАЗНАЧЕНИЕФункции операционной системы и задачи, решаемые без неё

Уровневая модель, два режима работы процессора, механизм системного вызова.

02ИСТОРИЯУсловия появления каждой функции

Шесть этапов развития: пакетная обработка, мультипрограммирование, разделение времени, UNIX, персональные компьютеры, мобильные системы.

03ФУНКЦИИШесть функций и способы их наблюдения

Управление процессами, памятью, файлами, устройствами, доступом и интерфейсом; демонстрация работы планировщика.

04КЛАССИФИКАЦИЯШесть классификационных признаков

Классификация собственной системы и обзор семейств: Windows, Linux, macOS, BSD, мобильные системы.

Материал практической работы № 1 используется как основа: Ubuntu в VirtualBox — гостевая операционная система, Windows или macOS на физическом компьютере — хостовая. Тема объясняет устройство и функции обеих.

Определение · три составляющие

Определение операционной системы

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

  1. Программное, а не аппаратное обеспечение

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

  2. Посредник между программой и устройством

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

  3. Распределитель ресурсов и средство защиты

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

Модель · уровни вычислительной системы

Уровневая модель вычислительной системы

УРОВЕНЬ 4 · ПОЛЬЗОВАТЕЛЬЧеловек и решаемые им задачи

Ввод с клавиатуры и мыши, окна, файлы, команды терминала.

получает результат
УРОВЕНЬ 3 · ПРИКЛАДНЫЕ ПРОГРАММЫБраузер, редактор, программа на Python

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

запрашивают ресурсы
УРОВЕНЬ 2 · ОПЕРАЦИОННАЯ СИСТЕМАЯдро, драйверы, системные библиотеки и утилиты

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

распределяет
УРОВЕНЬ 1 · АППАРАТНОЕ ОБЕСПЕЧЕНИЕПроцессор, память, накопитель, клавиатура, сетевой адаптер

Выполняет машинные инструкции. Понятий файла, окна и пользователя на этом уровне не существует.

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

Назначение · две функции одной программы

Две функции операционной системы: расширенная машина и распределитель ресурсов

ФУНКЦИЯ 1 · ВЗГЛЯД СО СТОРОНЫ ПРОГРАММЫРасширенная машина

Вместо управления позиционированием головки и нумерацией секторов прикладная программа выполняет вызов open("data.txt"). Накопитель представлен абстракцией файла, сетевой адаптер — абстракцией сокета.

ФУНКЦИЯ 2 · ВЗГЛЯД СО СТОРОНЫ ОБОРУДОВАНИЯРаспределитель ограниченных ресурсов

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

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

Вычислительная система без операционной системы

Задачи, которые решает прикладная программа при отсутствии операционной системы

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

Ресурсы · часть 1

Ресурсы вычислительной системы: процессор и память

  1. Процессорное время

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

  2. Оперативная память

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

Список процессов и показатели загрузки в диспетчере задач — отчёт операционной системы о распределении этих двух ресурсов.

Ресурсы · часть 2

Ресурсы вычислительной системы: накопитель, устройства и сеть

  1. Дисковое пространство

    Общий накопитель распределяется через файлы, права доступа, квоты на объём и очередь запросов к устройству.

  2. Устройства ввода-вывода

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

  3. Сеть

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

Механизм · граница режимов

Механизм системного вызова и режимы работы процессора

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

1 · ПОЛЬЗОВАТЕЛЬСКИЙ РЕЖИМПрограмма вызывает write()

Код готовит аргументы: дескриптор файла, адрес буфера, число байтов.

2 · ПЕРЕХОДСпециальная инструкция процессора

Управление передаётся по фиксированному адресу, режим переключается на привилегированный.

3 · ЯДРОПроверка прав и постановка в очередь

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

4 · УСТРОЙСТВО И ВОЗВРАТДрайвер пишет, ядро возвращает число байтов

Режим переключается обратно, программа продолжает со следующей строки.

ГРАНИЦА РЕЖИМОВ
Прикладная программа не выполняет запись на накопитель самостоятельно: она может только передать запрос ядру. Наличие этой границы и объясняет, почему ошибка в браузере не приводит к удалению системных файлов.

Часть 2 · история

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

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

1945 · без ОС1956 · пакетная обработка1964 · мультипрограммирование1969 · UNIX1981 · персональные компьютеры1991 · Linux

Нулевое поколение

1945–1955

Вычислительные машины 1945–1955 годов: работа без операционной системы

ЗАДАЧА

Расчёт баллистических таблиц. Программа задавалась переключателями и коммутационными панелями: соединение блоков машины выполнялось проводами вручную.

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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

ЦЕНА

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

Операторы за настройкой ENIAC
ENIAC, Лаборатория баллистических исследований · Wikimedia Commons

Первое поколение · пакетная обработка

1956

Системы пакетной обработки заданий

ПРОБЛЕМА

В интервале между двумя расчётами машина простаивала: оператор менял ленты, готовил колоды перфокарт и снимал распечатки.

РЕШЕНИЕ

Система GM-NAA I/O, написанная в General Motors и North American Aviation для IBM 704, постоянно оставалась в памяти и сама запускала следующую задачу из пакета, как только заканчивалась предыдущая. Задачи заранее собирали в один пакет — отсюда и название пакетной обработки.

ЦЕНА

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

Перфокарта — носитель одной строки программы
Перфокарта: одна строка программы · Wikimedia Commons
Из систем пакетной обработки в современные операционные системы перешли два механизма: очередь заданий и резидентная часть системы — код, постоянно находящийся в оперативной памяти. В Linux эта часть называется ядром.

Второе поколение · простой процессора

1960-е

Мультипрограммирование как способ загрузки процессора

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

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

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

ПОКАЗАТЕЛЬ Загрузка процессора

При одной программе в памяти доля полезной работы определяется соотношением времени вычислений и времени ввода-вывода.

При нескольких программах простой одной из них заполняется работой другой.

Второе поколение · технические следствия

Три механизма, потребовавшиеся для размещения нескольких программ в памяти

  1. Защита памяти

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

  2. Привилегированный режим процессора

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

  3. Планирование

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

Третье поколение · семейство машин

1964–1966

Семейство IBM System/360 и операционная система OS/360

ПРОБЛЕМА

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

РЕШЕНИЕ

Линейка совместимых машин разной мощности с общим набором команд и общей операционной системой OS/360. Код, написанный для младшей модели, выполнялся на старшей.

ЦЕНА

Система, рассчитанная на машины разной производительности и различные режимы применения, достигла объёма в миллионы строк кода. Управление такой разработкой стало самостоятельной инженерной проблемой, описанной Фредериком Бруксом в книге «Мифический человеко-месяц».

Мейнфрейм IBM System/360
IBM System/360 · Wikimedia Commons

Разделение времени · индивидуальный терминал

1961–1969

Системы разделения времени: CTSS и Multics

ПРОБЛЕМА

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

РЕШЕНИЕ

Разделение времени: процессор предоставляется каждому пользователю короткими интервалами в порядке очереди. Частота переключений такова, что для пользователя терминала машина выглядит выделенной ему одному. Система CTSS запущена в MIT в 1961 году, вслед за ней начат проект Multics.

ЦЕНА

Multics проектировался как система масштаба городской вычислительной службы и оказался чрезмерно сложным. Часть участников проекта перешла к разработке более компактной системы, из которой развился UNIX.

Экран входа в систему Multics
Сеанс Multics в эмуляторе · Wikimedia Commons
На этом этапе введены многопользовательский режим, учётные записи, пароли и права доступа к файлам: при работе на одной машине нескольких пользователей их данные требуется разграничить.

UNIX · переносимая система

1969–1973

Система UNIX и переносимость операционной системы

ПРОБЛЕМА

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

РЕШЕНИЕ

Разработка UNIX начата в Bell Labs в 1969 году; в 1973 году ядро системы переписано на языке C. Машинно-зависимой осталась небольшая часть кода, остальное компилировалось под новую архитектуру.

НАСЛЕДИЕ

Принцип «всё есть файл», набор небольших утилит вместо одной универсальной программы, конвейер и права доступа к файлам. Эти решения применяются в Ubuntu и рассматриваются на последующих занятиях.

Кен Томпсон и Деннис Ритчи
Кен Томпсон и Деннис Ритчи, 1973 · Wikimedia Commons

Четвёртое поколение · персональные компьютеры

1981

MS-DOS и операционные системы персональных компьютеров

УСЛОВИЯ

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

РЕШЕНИЕ

Простая система с командной строкой и файловой системой FAT. Программа получала машину в единоличное распоряжение и обращалась к оборудованию напрямую.

ЦЕНА

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

Персональный компьютер IBM PC 5150
IBM PC 5150, 1981 · Wikimedia Commons
Экран MS-DOS с выводом команды dir
Сеанс MS-DOS: команда dir · Wikimedia Commons
Сохранившиеся решения: обозначение томов буквами (C:\), разделение элементов пути обратной косой чертой, определение типа файла по расширению. Команды dir, copy и cd обрабатывала оболочка — отдельная программа, не входящая в состав ядра.

Графический интерфейс

1984

Графический интерфейс пользователя: Apple Macintosh, 1984 год

ПРОБЛЕМА

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

РЕШЕНИЕ

Графический интерфейс: окна, значки, меню и указатель мыши. Основные идеи разработаны в исследовательском центре Xerox PARC в 1970-е годы. Apple Lisa выпущена в 1983 году, Macintosh — в 1984 году; последний получил массовое распространение.

ЦЕНА

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

Компьютер Apple Macintosh 128K
Apple Macintosh 128K, 1984 · Wikimedia Commons

Открытый исходный код · 1991

Ядро Linux и модель открытой разработки

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.Линус Торвальдс, письмо в конференцию comp.os.minix, 25 августа 1991

«Я делаю (бесплатную) операционную систему — просто хобби, ничего большого и профессионального вроде gnu — для клонов AT на 386 и 486».

Дальнейшее развитие: исходный код был открыт, и в разработку включились сторонние участники. С версии 0.12 ядро распространяется по лицензии GPL. В настоящее время оно применяется в серверах, мобильных устройствах на Android, сетевом оборудовании и большинстве суперкомпьютеров.

Линус Торвальдс
Линус Торвальдс · Wikimedia Commons
Уточнение термина. Linux — это ядро, а не законченная операционная система. Система формируется вокруг ядра и включает программы проекта GNU, графическую среду и менеджер пакетов; такой комплект называется дистрибутивом. В учебной виртуальной машине команда uname -r выводит версию ядра, а lsb_release -a — версию дистрибутива Ubuntu; это разные номера.

Итог раздела · восемь этапов

Хронология развития операционных систем

1945Операционная система отсутствует, программа занимает машину целиком
1956Пакетная обработка, резидентная система
1964Мультипрограммирование и защита памяти
1969UNIX, разделение времени, права на файлы
1981MS-DOS, персональные компьютеры
1984Графический интерфейс становится массовым
1991Ядро Linux, открытая разработка
2007+iOS и Android: операционные системы мобильных устройств
Восемь этапов охватывают восемьдесят лет. За это время сменились носители, интерфейсы и масштабы систем, тогда как перечень решаемых задач только пополнялся.

Итог раздела · закономерности

Три закономерности, видимые на хронологии

  1. Функции не исчезают

    Очередь заданий 1956 года и планировщик Ubuntu 24.04 решают одну и ту же задачу — определяют порядок использования процессора — различными способами. Ни один механизм из перечисленных на хронологии не был отменён; менялась только его реализация.

  2. Механизмы защиты вводились дважды

    Мейнфреймы получили защиту памяти и привилегированный режим в 1960-е годы. Персональные компьютеры начала 1980-х этих механизмов не имели и восстановили их к середине 1990-х, когда объём выполняемых задач сделал отказ системы неприемлемым.

  3. Срок жизни ядра измеряется десятилетиями

    macOS основана на разработках BSD и Mach, Android работает на ядре Linux 1991 года, Windows — на ядре линии NT, выпущенном в 1993 году. Прикладное окружение обновляется существенно чаще, чем ядро.

Часть 3 · функции

Размещение функций операционной системы по уровням модели

ПРИКЛАДНЫЕ ПРОГРАММЫЗапрашивают ресурсы системными вызовами

Браузер, текстовый редактор, программа пользователя.

пользовательский режим
ЯДРО · ШЕСТЬ ФУНКЦИЙПроцессы · память · файлы · устройства · доступ · учёт

Каждая функция рассматривается отдельно: решаемая задача и способ её наблюдения в работающей системе.

привилегированный режим
ОБОЛОЧКА И СЛУЖБЫИнтерфейс пользователя

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

пользовательский режим
АППАРАТНОЕ ОБЕСПЕЧЕНИЕПроцессор, память, накопители, контроллеры

Прямое обращение к этим компонентам выполняют только драйверы в составе ядра.

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

Функция 1 · управление процессами

Процесс и его состояния

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

СОСТОЯНИЕ 1Готов

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

СОСТОЯНИЕ 2Выполняется

Процессор выполняет инструкции данного процесса. На одно ядро приходится один такой процесс.

СОСТОЯНИЕ 3Ожидает

Процесс запросил данные с накопителя или из сети. До получения ответа процессорное время ему не требуется.

готов → выполняется: процесс выбран планировщиком
выполняется → готов: интервал исчерпан, выполнено переключение контекста
ожидает → готов: запрошенные данные получены
В Ubuntu состояние процесса отображается в столбце S вывода команды ps aux: R — выполняется или готов, S — ожидает события, D — ожидает ответа устройства. Подробно рассматривается в теме «Модель процесса».

Демонстрация · одно ядро, три процесса

Диспетчеризация процессов на одном процессорном ядре

Запись прогона показывает порядок предоставления процессорного времени трём процессам. Для воспроизведения используется кнопка «Запустить».

ЗАПИСЬ ПРОГОНА · 30 ИНТЕРВАЛОВ ВРЕМЕНИ · ОДНО ЯДРО
РЕДАКТОРожидание ввода
0%
БРАУЗЕРотрисовка страницы
0%
МЕНЕДЖЕР ПАКЕТОВвычисления и загрузка
0%
0интервалов предоставлено планировщиком
0переключений контекста: сохранение регистров одного процесса и восстановление регистров другого
1процесс выполняется в каждый момент времени; заштрихованная клетка соответствует состоянию готовности с ожиданием очереди
Одновременного выполнения на одном ядре не происходит: процессы чередуются. Частота переключений такова, что для пользователя работа выглядит параллельной. Цена такого режима — затраты на само переключение: чем чаще сменяются процессы, тем большая доля процессорного времени расходуется на служебные операции.

Функция 2 · управление памятью

Управление оперативной памятью: виртуальные адреса и страницы

ФИЗИЧЕСКАЯ ПАМЯТЬ · ОДИН БЛОК = ОДНА СТРАНИЦАсхема: 16 страниц вместо миллионов
ядроредакторбраузеробновление пакетовсвободно
  1. Виртуальный адрес

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

  2. Таблица страниц

    Ядро хранит соответствие «виртуальная страница — физическая», а перевод адреса выполняет отдельный блок процессора. На архитектуре x86-64 страница обычно занимает 4 КБ.

  3. Изоляция и подкачка как результат

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

Функция 3 · файловая система

Файловая система: организация данных на накопителе

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

LINUX · ОДНО ДЕРЕВО ОТ КОРНЯ /

/
├── bin    исполняемые программы
├── etc    файлы настроек
├── home
│   └── student   личные файлы
├── var
│   └── log       журналы системы
└── dev    устройства как файлы

WINDOWS · ОТДЕЛЬНОЕ ДЕРЕВО НА КАЖДОМ ТОМЕ

C:\
├── Windows        системные файлы
├── Program Files  программы
└── Users
    └── student    личные файлы

D:\   второй том — свой корень
ЧТО ХРАНИТ ФАЙЛОВАЯ СИСТЕМАИмя, размер, время, права, номера блоков

В ext4 эти сведения лежат в структуре inode, отдельно от содержимого файла.

РАЗЛИЧИЯ ФАЙЛОВЫХ СИСТЕМext4, NTFS, APFS, FAT32

Различаются предельным размером тома и файла, наличием журналирования и поддержкой прав доступа. FAT32 права доступа не хранит, что и определило её применение на сменных носителях.

НАБЛЮДЕНИЕ В УЧЕБНОЙ VMls / и df -hT

Первая команда выводит каталоги корневого уровня, вторая — разделы и типы файловых систем, на которых они размещены.

Функция 4 · устройства и драйверы

Управление устройствами ввода-вывода и драйверы

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

  1. Драйвер

    Программный модуль для конкретной модели устройства. Выполняется в составе ядра и преобразует обобщённые команды системы в обращения к регистрам устройства.

  2. Единый интерфейс обращения

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

  3. Прерывание

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

Функция 4 · цена решения

Виртуализация устройств и отказоустойчивость драйверов

Пример из практической работы № 1. Гостевая Ubuntu обращается к обычному контроллеру накопителя и использует штатный драйвер. Гипервизор VirtualBox преобразует эти обращения в операции с файлом .vdi на хостовой машине. Единый интерфейс устройства делает подмену незаметной для гостевой системы, и именно поэтому виртуальная машина работает без изменения кода Ubuntu.

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

СЛЕДСТВИЕ ДЛЯ ЭКСПЛУАТАЦИИ Драйвер — критический компонент

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

Способы уменьшить этот риск рассматриваются в теме об архитектуре ядра.

Функция 5 · пользователи, права и защита

Учётные записи, права доступа и защита данных

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

МеханизмЧто ограничиваетГде увидеть в Ubuntu
Учётная записьОт чьего имени работает процесс: у каждого пользователя свой числовой идентификаторid, whoami
Права на файлЧтение, запись и запуск отдельно для владельца, группы и остальныхls -l — строка вида -rw-r--r--
СуперпользовательУчётная запись root не подлежит проверке прав. Повседневная работа под ней не рекомендуется, поскольку любая ошибка выполняется без ограниченийsudo команда
Изоляция процессовОбращение процесса к памяти другого процесса невозможноОшибка «Segmentation fault» при выходе за границы выделенной памяти
Практическое следствие: команда с sudo требует предварительной проверки. Ядро подтверждает права и выполняет запрошенное действие, включая удаление данных, если полномочий для этого достаточно.

Функция 6 · интерфейс пользователя

Интерфейс пользователя: командная строка и графическая среда

Рабочий стол Ubuntu 24.04
Ubuntu 24.04 LTS, среда GNOME · Wikimedia Commons
  • ГРАФИЧЕСКИЙ ИНТЕРФЕЙСДоступные действия представлены на экране, запоминание команд не требуется. Последовательность из двадцати операций указателем не сохраняется и не воспроизводится автоматически.
  • КОМАНДНАЯ СТРОКАТребует знания имён команд, но каждая команда представляет собой текст. Строка mkdir -p проект/отчёты && cp *.md проект/отчёты/ сохраняется в сценарии, помещается в репозиторий и воспроизводится на другой машине без изменений.
  • СЕРВЕРНЫЕ УСТАНОВКИСистему устанавливают без графической среды: она расходует память и процессорное время на интерфейс, который не используется.

Смежные вопросы темы

Загрузка операционной системы и системный журнал

  1. Прошивка UEFI

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

  2. Загрузчик

    В Ubuntu используется GRUB: отображает меню выбора и помещает образ ядра в оперативную память.

  3. Ядро

    Инициализирует управление памятью и устройствами, монтирует корневую файловую систему.

  4. Первый процесс

    systemd запускает системные службы в требуемом порядке и доводит систему до экрана входа.

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

Часть 4 · классификация

Классификация
операционных систем

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

число задаччисло пользователейназначениеинтерфейсвремя реакциилицензия

Признаки 1 и 2 · задачи и пользователи

Классификация по числу задач и числу пользователей

ПризнакЗначенияСпособ проверкиПример
Число задачОднозадачная — в памяти находится одна программа. Многозадачная — процессор поочерёдно обслуживает несколько процессовДиспетчер задач или команда ps aux: наличие более одного процесса указывает на многозадачностьMS-DOS однозадачная, Windows и Linux многозадачные
Число пользователейОднопользовательская — предусмотрена одна учётная запись. Многопользовательская — несколько учётных записей с разграничением прав и файловКоманда cat /etc/passwd в Linux, раздел «Учётные записи» в параметрах WindowsMS-DOS однопользовательская, UNIX многопользовательская с момента создания
Признаки независимы, и их отождествление — типичная ошибка.Windows 95 была многозадачной, но разграничения данных между пользователями не обеспечивала: любая программа имела доступ к файлам любого пользователя.

Признак 1 · уточнение

Кооперативная и вытесняющая многозадачность

КООПЕРАТИВНАЯУправление передаёт сама программа

Процесс работает до тех пор, пока не передаст управление операционной системе добровольно. Зациклившаяся программа не передаёт его вовсе, и система перестаёт отвечать. Такая схема применялась в Windows 3.x и ранних версиях Mac OS.

ВЫТЕСНЯЮЩАЯУправление изымает операционная система

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

Демонстрация планировщика на экране 26 воспроизводит именно вытесняющую многозадачность: интервал выделяется ядром, а не запрашивается процессом.

Признак 3 · назначение · часть 1

Классификация по назначению: системы общего назначения

  1. Настольная · Windows 11, Ubuntu Desktop, macOS

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

  2. Серверная · Ubuntu Server, Windows Server

    Оптимизируются непрерывность работы служб и пропускная способность. Графическая среда обычно отсутствует, управление ведётся через терминал и удалённый доступ, обновления выполняются по плану, а не по появлению.

  3. Мобильная · Android, iOS

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

Признак 3 · назначение · часть 2

Классификация по назначению: специализированные системы

  1. Встраиваемая · маршрутизатор, телевизор, счётчик, автомобильная магнитола

    Работает при малом объёме памяти, часто без дисплея и клавиатуры, обновляется редко. Применяются сокращённые сборки Linux или специализированные системы, размещаемые в постоянной памяти устройства.

  2. Реального времени · FreeRTOS, QNX, VxWorks

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

  3. Пограничный случай · одноплатные компьютеры

    На платах класса Raspberry Pi работает обычный дистрибутив Linux. Одно и то же ядро применяется и в серверах, и во встраиваемых устройствах, поэтому назначение системы определяется её конфигурацией, а не составом ядра.

Признак 3 · отдельный случай

Операционные системы реального времени

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

ЖЁСТКОЕ РЕАЛЬНОЕ ВРЕМЯНарушение срока равнозначно отказу

Блок управления двигателем формирует сигнал зажигания в заданный момент. Ответ через 12 миллисекунд вместо 10 считается не замедлением, а ошибкой работы системы.

МЯГКОЕ РЕАЛЬНОЕ ВРЕМЯНарушение срока снижает качество

При задержке пакета видеосвязь сохраняется: ухудшается изображение, но соединение не разрывается, и результат остаётся приемлемым.

Признак 3 · чем обеспечивается гарантия

Различия систем реального времени и систем общего назначения

  1. Детерминированный планировщик

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

  2. Пропускная способность как цена гарантии

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

  3. Почему Windows и Linux к этому классу не относятся

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

Признаки 4, 5 и 6

Классификация по интерфейсу, разрядности и типу лицензии

  1. Интерфейс: командный, графический, комбинированный

    Большинство современных систем комбинированные: Ubuntu включает среду GNOME и терминал, Windows — графическую оболочку и PowerShell. Чисто командными остаются серверные установки.

  2. Разрядность: 32 или 64 бита

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

  3. Лицензия: открытая или проприетарная

    Открытая лицензия даёт доступ к исходному коду с правом изменения и распространения, проприетарная таких прав не предоставляет. Windows и macOS проприетарные, Ubuntu и Debian открытые. Открытая лицензия при этом не означает бесплатного распространения: Red Hat Enterprise Linux поставляется с открытым кодом и платной поддержкой.

Архитектура · три подхода

Архитектура ядра: монолитное ядро, микроядро, гибридное ядро

ПОДХОД 1

Монолитное ядро
ЯДРОпроцессы · память · файлы · сеть · драйверы
вне ядра: только прикладные программы

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

ПОДХОД 2

Микроядро
ЯДРОтолько процессы, память и обмен сообщениями
вне ядра: драйверы, файловая система, сеть

Отказавшая служба перезапускается без перезагрузки системы. Цена решения — обмен сообщениями вместо прямых вызовов функций. По такой схеме построены QNX и MINIX 3.

ПОДХОД 3

Гибридное ядро
ЯДРОпроцессы, память, часть служб и драйверов
вне ядра: остальные подсистемы

Промежуточное решение между быстродействием и отказоустойчивостью. К этому типу относят ядро Windows NT и ядро XNU в macOS.

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

Семейства систем

Современные семейства операционных систем

Логотип WindowsWindowsЯДРО NT · 1993

Настольные и серверные редакции одной линии. Гибридное ядро, файловая система NTFS, проприетарная лицензия.

Тукс — талисман LinuxLinuxЯДРО · 1991

Ядро, на основе которого формируются дистрибутивы: от серверов и рабочих станций до сетевого оборудования и мобильных устройств.

Логотип ApplemacOSЯДРО XNU · 2001

Основана на разработках BSD и Mach. Этим объясняется наличие в macOS UNIX-совместимого терминала наряду с графической средой.

Талисман BSDBSDОТ UNIX · 1977

FreeBSD, OpenBSD, NetBSD. Самостоятельная ветвь UNIX; часть кода BSD вошла в macOS и в сетевые подсистемы других операционных систем.

Робот AndroidAndroid и iOSМОБИЛЬНЫЕ · 2007–2008

Android построен на ядре Linux, iOS — на ядре XNU, общем с macOS. Различия между настольными и мобильными системами определяются окружением, а не ядром.

К UNIX 1969 года восходят macOS, iOS, все системы семейства BSD, а через совместимость интерфейсов — Linux и Android. Такое распространение стало практическим следствием переноса ядра на язык C.

Дистрибутивы Linux

Дистрибутивы Linux и их различия

Логотип UbuntuUbuntuОСНОВАН НА DEBIAN

Фиксированный график выпусков, версии LTS с длительным сроком поддержки. Используется в лабораторных работах курса.

Логотип DebianDebianС 1993 ГОДА

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

Логотип FedoraFedoraСВЯЗАНА С RED HAT

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

Логотип Arch LinuxArch LinuxНЕПРЕРЫВНЫЕ ОБНОВЛЕНИЯ

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

РАЗЛИЧИЕ 1Менеджер пакетов

apt в Ubuntu и Debian, dnf в Fedora, pacman в Arch. Команды различаются, решаемая задача одна.

РАЗЛИЧИЕ 2Политика обновлений

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

ОБЩИЕ ЭЛЕМЕНТЫЯдро и базовые команды

ls, cd, права доступа и структура каталогов одинаковы во всех дистрибутивах, поэтому навыки работы переносимы.

Сравнение · три настольные системы

Сравнение Windows 11, Ubuntu Desktop и macOS

Критерий сравненияWindows 11Ubuntu DesktopmacOS
ЯдроГибридное, линия NTМонолитное, LinuxГибридное, XNU на основе Mach и BSD
Файловая система по умолчаниюNTFSext4APFS
Установка программУстановщики и Microsoft StoreМенеджер пакетов apt и репозиторииApp Store и перенос приложения в Applications
Оболочка командной строкиPowerShell и cmdbash или zshzsh
ЛицензияПроприетарная, оплачиваетсяОткрытая, свободно распространяетсяПроприетарная, поставляется с устройством
Совместимость с оборудованиемШирокаяШирокаяОфициально поддерживаются только компьютеры Apple
Сравнение показывает не преимущество одной системы, а цену каждого решения. Для учебной лаборатории выбрана Ubuntu: она свободно устанавливается, допускает эксперименты с восстановлением из снимка, а её команды применимы и в серверных системах.

Практическая часть · 8 минут

Практическое задание: классификация собственной операционной системы

Значение выбирается в каждом столбце, формулировка собирается ниже. Каждое значение подтверждается наблюдением: числом процессов, списком учётных записей, выводом команды.

ЧИСЛО ЗАДАЧ
ПОЛЬЗОВАТЕЛИ
НАЗНАЧЕНИЕ
ИНТЕРФЕЙС
ВРЕМЯ РЕАКЦИИ
ЛИЦЕНЗИЯ
Выберите значение в каждом столбце — формулировка будет собрана здесь.

Разбор · четыре типичные формулировки

Разбор типичных ошибок в определениях

«Linux — это операционная система»
→
Linux — это ядро. Операционная система — дистрибутив: ядро плюс системные программы, оболочка и менеджер пакетов. Ubuntu и Fedora — разные ОС на одном ядре.
«Ядро и операционная система — одно и то же»
→
Ядро работает в привилегированном режиме и управляет ресурсами. В состав ОС входят ещё драйверы, системные библиотеки, службы и оболочка — они работают в пользовательском режиме.
«Терминал — это и есть Linux»
→
Терминал отображает работу оболочки — прикладной программы, обращающейся к ядру с запросом на запуск других программ. Замена оболочки bash на zsh не изменяет состав операционной системы.
«Windows однопользовательская: за компьютером сижу только я»
→
Признак определяется возможностями системы, а не фактическим числом пользователей. Windows поддерживает несколько учётных записей с разграничением файлов и прав, следовательно, относится к многопользовательским.

Вопрос на выход

Контрольный вопрос: путь запроса на запись файла

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

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

Дополнительный вопрос: чем такой путь дороже прямой записи в устройство и по каким причинам от него не отказываются.

Итог занятия · перечень результатов

Итоги занятия: проверяемые результаты

  • Назвать уровни между прикладной программой и аппаратным обеспечением и функции каждого из нихЭКРАНЫ 05, 24
  • Объяснить назначение двух режимов работы процессора на примере системного вызоваЭКРАН 10
  • Соотнести три этапа развития систем с тремя функциями современной ОСЭКРАНЫ 12–23
  • Разграничить понятия процесса, потока выполнения и программы на накопителеЭКРАНЫ 25, 26
  • Классифицировать собственную систему по шести признакам с обоснованием каждогоЭКРАН 46
  • Разграничить понятия ядра, дистрибутива и оболочкиЭКРАН 47
Следующая тема — структура операционной системы и её загрузка. Последовательность от подачи питания до экрана входа рассматривается по этапам и наблюдается в учебной виртуальной машине с Ubuntu.

Домашнее задание № 2 · к следующему занятию

Максим Николаевич не хочет задавать домашнее задание. Но очень хочет

  1. 1
    Классифицировать собственную систему по шести признакам

    Файл reports/os-types.md. Для каждого признака указываются значение, обоснование и наблюдение на собственном компьютере, подтверждающее вывод. К трём признакам из шести прилагается снимок экрана.

  2. 2
    Сравнить собственную систему с Ubuntu на виртуальной машине

    Таблица из пяти строк: ядро, файловая система, установка программ, оболочка, лицензия. Значения для Ubuntu определяются в собственной виртуальной машине командами uname -r, lsb_release -a и df -hT, а не берутся из внешних источников.

  3. 3
    Разобрать один этап хронологии и его последствие

    Записка на 8–12 строк: исходное состояние, предложенное решение, функция современной ОС, развившаяся из него, и цена этого решения. Событие выбирается из восьми этапов хронологии.

Мем про уверенного пользователя компьютера

Домашнее задание № 2 · порядок сдачи

Куда положить и как сдать

ФАЙЛЫ

В репозитории os-linux-course: reports/os-types.md, reports/compare-ubuntu.md и снимки экрана в assets/screenshots/.

ВЕТКА И PR

Ветка hw-02, коммиты с содержательными сообщениями, Pull Request в собственную ветку main. Слияние выполняется автором после проверки.

СРОК

До начала занятия 3. Классификация без наблюдений и таблица без вывода команд не принимаются.

КРИТЕРИИ

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

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

ОП.05 · Операционные системы и среды · 2 курс

Домашнее задание № 2

Занятие 2 — история, назначение, функции и классификация операционных систем

ОС/02

Максим Николаевич не хочет задавать вам домашнее задание. Но очень хочет.

Что нужно сделать

  1. Классификация собственной системы. Файл reports/os-types.md. Классифицируйте установленную на вашем компьютере операционную систему по шести признакам: число задач, число пользователей, назначение, интерфейс, время реакции, тип лицензии. Для каждого признака укажите три элемента: значение, обоснование выбора и наблюдение на вашем компьютере, подтверждающее вывод. К трём признакам из шести приложите снимок экрана с этим наблюдением.
  2. Сравнение с Ubuntu. Файл reports/compare-ubuntu.md. Таблица из пяти строк: ядро, файловая система, установка программ, оболочка командной строки, тип лицензии. Столбец собственной системы заполняется по вашему компьютеру, столбец Ubuntu — по виртуальной машине из практической работы № 1. Значения определяются по выводу команд uname -r, lsb_release -a и df -hT; вывод команд помещается в файл.
  3. Один этап хронологии. Записка на 8–12 строк в конце файла os-types.md. Выберите один этап из хронологии занятия (1945, 1956, 1964, 1969, 1981, 1984, 1991, 2007) и опишите: исходное состояние, предложенное решение, функцию современной операционной системы, развившуюся из него, и цену этого решения.

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

Как сдавать

ФайлыРепозиторий os-linux-course: reports/os-types.md, reports/compare-ubuntu.md, снимки экрана в assets/screenshots/. Изображения должны отображаться непосредственно на странице Markdown в GitHub.
Ветка и PRВетка hw-02, коммиты с содержательными сообщениями, затем Pull Request в собственную ветку main. Слияние выполняется автором после проверки.
СрокДо начала занятия 3.
ПроверяемШесть признаков с наблюдениями, три снимка экрана, пять строк сравнения с собственными значениями и приведённым выводом команд, записка об одном этапе хронологии.
ИИЗначения, наблюдения и вывод команд собираете сами: характеристики вашего компьютера модели неизвестны, и она их придумает. Оформление .md файла и редактуру формулировок можно поручить модели. Я сам так делаю всегда, поэтому и вам запрещать не буду. Содержание работы должно остаться вашим: классификацию вы будете объяснять на приёмке.

Словарь занятия

Операционная система
Комплекс программ, который управляет ресурсами компьютера — процессором, памятью, устройствами — и предоставляет их прикладным программам через единый интерфейс.
Ядро
Часть ОС, работающая в привилегированном режиме процессора. Управляет процессами, памятью, файловой системой и устройствами.
Системный вызов
Обращение программы к ядру за действием, которое ей самой недоступно: чтение файла, запуск процесса, отправка данных в сеть. В этот момент процессор переключается в привилегированный режим.
Процесс
Запущенная программа со своей областью памяти и состоянием. Находится в одном из состояний: готов, выполняется, ожидает.
Переключение контекста
Сохранение состояния одного процесса и восстановление состояния другого при передаче процессора. Требует времени, поэтому чрезмерно частые переключения снижают долю полезной работы.
Дистрибутив
Комплект программного обеспечения: ядро Linux, системные программы, оболочка, менеджер пакетов и конфигурация. Ubuntu, Debian, Fedora — различные дистрибутивы на одном ядре.
Реальное время
Свойство системы отвечать в гарантированный срок. При жёстком реальном времени опоздание считается отказом, при мягком — потерей качества.

ОП.05 «Операционные системы и среды» · занятие 2 · материалы колоды доступны в веб-презентации занятия.