---
# System prepended metadata

title: Операционная система

---

# Операционная система
### Архитектура ОС
![](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)





