- •Вопросы и литература по курсу аос (по всем вопросам должен быть представлен краткий рукописный конспект в общей тетради)
- •Структура программного обеспечения персонального компьютера.
- •Понятие операционной системы персонального компьютера. Основные интерфейсы компьютерной системы.
- •Краткая история операционных систем.
- •Доисторический период
- •Первый период (1945-1955)
- •Основные функциональные компоненты ос.
- •Подсистема управления процессами
- •Управления памятью
- •Управление файлами и внешними устройствами
- •Защита данных и администрирование
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Сетевые и распределенные операционные системы.
- •Требования к современным операционным системам.
- •Базовая архитектура операционной системы. Понятие ядра системы. Классификация операционных систем в зависимости от особенностей архитектуры ядра.
- •По архитектуре ядра системы можно разделить на:
- •-2) Слоистая архитектура ядра
- •Аппаратная зависимость и переносимость операционных систем.
- •Совместимость операционных систем и множественные прикладные среды.
- •Подсистема управления процессами, основные задачи. Понятие многозадачности.
- •Многозадачность в системах пакетной обработки, разделения времени и реального времени. Системы пакетной обработки.
- •Системы разделения времени
- •Системы реального времени
- •Состояния потока
- •Планирование и диспетчеризация потоков
- •Квантование – каждому потоку последовательно выделяется квант процессорного времени.
- •Алгоритмы планирования, основанные на приоритетах
- •Смешанные алгоритмы планирования
- •Приоритеты и концепции планирования потоков в Windows 2000, ос Unix System V и os/2. Система ос Unix System V Release 4
- •Система os/2
- •Система Windows 2000
- •Планирование процессов и потоков в системах реального времени.
- •Назначение
- •Механизм прерываний
- •Реализация системных вызовов. Использование механизма прерываний для реализации системных вызовов.
- •Понятие гонок
- •Критическая секция кода и исключение гонок
- •Блокирующие переменные
- •Понятие семафора и его использование для целей синхронизации.
- •Синхронизация и проблема тупиков.
- •Синхронизирующие объекты в операционных системах.
- •Методы распределения памяти
- •Фиксированные разделы
- •Динамические разделы
- •Перемещаемые разделы
- •Остальные методы требуют использования внешней памяти
- •Свопинг
- •Виртуальная память
- •Страничная организация памяти
- •2 Базисных свойства страничной организации:
- •Сегментное распределение памяти
- •Сегментно-страничное распределение
- •Организация виртуальной памяти, преобразование адреса.
- •Обмен данными между процессами на основе виртуальной памяти.
- •Аппаратная поддержка сегментной организации памяти в системах на основе процессоров с архитектурой ia32. Небольшое вступление про процессоры ia-32 и аппаратную поддержку мультипрограммирования
- •Регистры сегментов
- •Управляющие регистры:
- •Регистры системных адресов
- •Регистры отладки и тестирования
- •Средства поддержки сегментной организации памяти в процессорах Пентиум (собственно ответ на билет)
- •Итак, процесс обратился за памятью. Что происходит?
- •Защита данных в системах с сегментной организацией памяти на основе процессоров с архитектурой ia32.
- •Привилегии подробнее:
- •Смешанная сегментно-страничная организация памяти в системах на основе процессоров с архитектурой ia32. Трансляция адреса. Буфер ассоциативной трансляции (tlb).
- •Кэширование данных
- •Принципы работы кэш - памяти.
- •Проблема согласования данных.
- •Вытеснение данных из кэШа
- •Случайное отображение
- •Детерминированный способ отображения
- •Управление памятью в реальном режиме адресации на примере консоли Windows xp.
- •Задачи подсистемы управления внешними устройствами.
- •Организация параллельной работы устройств ввода-вывода и процессора
- •Согласование скоростей обмена
- •Разделение устройств и данных между процессами
- •Обеспечение удобного и логического интерфейса между устройствами и остальной частью системы
- •Поддержка широкого спектра драйверов с возможностью расширения
- •Динамическая загрузка и выгрузка драйверов.
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Поддержка нескольких файловых систем.
- •Типы файлов
- •Иерархическая структура фс
- •Имена файлов
- •Монтирование
- •У файла есть:
- •Логическая организация файла:
- •Физическая организация данных на диске.
- •Физическая организация файла.
- •Связанный спискок кластеров дисковой памяти
- •Связанный список индексов – фс фат.
- •Файловые операции.
- •Универсальные действия:
- •Стандартные файлы ввода и вывода, перенаправление ввода-вывода.
- •Файловые системы Unix (s5 и ufs).
- •Обзор семейства операционных систем Microsoft Windows.
- •Системный реестр: структура системного реестра Windows;
- •Импорт и экспорт данных системного реестра;
- •Предопределенные ключи системного реестра;
Назначение
Система прерываний переводит процессор на выполнение потока команд, отличного от того, который на нем выполнялся до сих пор с последующим возвратом к исходному потоку.
Т.о. механизм прерываний очень похож на механизм вызова процедур, однако переключение по прерываниям непредсказуемо, с отличие от вызова процедуры, планируемого программистом.
Типы прерываний, в зависимости от источника, таковы:
- внешние
- внутренние
- программные
Внешние = аппаратные – это действия пользователя или поступление сигналов от внешних устройств. Являются асинхнонными по отношению к выполняемой проге.
Внутренние прерывание (исключения) –происходят, если в процессе исполнения программы возникает аварийная ситуация (выход за границы массива, деление на 0 и тд);
Программные прерывания – не настоящие прерывания, а сознательная имитация таковых в заранее запланированных местах программы.
Механизм прерываний
Существует 2 способа, с помощью которых шины выполняют прерывания:
- Векторный
- Опрашиваемый
При использовании векторных прерываний устройствам назначается вектор прерываний (электрический сигнал, несущий инфу об определенном номере, закрепленном за определенным устройством). Устройство запрашивает прерывание. Процессор подтверждает запрос и выполняет цикл подтверждения прерывания, в котором устройство должно себя идентифицировать. Для этого оно выставляет свой вектор прерываний, а процессор, используя этот вектор, находит соответствующий обработчик прерываний.
При использовании опрашиваемых прерываний процессор получает от устройства только инф-ю об уровне приоритета прерывания. С каждым уровнем может быть связано несколько устройств, и чтобы определить нужное, процессор вызывает все обработчики прерываний для данного типа приоритета, пока один из них не «распознает» свое прерывание.
Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования
Приоретизация:
Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.
Приоритеты могут быть:
- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)
- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.
Маскирование (собственно, оно есть и в только что описанной схеме приоретизации) – запросы на прерывания маскируются, то есть не обслуживаются. Маскирование предполагает возможность маскирования прерываний любого уровня, вне зависимости от их приоритета.
Диспетчеризация и приоритеты прерываний
Прерывания играют важную роль в работе ОС.И обработка прерываний довольно сложная задача, тк.
- они возникают асинхронно к программе
- связаны с непредвиденными переходами управления
- системные вызовы часто реализуются по прерываниям
- прерывания возникают при возникновении ошибок в программе
- сами модули ОС часто вызывают друг друга по прерываниям
- даже планировщик потоков по сути – системная процедура, вызываемая по прерываниям.
Поэтому прерываниями нужно грамотно управлять.
Этим занимается специальный программный модуль – ДИСПЕТЧЕР ПРЕРЫВАНИЙ.
Используется механизм приоритетных очередей.
Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования
Приоретизация:
Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.
Приоритеты могут быть:
- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)
- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.
При возникновении прерывания вызывается диспетчер. Он на время запрещает прерывания, выясняет источник этого, выясняет по приоритетам, будет ли его обрабатывать и либо начинает обрабатывать, либо помещает его в очередь.
Централизованная схема диспетчеризации прерываний на примере Windows NT
Некоторые процессоры (но не все) поддерживают обработку прерываний на аппаратном уровне. В таких процессорах есть внутренняя переменная – уровень прерываний процессора. Если ОС работает на таких процессорах, то она может пользоваться этой встроенной системой.
Но такие средства есть не у всех процессоров (их нет у Пентиум). И чтобы не зависеть от аппаратной платформы, в ОС вводится собственная программная система приоритетов прерываний.
В Виндовс НТ есть диспетчер прерывываний (Trap Handler).
Все, что генерирует прерывания – это источник прерывания, они делятся на несколько классов, каждому из которых присваивается свой уровень запроса прерывания Interrupt Request Query Level, IRQL. IRQL определяет приоритет прерываний данного класса.
Также в ОС есть внутренняя переменная, IRQL выполняемого кода. Она может отображаться на аналогичную аппаратную переменную, а если ее нет, она ее эмулирует.
Схема обработки прерываний:
Поступает запрос на прерывание
Вызывается диспетчер прерываний
Он анализирует IRQL поступившего прерывания.
Если он ниже текущего – прерывание помещается в очередь запросов, диспетчер продолжает обрабатывать текущее прерывание
Если он выше текущего – диспетчер текущее прерывание помещает в очередь и начинает обрабатывать вновь поступившее.
Данная схема централизованная, ОС имеет полный контроль за прерываниями.
Уровни приоритета прерываний в Виндовс НТ:
Самый высокий – ошибки шины, тяжелые аппаратные сбои - 31
Прерывания по сбою питания - 30
Межпроцессорные прерывания - 29
Системный таймер – 28
Контроль производительности ядра - 28
Прерывания от внешних устройств 26-3
Диспетчерский (ДПС) – вызов отложенной процедуры - 2
Асинхронный (АПС) – асинхронный вызов процедуры - 1
Обычный код, нормальное выполнение потоков – 0;
Отложенный (DPS) и асинхронный (APS) вызовы процедур для обработки прерываний
IRQL уровни 1 (APC LEVEL) и 2 (DISPATCH LEVEL) предназначены для так называемых программных (в терминологии Microsoft) прерываний соответственно:
асинхронный вызов процедуры - APC (asynchronous procedure call) и
отложенный вызов процедуры -DPC (deferred procedure call).
Если ядро принимает решение выполнить некоторую системную процедуру, но нет необходимости делать это немедленно, оно ставит ее в очередь DPC и генерирует DPC прерывание. Когда IRQL процессора станет достаточно низким, эта процедура выполняется. Характерный пример - отложенная операция планирования. Из этого следует, что код, выполняемый на IRQL уровне, выше или равном 2, не подвержен операции планирования.
DPC предназначен для обслуживания программных прерываний, исходящих от модулей ядра. Сюда помещаются программные запросы, вызывающие диспетчер потоков (т.к. ситуация обработки прерываний часто требует перепланирования потоков, но эта процедура менее критичная, чем собственно обработка прерывания.)
Кроме того, на этом уровне ожидают своей очереди не только вызовы планировщика / диспетчера, но и другие отложенные вызовы от других процедур.
Асинхронный вызов процедур - механизм, аналогичный механизму DPC, но более общего назначения, в частности, доступный пользовательским процессам. Эти процедуры могут прерывать выполнение обыкновенного кода, вызываются они с помощью программного прерывания и выполняются в текущем контексте.
Пример АПС – перемещение данных, полученных драйвером устройства ввода вывода из системной области памяти, куда они первоначально попадают в индивидуальную часть адресного пространства нужного процесса. Такие действия постоянно выполняются системой ввода-вывода, собственно для них и были введены подобные прерывания.
Выполнение обработки прерываний в контексте и вне контекста процесса.
Чаще всего, процедура обработки прерываний выполняет работу никак не связанную с текущим процессом. Иногда вообще трудно определить, для какого процесса выполняет работу тот или иной модуль ОС, например, планировщик потоков.
Поэтому в общем случае процедуры обработки прерываний не имеют права использовать ресурсы текущего процесса или запрашивать от его имени дополнительные ресурсы.
Они работают с ресурсами, которые выделены им при инициализации соответствующего драйвера или самой ОС, с ресурсами ОС, а не конкретного процесса. Например, память выделяется им из системной области.
Все подобные процедуры работают вне контекста процесса, и делать это их должен заставить системный программист, а не сама ОС, она не может.
Однако бывают такие прерывания, обработка которых всегда выполняется в контексте определенного процесса- это АПС – асинхронные вызовы процедур. (1-й уровень приоритета.) АПС могут пользоваться ресурсами текущего процесса и были введены именно для этого.
Пример АПС – перемещение данных, полученных драйвером устройства ввода вывода из системной области памяти, куда они первоначально попадают в индивидуальную часть адресного пространства нужного процесса. Такие действия постоянно выполняются системой ввода-вывода, собственно для них и были введены подобные прерывания.
