1. Введение в архитектуру ОС: история развития, функции ядра и системные вызовы
Введение в архитектуру ОС: история развития, функции ядра и системные вызовы
Добро пожаловать в курс «Основы операционных систем». Представьте, что вы купили самый современный, мощный и дорогой компьютер. У него лучший процессор, гигабайты оперативной памяти и сверхбыстрый диск. Но если на нём не установлена операционная система (ОС), это «железо» — просто груда дорогого металла и пластика. Оно не умеет ничего: ни показать картинку, ни сохранить файл, ни даже отреагировать на нажатие клавиши.
В этой статье мы разберем, как операционная система оживляет компьютер, какой путь она прошла от перфокарт до смартфонов, и что находится у неё «под капотом».
Что такое операционная система?
Операционная система — это комплекс программ, который управляет аппаратным обеспечением компьютера и предоставляет среду для выполнения пользовательских программ. Это посредник между вами (и вашими приложениями) и «железом».
Лучшая аналогия для ОС — это дирижер оркестра. * Музыканты — это аппаратные ресурсы (процессор, память, диск). * Ноты — это программы, которые нужно исполнить. * Дирижер (ОС) — не играет на инструментах сам, но указывает, кому и когда вступать, следит за темпом и предотвращает какофонию, когда все пытаются играть одновременно.
!Структура компьютерной системы: от пользователя к железу.
История развития: от вакуумных ламп до облаков
Чтобы понять архитектуру современных систем, нужно взглянуть на то, какие проблемы решали инженеры в прошлом.
Первое поколение (1945–1955): Вакуумные лампы и коммутационные панели
В те времена операционных систем не существовало вовсе. Компьютеры были огромными машинами, занимавшими целые залы. Программисты работали непосредственно с аппаратурой, соединяя провода на коммутационных панелях. Это был «чистый» режим работы с железом. Если программа зависала, нужно было физически перезагружать машину.Второе поколение (1955–1965): Транзисторы и пакетная обработка
С появлением транзисторов компьютеры стали надежнее. Появилась первая концепция ОС — системы пакетной обработки. Чтобы не терять дорогое машинное время, пока оператор меняет ленты, задания собирались в «пакет» (batch) и скармливались компьютеру одно за другим.Третье поколение (1965–1980): Интегральные схемы и мультипрограммирование
Это был революционный этап. Появилась идея мультипрограммирования. Процессор работал намного быстрее, чем устройства ввода-вывода (например, считыватели перфокарт). Пока одна программа ждала данные, процессор простаивал.Мультипрограммирование решило эту проблему: память разбивалась на части, и в ней находилось сразу несколько программ. Когда одна ждала ввода-вывода, ОС переключала процессор на другую.
Для оценки эффективности мультипрограммирования используется следующая формула загрузки процессора:
Где: * — коэффициент использования процессора (Utilization). * — доля времени, которую процесс проводит в ожидании ввода-вывода (например, 0.5 или 50%). * — количество процессов в памяти. * — единица, представляющая полное время.
Пример: Если процесс тратит 80% времени на ожидание ввода-вывода (), то при одном процессе () процессор занят только 20% времени. Но если запустить 3 таких процесса, загрузка вырастет: , то есть почти 49%.
Четвертое поколение (1980–настоящее время): Персональные компьютеры
Появление LSI (больших интегральных схем) привело к созданию ПК. Операционные системы стали дружелюбными к пользователю (GUI — графический интерфейс), появилась поддержка сетей и распределенных вычислений.Архитектура ОС: Ядро и режимы работы
Сердцем любой операционной системы является Ядро (Kernel). Это та часть программы, которая загружается в память первой при включении компьютера и остается там до самого выключения.
Защита: Кольца привилегий
Главная задача архитектуры — надежность. Если обычная программа (например, игра) зависнет, она не должна «убить» весь компьютер. Для этого процессоры поддерживают как минимум два режима работы:!Переключение между пользовательским режимом и режимом ядра.
Типы ядер
Существует два основных подхода к построению ядра:* Монолитное ядро: Вся ОС (файловая система, драйверы, управление памятью) работает как одна большая программа в режиме ядра. Это быстро, но если драйвер видеокарты упадет, упадет вся система. (Примеры: Linux, ранние Windows). * Микроядро: В режиме ядра работает только самый минимум (передача сообщений, управление процессами). Драйверы и файловые системы вынесены в режим пользователя. Это надежнее, но медленнее из-за постоянных переключений. (Примеры: Minix, QNX).
Основные функции ядра
Чем именно занимается ядро? Можно выделить пять ключевых функций:
Системные вызовы (System Calls)
Как программа в режиме пользователя может прочитать файл, если доступ к диску разрешен только в режиме ядра? Она должна «попросить» об этом операционную систему.
Системный вызов — это интерфейс между приложением и ядром. Это специальная команда, которая говорит процессору: «Переключись в режим ядра, выполни эту функцию ОС и верни мне результат».
Представьте ресторан: * Вы (приложение) сидите за столиком. * Кухня (ядро/железо) готовит еду. * Вы не можете просто зайти на кухню и взять стейк (это небезопасно и нарушает правила). * Вы зовете официанта (системный вызов) и просите его принести заказ.
Примеры системных вызовов (в мире UNIX/Linux):
*fork() — создать новый процесс (копию текущего).
* read() — прочитать данные из файла.
* write() — записать данные в файл или на экран.
* open() — открыть файл для работы.Когда вы в программе на Python пишете `print(