Что такое операционная система
Зачем нужна ОС
Представьте, что каждая программа сама управляет диском, распределяет память, решает, когда ей работать на процессоре, и следит, чтобы не испортить данные соседей. Это было бы сложно, опасно и неэффективно. Эти задачи берёт на себя операционная система.
Операционная система — комплекс программ, который (1) управляет ресурсами вычислительной системы и (2) предоставляет программам удобный интерфейс к аппаратуре.
Роль 1: менеджер ресурсов
Ресурсы компьютера: процессор, память, устройства ввода-вывода, файлы, сеть. ОС решает:
- кому выдать ресурс (планирование);
- как защитить ресурс одного процесса от другого (изоляция, права доступа);
- как разделить ресурс между многими (мультиплексирование во времени — процессор; в пространстве — память, диск).
Роль 2: расширенная машина
Программисту не нужно знать, как устроен контроллер диска. ОС предлагает абстракции:
| Аппаратура | Абстракция ОС | Интерфейс |
|---|---|---|
| процессор | процесс, поток | fork, exec, pthread_create |
| физическая память | виртуальное адресное пространство | mmap, brk |
| диск | файл, каталог | open, read, write |
| сеть | сокет | socket, connect, send |
| терминал | файл устройства /dev/tty |
read, write, ioctl |
Каждый процесс «думает», что у него есть собственный процессор и собственная память — это и есть виртуализация ресурсов.
Аналогия
ОС — администратор гостиницы. Постояльцы (процессы) получают «свои» номера (адресные пространства) и пользуются общими лифтами и ресторанами (устройствами) по очереди, а администратор следит, чтобы никто не зашёл в чужой номер.
Ядро и пространство пользователя
Центральная часть ОС — ядро (kernel). Оно работает в привилегированном режиме ядра процессора. Остальные программы — в режиме пользователя и не могут напрямую трогать устройства, таблицы страниц или чужую память.
Попасть в ядро можно только через определённые «двери»: системные вызовы, прерывания от устройств и исключения процессора. Подробно — через урок.
Подсистемы ядра
| Подсистема | Чем занимается | Где встретим в курсе |
|---|---|---|
| управление процессами | создание (fork), планирование, завершение |
модуль «Процессы» |
| сигналы | асинхронные уведомления | модуль «Сигналы» |
| управление памятью | таблицы страниц, страничные отказы, замещение | модуль «Виртуальная память» |
| файловая подсистема | VFS, конкретные ФС, кеш страниц | модуль «Файловые системы» |
| IPC | каналы, разделяемая память, семафоры | модуль «Синхронизация» |
| драйверы | работа с устройствами | урок про устройства |
Стандарт POSIX
Чтобы программы переносились между Unix-подобными системами (Linux, FreeBSD, macOS), интерфейс ОС стандартизован: POSIX описывает системные вызовы и функции (fork, exec, kill, mmap, pthread_*), сигналы, утилиты shell. Всё, что мы изучаем, — POSIX плюс особенности Linux.
Итог
- ОС управляет ресурсами и даёт программам удобные абстракции.
- Абстракции: процесс, виртуальная память, файл, сокет.
- Ядро работает в привилегированном режиме; программы попадают в него через системные вызовы, прерывания и исключения.
Практика решено 0 из 4
Какими ресурсами управляет операционная система?
Что означает «ОС как расширенная (виртуальная) машина»?
Какая абстракция ОС заменяет каждый аппаратный ресурс?
| Процесс / поток | Виртуальная память | Файл | Сокет | |
|---|---|---|---|---|
| Процессор | ||||
| Физическая память (RAM) | ||||
| Блоки диска | ||||
| Сетевая карта |
Чем режим ядра отличается от режима пользователя?
Войдите, чтобы отмечать пройденные уроки.