6.15M
Category: informaticsinformatics

Лекция 4 (1)

1.

Операционные Системы и Среды | Лекция 4
Операционные Системы и Среды
Лектор: Васильев Александр Витальевич

2.

Операционные Системы и Среды | Лекция 4
Вспоминаем о Процессах (тезисы Лекции 3)
Программа ≠ Процесс. Программа — это статический набор инструкций, процесс — это
динамическая сущность.
Процесс — это созданная операционной системой виртуальная среда для выполнения
программы, нескольких программ или части программы. (Академическое определение)
Жизненный цикл процесса: Создание (Start) ➔ Готовность (Ready) (ждет в очереди на
исполнение) ➔ Выполнение (Running) (строго 1 на ядро) ➔ Сон (Sleep / Blocked) (ожидает I/O
операцию ) ➔ Завершение (Terminate) (завершение процесса)
Менеджментом процессов занимается планировщик ядра Операционной Системы
Существует несколько алгоритмов управления очередью процессов: FIFO, Round Robin и
Приоритетная очередь.
Нет ядра — нет менеджера процессов — нет процесса. А загружает ядро операционной
системы программа, которая называется загрузчиком. Об это далее.

3.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Аппаратный старт: POST и ROM Loader.
Каскад программ из ПЗУ / ROM (Постоянное Запоминающее Устройство или ROM — ReadOnly Memory) : При нажатии кнопки питания процессор начинает выполнять инструкции. Эти
первые программы не считываются с диска — они аппаратно зашиты в чипе ПЗУ (BIOS - Basic
Input/Output System — Базовая система ввода-вывода).
Процессор и адресное пространство: Процессор сразу видит эти инструкции в своем
адресном пространстве как готовые к выполнению, наряду с базовой оперативной памятью.
POST (Power-On Self-Test): Стадия самотестирования аппаратных средств самотестирование при включении питания. Система проверяет периферию и может
например выдать ошибку в вида: «Клавиатура не найдена, нажмите F1 для продолжения».
Передача в ROM Loader: Когда железо протестировано, управление передается финальной
микропрограмме из ПЗУ — ROM Loader (Загрузчик из ПЗУ).
Поиск носителя ОС: Операционной системы в памяти всё ещё нет. Задача ROM Loader —
определить доступное загрузочное оборудование (flash, дискета, жесткий диск), считать с
него самые первые байты следующего загрузчика и отдать ему управление.

4.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Аппаратный старт: MBR, PBR, OS Loader
Структура носителя (HDD/SSD): Жесткий диск логически поделен на независимые разделы
(partitions):
○ MBR (Master Boot Record): Главная загрузочная запись. Это первые 512 байт всего
физического диска. Именно сюда передает управление ROM Loader из ПЗУ.
○ PBR (Partition Boot Record): Загрузочная запись раздела. Это тоже первые 512 байт, но
уже не всего диска, а конкретного активного раздела.
Задача загрузчика MBR: прочитать таблицу разделов (Partition Table), найти среди них тот,
который помечен флагом «Активный» (загрузочный), и передать эстафету туда.
Задача загрузчика PBR: этот код прописывается самой операционной системой при ее
установке. Он уже «умнее»: код описывает структуру своего раздела и умеет находить в нем
настоящий загрузчик самой ОС (OS Loader).
Смысл цепочки (ROM ➔ MBR ➔ PBR ➔ OS Loader): Такая архитектура позволяет
реализовать мультизагрузку. Вы можете установить разные ядра (Windows, Linux) в разные
разделы, и просто меняя признак «Активности» у раздела, управлять тем, какая ОС
загрузится.

5.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Аппаратный старт.

6.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.
Вспоминаем Практическую Работу №2.

7.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.
OS Loader (Загрузчик ОС): Это уже полноценная программа-загрузчик (например, GRUB в
Linux или Windows Boot Manager). Он лежит внутри файловой системы активного раздела.
Загрузка Ядра (Kernel): Функция OS Loader — найти на диске сжатый бинарный файл ядра
(в Linux это vmlinuz, в Windows — ntoskrnl.exe) и распаковать его в оперативную память.
Модули ядра (.ko): Чистое ядро (см. практическая работа 2). Чтобы ядро могло общаться с
железом и читать файлы с диска, загрузчик подгружает в память минимальный стартовый
набор драйверов (модули контроллера шины, диска, файловой системы). Как только ядро и
модули загружены, ОС получает возможность управлять памятью и создавать виртуальные
среды для выполнения программ - ПРОЦЕССЫ.
Рождение процесса №1: Ядро вручную формирует самую первую виртуальную среду,
назначает ей идентификатор PID = 1 и помещает туда первую пользовательскую программу
инициализации (исторически init, сейчас systemd, а в Windows это smss.exe).
Смена ролей: Далее ядро перестает быть инициатором, оно ждет системных вызовов. Всю
остальную систему — службы, демоны, графику — начинает порождать процесс с PID 1.

8.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.
Вспоминаем Практическую Работу №2.

9.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.

10.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.
Вспоминаем Практическую Работу №2.

11.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Загрузка Ядра.
OS Loader (Загрузчик ОС): Это уже полноценная программа-загрузчик (например, GRUB в
Linux или Windows Boot Manager). Он лежит внутри файловой системы активного раздела.
Загрузка Ядра (Kernel): Функция OS Loader — найти на диске сжатый бинарный файл ядра
(в Linux это vmlinuz, в Windows — ntoskrnl.exe) и распаковать его в оперативную память.
Модули ядра (.ko): Чистое ядро (см. практическая работа 2). Чтобы ядро могло общаться с
железом и читать файлы с диска, загрузчик подгружает в память минимальный стартовый
набор драйверов (модули контроллера шины, диска, файловой системы). Как только ядро и
модули загружены, ОС получает возможность управлять памятью и создавать виртуальные
среды для выполнения программ - ПРОЦЕССЫ.
Рождение процесса №1: Ядро вручную формирует самую первую виртуальную среду,
назначает ей идентификатор PID = 1 и помещает туда первую пользовательскую программу
инициализации (исторически init, сейчас systemd, а в Windows это smss.exe).
Смена ролей: Далее ядро перестает быть инициатором, оно ждет системных вызовов. Всю
остальную систему — службы, демоны, графику — начинает порождать процесс с PID 1.

12.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Ключевые атрибуты процесса.
PID (Process ID): Уникальный идентификационный номер процесса в системе.
Напоминание: Прародитель всех процессов (init / systemd) всегда имеет строго PID 1.
VSZ (Virtual Memory Size): Объем виртуальной памяти, выделенной процессу операционной
системой. У системных (ядерных) процессов VSZ = 0. Они работают в общем адресном
пространстве самого ядра, поэтому ОС не выделяет им изолированную пользовательскую
виртуальную память.
RSS (Resident Set Size): Объем реальной физической оперативной памяти (RAM), которую
процесс занимает в железных планках памяти прямо сейчас (без учета того, что ушло в
Swap).
TTY: Терминал, к которому привязан процесс (его канал ввода-вывода для общения с
юзером).
○ Прикладные процессы: Имеют четкую привязку (например, pts/0, tty1), так как ждут
команд от человека.
○ Демоны и Системные процессы: В этой колонке стоит знак вопроса (?), так как они
работают в фоне и не имеют прямого интерфейса для пользователя.
Вывод: Комбинируя эти параметры, можно мгновенно классифицировать процесс в

13.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Ключевые атрибуты процесса.
Классификация процессов:
VSZ = 0 и TTY = ? ➔ Это системный процесс (часть ядра).
VSZ > 0 и TTY = ? ➔ Это демон (фоновая служба).
VSZ > 0 и TTY = pts/0 ➔ Это прикладной процесс (программа пользователя).
Команда ps (+ список ключей):
a (all): Показывать процессы всех пользователей в системе (а не только того, кто ввел
команду), которые привязаны к терминалам.
u (user format): Использовать детализированный формат вывода. Именно этот ключ
добавляет в таблицу те самые важные колонки: пользователя, %CPU, %MEM, VSZ, и RSS.
x (no terminal): Самый важный ключ для понимания архитектуры! Показывает процессы, не
привязанные ни к какому терминалу. Без ключа x мы бы не увидели ни демонов, ни
системных процессов ядра (у которых в колонке TTY стоит знак ?).

14.

Операционные Системы и Среды | Лекция 4
Ядро и Процессы в ОС Unix. Классы процессов.
1. Системные процессы (Остов ядра и Модули *.ko):
Суть: Это части самой операционной системы (драйверы, планировщик), которые крутятся в памяти. В выводе ps
их имена часто заключены в квадратные скобки (например, [kworker]). VSZ = 0, TTY = ?
У них нет своей изолированной пользовательской памяти, они живут в общем адресном пространстве ядра, и не
общаются с пользователем.
2. Демоны (Daemons / Фоновые службы): Программы, которые запускаются процессом init (PID=1) при старте
системы и тихо работают в фоне, ожидая событий (например, веб-сервер, служба печати, SSH). VSZ > 0, TTY = ?
Это уже полноценные пользовательские процессы со своей выделенной виртуальной памятью. Демон отвязан от
экрана и клавиатуры, он работает молча.
3. Прикладные процессы (Пользовательские): Программы, которые запускает сам пользователь через
командный интерпретатор (bash, shell) или GUI. VSZ > 0, TTY > 0
Выделяется полный объем необходимой памяти. Терминал (TTY): Жесткая привязка (например, tty1 или pts/0). У
процесса есть канал общения: он знает, откуда брать ввод с клавиатуры и куда выплевывать текст на экран.

15.

Операционные Системы и Среды | Лекция 4
Дерево процессов Windows (NT Architecture).
Вводный тезис: первые 4 этапа загрузки абсолютно идентичны для любой операционной системы (Linux,
Windows). Процессор и материнская плата не знают, какая ОС установлена. Различия начинаются только
в момент работы OS Loader'а.
Общая аппаратная часть (Этапы 1–4):
ROM: Включение питания ➔ POST (тест железа) ➔ Передача управления загрузчику из ПЗУ на диск.
MBR: Чтение нулевого сектора физического диска ➔ Анализ Таблицы разделов ➔ Переход на
Активный раздел.
PBR: Чтение нулевого сектора Активного раздела ➔ Поиск файла-загрузчика ОС в файловой
системе.
Старт OS Loader: Запуск найденного загрузчика. На этом общая часть заканчивается.

16.

Операционные Системы и Среды | Лекция 4
Дерево процессов Windows (NT Architecture).
Загрузчик (OS Loader): Управляет процессом BOOTMGR (вместо юниксового GRUB). Он читает
конфигурацию из хранилища BCD и запускает среду winload.exe.
Остов Ядра (Kernel): В оперативную память грузится ntoskrnl.exe (полный аналог линуксового
vmlinuz).
Системные процессы (Модули): Ядро подтягивает драйверы оборудования — файлы .sys (аналог
юниксовых .ko) и базовый диспетчер распределения ntalloc.exe (та самая цифровая ловушка для
читеров, о которой мы говорили).
Первый процесс (Аналог INIT): Ядро порождает процесс smss.exe (Session Manager Subsystem). Он
берет на себя роль init, разделяя систему на изолированные сессии (Session 0 для служб, Session 1+
для пользователей).
Службы и Интерпретатор:
○ Для фоновых задач запускается services.exe (аналог демонов).
○ Для общения с юзером грузится графическая оболочка explorer.exe (Проводник и Рабочий
стол как аналоги терминала и bash).

17.

Операционные Системы и Среды | Лекция 4
English     Русский Rules