Операционная система (ОС)
Операционная система (ОС) — это комплекс программного обеспечения, который управляет аппаратными ресурсами компьютера и предоставляет прикладным программам стандартизированный интерфейс доступа к ним.
Операционная система (ОС) — это комплекс программного обеспечения, который управляет аппаратными ресурсами компьютера и предоставляет прикладным программам стандартизированный интерфейс доступа к ним. ОС выполняет две основные функции: управление ресурсами (процессорное время, память, устройства ввода-вывода) и предоставление виртуальной машины, упрощающей разработку приложений.
Эволюция операционных систем насчитывает более семидесяти лет. За это время сменилось несколько поколений — от отсутствия ОС на первых электронно-вычислительных машинах до современных распределённых, облачных и мобильных систем. Параллельно с поколениями сложилась классификация типов ОС по различным критериям: назначение, количество пользователей, архитектура ядра, режим обработки задач и т.д.
В этой статье мы подробно рассмотрим историческую периодизацию ОС, их основные типы и архитектурные подходы.
Английские сокращения
| Сокращение | Английское обозначение | Русское обозначение |
| OS | Operating System | операционная система |
| RTOS | Real-Time Operating System | операционная система реального времени |
| API | Application Programming Interface | интерфейс прикладного программирования |
| CLI | Command Line Interface | интерфейс командной строки |
| GUI | Graphical User Interface | графический интерфейс пользователя |
| SMP | Symmetric Multiprocessing | симметричная многопроцессорная обработка |
| NUMA | Non-Uniform Memory Access | неоднородный доступ к памяти |
| IPC | Inter-Process Communication | межпроцессное взаимодействие |
| RPC | Remote Procedure Call | удалённый вызов процедур |
| VM | Virtual Machine | виртуальная машина |
| EXE | Executable (execution image) | исполняемый файл (образ процесса) |
Русские сокращения
| Сокращение | Обозначение |
| ОС | операционная система |
| ПК | персональный компьютер |
| ЭВМ | электронная вычислительная машина |
| МП | многопроцессорная обработка |
| В/В | ввод-вывод |
Периодизация поколений отражает технические возможности аппаратного обеспечения и эволюцию методов управления ресурсами.
Поколение 0 (1940-е – начало 1950-х): отсутствие ОС
Первые ЭВМ (ENIAC, UNIVAC I, Z3) не имели операционных систем. Программист единолично управлял машиной с пульта, вводил программу в машинных кодах, запускал и считывал результат. Основные недостатки:
- Низкая утилизация процессора (простой между задачами).
- Ошибки ввода-вывода останавливали вычисления.
- Отсутствовала стандартизация.
Первое поколение (середина 1950-х – начало 1960-х): пакетная обработка
С появлением носителей информации (перфокарты, магнитные ленты) появились мониторы-резиденты — предшественники ОС. Монитор управлял очередностью заданий (пакетов), автоматически загружал программы и обрабатывал прерывания.
Типичные системы: GM-NAA I/O для IBM 704 (1956), IBSYS для IBM 7090. Характеристики:
- Однозадачность (одно задание в памяти).
- Последовательная загрузка.
- Появление первых драйверов устройств.
Второе поколение (1960-е – начало 1970-х): мультипрограммирование и разделение времени
С внедрением мультипрограммирования (несколько задач в оперативной памяти) выросли требования к управлению памятью и защите. Появились системы разделения времени (time-sharing): CTSS, Multics (проект MIT, GE, Bell Labs), UNIX (1969).
Ключевые инновации:
- Многозадачность (псевдопараллельное выполнение).
- Виртуальная память (на основе страничной или сегментной организации).
- Файловые системы иерархической структуры.
- Командный интерпретатор (shell) для интерактивной работы.
UNIX (Ken Thompson, Dennis Ritchie) стал эталоном переносимой ОС, написанной на языке высокого уровня (C).
Третье поколение (1970-е – середина 1980-х): мини-компьютеры и первые ПК
С появлением микропроцессоров (Intel 4004, 8080) возникли персональные компьютеры. Для них создавались простые ОС:
- CP/M (Control Program/Monitor) для компьютеров на Z80 (1974).
- Apple DOS (1978) для Apple II.
- MS-DOS (1981) для IBM PC — однозадачная, командная, без защиты памяти.
В это же время в мире мини-компьютеров (DEC PDP-11) развивался UNIX (Version 6, 7), а также специализированные системы реального времени (RSX-11, VMS).
Четвёртое поколение (1985 – 2000): графические интерфейсы, сетевые ОС, Windows и Linux
Характерные черты:
- Массовое внедрение графического пользовательского интерфейса (GUI).
- Сетевая интеграция (TCP/IP, NFS, SMB).
- Переход на 32-разрядную архитектуру.
Ключевые события:
- 1985: Windows 1.0 (надстройка над MS-DOS).
- 1988: NeXTSTEP (объектно-ориентированный UNIX, предтеча macOS).
- 1991: Linux (Линус Торвальдс) — свободное ядро, совместимое с UNIX.
- 1993: Windows NT 3.1 (гибридное ядро, 32-бит, многозадачность, поддержка SMP).
- 1995: Windows 95 (интеграция GUI и MS-DOS, Plug and Play).
- 1997: macOS (изначально Mac OS 8, основан на классической Mac OS, позже — на NeXTSTEP).
В этот же период активно развиваются серверные ОС: FreeBSD, Solaris, HP-UX, AIX.
Пятое поколение (2000 – настоящее время): мобильные, облачные, виртуализация, контейнеризация
Современные тенденции:
- Мобильные ОС: iOS (2007, на основе XNU/macOS), Android (2008, ядро Linux).
- Виртуализация и гипервизоры (VMware, Xen, KVM, Hyper-V).
- Контейнеризация (Docker, LXC, rkt) — изоляция на уровне ОС.
- Облачные платформы (AWS, Azure, GCP) с управляемыми ОС.
- Распределённые файловые системы и отказоустойчивые кластеры.
- Бессерверные архитектуры (FaaS, Lambdas) — ОС остаётся скрытой.
- Развитие RTOS для IoT и встраиваемых систем (FreeRTOS, Zephyr, QNX).
По назначению
| Тип | Описание | Примеры |
| Общего назначения | для широкого круга задач (офис, интернет, игры) | Windows 10/11, macOS, Linux Desktop, BSD |
| Серверные | оптимизированы для обслуживания клиентов, служб | Windows Server, Red Hat Enterprise Linux, Ubuntu Server, FreeBSD |
| Реального времени (RTOS) | гарантированное время отклика на события | QNX, VxWorks, FreeRTOS, Zephyr |
| Встраиваемые | работа на микроконтроллерах без интерфейса пользователя | ThreadX, Mbed OS, RIOT |
| Мобильные | для смартфонов и планшетов | Android, iOS, HarmonyOS, KaiOS |
| Мейнфреймов | высокопроизводительные, пакетная и транзакционная обработка | z/OS, z/VM, MUSIC/SP |
По количеству пользователей
- Однопользовательские: ОС персональных компьютеров (MS-DOS, Windows 95/98/Me, классическая Mac OS). Важно: даже Windows 2000/XP многопользовательские в смысле учётных записей, но термин «многопользовательская» означает одновременную интерактивную работу нескольких пользователей через терминалы.
- Многопользовательские: UNIX, Linux, Windows Server (терминальные службы), з/OS. Обеспечивают разделение ресурсов и защиту.
По количеству задач
- Однозадачные: MS-DOS, CP/M, ранние версии Apple DOS.
- Многозадачные: современные ОС.
- Кооперативная многозадачность: задачи сами передают управление (Windows 3.x, классические Mac OS до 9) — нестабильно.
- Вытесняющая многозадачность: система прерывает задачу по таймеру (Windows NT, Linux, macOS, OS/2).
По архитектуре ядра
| Архитектура | Описание | Примеры |
| Монолитное ядро | все компоненты (управление процессами, памятью, драйверы) в одном адресном пространстве | Linux, FreeBSD, Windows (гибрид, но близко к монолитному) |
| Микроядро | только минимальные механизмы (IPC, базовая планировка), остальное — серверы пользовательского режима | QNX, L4, Minix 3 |
| Гибридное ядро | компоненты в ядре, но некоторые вынесены; компромисс производительности и надёжности | Windows NT, XNU (macOS/iOS), DragonFly BSD |
| Экзоядро | минимальная абстракция ресурсов, библиотеки ОС в пользовательском режиме | ExOS, Nemesis (исследовательские) |
| Наноядро | ещё меньше, чем микроядро (только аппаратные абстракции) | Eumel, некоторые исследовательские |
По типу интерфейса
- CLI (интерфейс командной строки): оболочки sh, bash, cmd.exe, PowerShell.
- GUI (графический интерфейс): Windows Explorer, Finder (macOS), GNOME, KDE, Unity, Xfce.
По режиму обработки
- Пакетной обработки: задания выполняются без участия оператора (mainframe).
- Разделения времени: интерактивная работа многих пользователей (UNIX, Linux, Windows Server Terminal Services).
- Реального времени: жёсткое (hard) и мягкое (soft) реальное время (RTOS, Windows RT).
- Пакетно-интерактивные (гибридные).
По поддержке аппаратной архитектуры
- 32-разрядные: Windows 9x/NT/2000/XP (32-bit), Linux i386.
- 64-разрядные: современные ОС (x86-64, ARM64, IA-64).
- Распределённые (кластерные): Beowulf, Plan 9, Inferno.
- Мультипроцессорные (SMP, NUMA): все современные серверные ОС.
По сфере применения
| Сфера | Примеры ОС |
| Персональные компьютеры | Windows, macOS, Linux Desktop, ChromeOS |
| Серверы и дата-центры | Windows Server, Linux (Red Hat, Debian, SUSE), BSD |
| Суперкомпьютеры | Linux (специализированные дистрибутивы: Cray OS, IBM Spectrum LSF) |
| Встраиваемые системы | FreeRTOS, ThreadX, VxWorks, Zephyr |
| Мобильные устройства | Android, iOS, KaiOS, Tizen, Sailfish OS |
| Сетевые устройства | Cisco IOS, Juniper JunOS, OpenWrt, DD-WRT |
@startuml
title Поколения операционных систем
' timeline
|0-е поколение|
:1940–1955\nБез ОС, ручное управление;
|1-е поколение|
:1955–1965\nПакетная обработка, мониторы-резиденты;
|2-е поколение|
:1965–1975\nМультипрограммирование,\nразделение времени, UNIX;
|3-е поколение|
:1975–1985\nМиникомпьютеры, первые ПК,\nCP/M, MS-DOS;
|4-е поколение|
:1985–2000\nGUI, сетевые ОС,\nWindows NT, Linux;
|5-е поколение|
:2000–н.в.\nМобильные ОС, облака,\nвиртуализация, контейнеры;
@enduml
@startuml
left to right direction
rectangle "Операционные системы" as os
os --> (По назначению)
os --> (По архитектуре ядра)
os --> (По пользователям)
os --> (По задачам)
os --> (По интерфейсу)
(По назначению) --> Общего
(По назначению) --> Серверные
(По назначению) --> RTOS
(По назначению) --> Мобильные
(По назначению) --> Встраиваемые
(По архитектуре ядра) --> Монолитное
(По архитектуре ядра) --> Микроядро
(По архитектуре ядра) --> Гибридное
(По архитектуре ядра) --> Экзоядро
(По пользователям) --> Однопользовательские
(По пользователям) --> Многопользовательские
(По задачам) --> Однозадачные
(По задачам) --> Многозадачные
(По интерфейсу) --> CLI
(По интерфейсу) --> GUI
@enduml
Простейший скрипт на Python, показывающий информацию об операционной системе (имитация системного вызова). Без фанатизма.
import platform
import sys
def show_os_info():
print(f"ОС: {platform.system()} {platform.release()}")
print(f"Версия: {platform.version()}")
print(f"Архитектура: {platform.machine()}")
print(f"Python: {sys.version}")
if __name__ == "__main__":
show_os_info()
При выполнении на разных ОС результат будет разным — этот фрагмент иллюстрирует, что прикладная программа видит через API ОС.
| ОС | Тип ядра | Многозадачность | Многопользовательск. | GUI (родной) | Лицензия |
| Windows 11 | гибридное | вытесняющая | да (терминалы) | да | проприетарная |
| Linux (ядро) | монолитное (с модулями) | вытесняющая | да | нет (X11/Wayland) | GPLv2 |
| macOS | гибридное (XNU) | вытесняющая | да | да (Aqua) | проприетарная + открытые компоненты |
| FreeBSD | монолитное (модули) | вытесняющая | да | нет (X11) | BSD |
| Android | Linux (модифицир.) | вытесняющая | да (профили) | да (Material) | Apache 2.0 / GPLv2 |
| iOS | XNU (из macOS) | вытесняющая | да (один пользователь, но многозадачный) | да | проприетарная |
| QNX | микроядро | вытесняющая (RT) | да | нет (опционально) | проприетарная / академическая |
| FreeRTOS | монолитное (маленькое) | вытесняющая (RT) | однопользовательская | нет | MIT |
Хотя это не центральная тема статьи, для полноты картины перечислим ключевые подсистемы:
- Диспетчер процессов (планирование, синхронизация, IPC).
- Менеджер памяти (виртуальная память, страничная организация, кэш).
- Файловая система (иерархическая, монтирование, права доступа).
- Подсистема ввода-вывода (драйверы, буферизация, обработка прерываний).
- Подсистема сети (стек протоколов, сокеты, маршрутизация).
- Защита и безопасность (разграничение доступа, аудит, шифрование).