Блог "Дети ОИТа"
/поиск

Операционная система (ОС)

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

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

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

В этой статье мы подробно рассмотрим историческую периодизацию ОС, их основные типы и архитектурные подходы.

Английские сокращения

Сокращение Английское обозначение Русское обозначение
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).
  • Менеджер памяти (виртуальная память, страничная организация, кэш).
  • Файловая система (иерархическая, монтирование, права доступа).
  • Подсистема ввода-вывода (драйверы, буферизация, обработка прерываний).
  • Подсистема сети (стек протоколов, сокеты, маршрутизация).
  • Защита и безопасность (разграничение доступа, аудит, шифрование).