Files
University-notes/2 курс/2 семестр/Операционные системы/Введение.md
2025-06-22 19:34:46 +03:00

201 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Операционная система** - программное обеспечение, управляющее аппаратными ресурсами и предоставляющее прикладным программам удобные абстракции ^bd03ae
- Как *менеджер ресурсов* - управляет ресурсами, отслеживая их состояние и планируя их использование.
Виды ресурсов:
- вычислительные ресурсы (ЦП)
- оперативная память и уст-ва долговременного хранения данных (жесткий диск и т.д.)
- устройства ввода/вывода
- сетевые соединения
- Как *виртуальная машина* - выполняет абстрагирование аппаратного обеспечения до уровня логических ресурсов ОС с четко определенными интерфейсами. Поддерживает абстракции, которых не существует на аппаратном уровне.
- Аппаратные ресурсы - абстракции ОС
- Жёсткий диск - ФС
- Принтеры - очередь печати
- ЦП - поток
- ОЗУ - процесс
[[#^bd03ae|ОС]] формирует **операционную среду** - среду выполнения ПО
Условия выполнения программ: ^ed3cc0
- Мн. команд ЦП, доступное ПО
- Мн. сис. функ. ОС, доступное ПО
- Тип и структура ВАП (Виртуальное Адресное Пространство) ПО, использующей модель адресации
**Spool** - одновременное выполнение нескольких операций в переферии
**Многозадачность** - свойство ОС, позволяющее обрабатывать несколько задач параллельно.
В ОЗУ загружаются несколько процессов. IO одного процесса выполняется параллельно с вычислениями другой
Цель - оптимизация пропускной способности системы
**ОС разделения времени** - подход, который требуется для интерактивной работы, при котором у одной ЭВМ несколько терминалов и каждый пользователь считает, что ему польностью выделена вычислительная система
Для её реализации, была создана идея разделения времени - *Timeslicing*. Задачи:
- Распределение времени ЦП равномерно между пользователями
- Если задача интерактивная, нужно переключаться между пользователями и ПО быстрее, чем пользователи производят ввод
- Пользователи могут интерактивно просматривать, редактировать и отдаэивать выполняющиеся программы
Классификация ОС по назначению:
- Системы пакетной обработки (максимальная пропускная способность)
- Системы разделения времени (удобство и эффективность работы пользователя)
- ОС реального времени (способность выдерживать заданные интервалы времени между возникновением события и завершения его обработки)
По режиму обработки задач:
- По поддержке многозадачности
- однозадачные
- многозадачные
- По поддержке многопоточности
- По поддержке многопроцессорной обработки
По организации пользовательской работы
- Однопользовательские и многопользовательские
- Односессионные и многосессионные
**Монолитная архитектура ОС** - система, построенная с помощью монолитного ядра
**Монолитное ядро** - множество процедур, которые
- выполняются на одном уровне привелегий
- используют одно множество данных
- вызывают друг друга непосредственно (без спец. механизмов)
**Многослойная (уровневая) архитектура ОС** - ОС разбивается на несколько компонентов, между которыми выстраивается вертикальная архитектура (каждый компонент может взаимодействовать только со своими соседями)
**Микроядерная архитектура ОС** - архитектура, основная идея которой минимизация объёма кода, выполняющегося на уровне ядра. На микроядре реализуют минимальный функционал ОС. Всё остальное - прикладные программы
*Плюсы*:
- понятная архитектура
- устойчивая система
- возможность скомпоновать ОС под определённые нужны
*Минусы*:
- низкая производительность
- медленная работа из-за переходов между компонентами через ядро
**Архитектура, основанная на ВМ** - архитектура, основная идея которой является то, что ОС поддерживает отдельные копии [[#^ed3cc0|операционных сред]] для разных работающих приложений (для разделение работы)
Позже появилась поддержка аппаратного виртуального обеспечения, которое произволится с помощью специального ПО
*Плюсы*:
- падение одного приложение не повлечёт отказ остальных
*Минусы*:
- низкая производительность реальной ОС при IO-операциях
**Паравиртуализация** - идея, суть которой в том, что при выполнении некоторого набора операций ОС, работающая на ВМ, напрямую вызывает хостовую ОС, которая работает с реальным аппаратным обеспечением
*Ограничение*: хостовая и гостевая ОС должны быть одинаковыми
**Расширяемость** - возможность модификации, ничего не сломав (модульность, объектная и микроядерная архитектура)
**Переносимость** - возможность переноса кода на другую аппаратную платформу. Повысить переносимость можно:
- использовав ЯВУ
- оптимизировав код
- локализировав и изолировав код
**Совместимость** - способность выполнять программы, написанные для других ОС (или более старых версий себя), а также другой архитектуры
**Безопасность** - защиты ресурсов пользователей друг от друга. Категории:
- D - нет требований
- C - наличие подсистемы учёта событий безопасности
- C2 = есть средство входа, права к объектам, аудит безопасности, защита памяти
- B - использование помеченных данных и распределение пользователей по категориям
- A - наличие формального доказательства соответствия системы требованиям безопасности
**Windows NT**
*Уровень аппаратной абстракции* - обеспечивает вышележащим уровням приемлимые абстракции hardware
*Ядро* - планирование, обработка прерываний и исключений, многопроцессорность, обработка сбоев
*Менеджер объектов* - создаёт, удаляет и управляет объектами (выделение памяти, управление дескрипторами, каталогами объектов)
*Монитор безопасности* - устанавливает правила защиты на локальный компьютер
*Менеджер процессор* - управляет процессами и потоками
*Средства LPC* - оптимизированный вариант более общего средства - удалённого вызова процедур (передача коротких и длинных сообщений)
*Менеджер виртуальной памяти* - управление физической памятью, поддержка АП ядра и процессов
*Менеджер IO* - представляет средства IO, независимо от их устройств
**UNIX**
*Аппаратный контроль* - обеспечивает вышележащим уровням приемлимые абстракции hardware
*Взаимодействие процессов* - реализация механизмов IPC
*Планировщик* - управление (распределение) временем ЦП
*Управление памятью* - управление физической памятью, поддержка АП ядра и процессов
**Поток** - абстракция: последовательное выполнение команд программы во времени ^308759
Совместно используют глобальные и статические переменные, динамическую память и системные ресурсы, выданную [[#^c7de0d|процессу]]
Имеет собственные счётчик (IP), значения регистров и локальные переменные
**Процесс** - абстракция: программа во время выполнения; совокупность потоков и ресурсов ^c7de0d
ОС выделяет процессу ресурсы:
- Адресное пространство
- Файлы
- IO
**Многопоточные процессы** - процессы с несколькими потоками
**Контекст** - множество информации, полностью описывающее состояние состояние объекта
*Контекст [[#^c7de0d|процесса]]*:
- Информация о процессе
- АП процесса
- Структура и содержимое пользовательской части АП процесса
- Множество ресурсов, выделенных процессу, и их состояние
*Контекст [[#^308759|потока]]*:
- Информация о потоке
- Множество ресурсов, выделенных потоку, и их состояние
- Аппаратные контекст исполнения потока
**Переключение контекста** происходит при переходе к исполнению другого потока
При переключении необходимо:
1. Сохранить контекст текущего потока
2. Если следующий поток принадлежит другому процессу:
1. Сохранить контекст текущего процесса
2. Загрузить контекст следующего процесса
3. Загрузить контекст следующего потока
**Диаграмма состояний потока в однозадачной среде**
*Создание* - ОС обслуживает запрос на создание потока
*Завершение* - ОС обслуживает запрос на завершение потока
*Выполнение* - состояние работающего потока, выполняющегося на ЦП
*Ожидание* - выполнение потока заблокировано до наступление некого внешнего события
**Диаграмма состояний потока во многозадачной среде**
*Выполнение* - состояние работающего потока, обладающими всеми необходимыми ресурсами, в т.ч. возможностью использования ЦП
*Готов к выполнению* - поток обладает всеми нелюходимыми для выполнения ресурсами, кроме времени ЦП
**Дескриптор [[#^c7de0d|процесса]]** - структура данных, которая используется для описания процесса Включает в себя: ^6b0413
- Идентификатор процесса
- Групповые параметры процесса
- Состояние процесса
- Статистические данные
- Описание АП процесса
- Контекст IO
- Контекст безопасности
- Текущие системные параметры выполнения
- Код завершения процесса
- Параметры, используемые в случае конкуренции между процессами за ресурс для определения приоритета
**Дескриптор [[#^308759|потока]]** - структура данных, которая используется для описания процесса. Включает в себя:
- Идентификатор потока
- Идентификатор владельца - процесса
- Параметры, используемые в случае конкуренции между потоками за ресурс для определения приоритета
- Статистические данные
- Аппаратные контекст выполнения потока
- Код завершения потока
**Создание процесса в Windows**
1. Создание и инициализация (всех полей) дескриптора
2. Создание и заполнение необходимыми данными ВАП
3. Выделение ресурсов, которые он может использовать сразу после создания
4. Оповещение подсистем, занимающимися управлением процессов, о создании нового процесса
5. Создание первичного потока
**Завершение процесса в Windows**
1. Завершение выполнения всех потоков процесса
2. Сохранение статистических данных и кода возврата процессора в дескрипторе
3. Перевод всех ресурсов, принадлежащих процессу, в стабильное и непротиворечивое состояние
4. Освобождение этих ресурсов
5. Освобождение ВАП, а затем его уничтожение
6. Оповещение подсистем, занимающимися управлением процессов, о завершении процесса
7. Установка состояние процесса `завершён`
Остаётся только [[#^6b0413|дескриптор]]. Его уничтожение зависит от реализации
**Создание потока в Windows**
1. Создание и инициализация (всех полей) дескриптора
2. Создание структур данных, необходимых потоку
3. Инициализация аппаратного контекста
4. Оповещение подсистем, занимающимися управлением потоков, о создании нового потока
5. Установка состояние потока `готов к исполнению`
**Завершение потока в Windows**