# Операционная система ### Архитектура ОС ![](https://i.imgur.com/Q3LKqDT.png) ### Виды операционных систем: 1. Процедурная ограничена или ограничивает действия пользователя (Windows нельзя форматировать диск) 2. Проектная ОС - дает возможность делать все (Linux) ### Архитектура ОС Windows ![](https://i.imgur.com/EXEj4GY.png) Режим ядра * HAL - предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы, таким образом, чтобы большая часть кода, работающая в режиме ядра, не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением. * Ядро - низкоуровневая основа любой ОС, выполняемая аппаратурой в особом привилегированном режиме. Ядро загружается в память один раз и находится в памяти резидентно – постоянно, по одним и тем же адресам * Драйвера - содержат аппаратно-зависимый код и обеспечивают трансляцию пользовательских вызовов, запросы специфичные для конкретных устройств * Исполняемые компоненты - все что должно контролироваться ОС. Режим пользователя - системы передают запросы ввода-вывода соотвевтсвующему драйверу с помощью менеджера ввода-вывода. 1. Внутренняя подсистема 1.1 подсистема безопаности - разрешает или запрещает доступ к учетной записи пользователя 1.2 Служба рабочая станция - доступ к сети 1.3 Служба сервер - позволяет предоставить сетевые ресурсы 2. Внешняя подсистема Типы пользовательяских приложений, которые могут быть запущены на системе Windows ### Архитектура Linux ![](https://i.imgur.com/9AvdQud.png) ### Ядро ![](https://i.imgur.com/vlnSRpw.png) ![](https://i.imgur.com/7NYMZiG.png) ![](https://i.imgur.com/OJSMhMJ.png) ![](https://i.imgur.com/AFQG9gH.png) ![](https://i.imgur.com/Xq3umz2.png) Ядро - виртуальная машина для процессоров ### Подсистемы ядра 1. Планировщик процессов - контроль над доступом процессов к центрального процессору 2. Менеджер памяти - обеспечивает различным процессам безопасный доступ к основной памяти системы, работа вирутальной памяти(Swapping) 3. Виртуальная файловая система - создает абстрактный слой, скрывая детали оборудования (в линукс все что в компе - файлы) 4. Сетевые интерфейсы - обеспечивает работу с разными сетевыми стандартами и оборудованием 5. Межпроцессорная подсистема - подсистема, которая используется процессами для поддержания различных механизмов обмена внутри системы. ![](https://i.imgur.com/282Yv5F.png) ### Уровни потоков Потоки на уровне пользователя - ядро думает, что работает только 1 процесс, а информация о потоков отсутвует. система хранит таблицу потоков для отслеживания. +: потоки могут быть реализованы на всех ОС которые поддерживают эти потоки, переключение потоков происходит быстрее, тк не надо обращаться к ядру. -: при выполнение блокирующего вызова блокируются все потоки, невозможно планировать промежутка времени потокам Потоки на уровне ядра - на стороне ядра происходит отслеживание всех потоков. +: блокируется только 1 поток -: создание и уничтожение требуют высоких затрат ### Виды синхронизации потоков 1. взаимоисключения (mutex) - флаг переходящий к потоку, который может работать с ресурсом. Заставляет приложение каждый раз обращаться к ядру ОС 2. Семафор - ограничивает число потоков, имеющих доступ к потоку 3. События - пользователь определяет условие, при котором наступает передача управления нудному потоку 4. Кретическая секция - ядро задействуется если секция занята и нужно включить семафор, в остальном поток выполняется в пользовательском режиме, секция можно использовать в рамках 1 процесса. ### Планировщик Планировщик используется в многопоточных системах - выбрает какой поток будет работать Вызывается при создании нового потока, завершении потока, при блокировке, прерывание ввода-вывода. ![](https://i.imgur.com/GLWZ7zv.png) 1. Обработчик прерывания - функция запускается ядром в ответ на постулпение определенного прерывания 2. Планировщик - вызвал прерывание 3. Переключение контекста - процесс сохранения состояния прерванного потока и загрузка состояния следующего потока. ### Ядро Linux ![](https://i.imgur.com/COJNaVD.png) ![](https://i.imgur.com/487NIVE.png) ![](https://i.imgur.com/bravWHf.png) ![](https://i.imgur.com/bav6kpI.png) ![](https://i.imgur.com/ntVnXuH.png)