**Операционная система** - программное обеспечение, управляющее аппаратными ресурсами и предоставляющее прикладным программам удобные абстракции ^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**