
- •1. Структура программного обеспечения вычислительной системы.
- •2. Назначение операционных систем. Слои и точки зрения на вычислительную систему.
- •3. Сервисы операционных систем.
- •4 Понятие ресурса. Классификация ресурсов.
- •5 Ядро операционной системы. Требования к ядру.
- •Модульное ядро
- •Микроядро
- •Экзоядро
- •Наноядро
- •Гибридное ядро
- •6 Эволюция операционных систем. Последовательная обработка данных.
- •7 Эволюция операционных систем. Простые пакетные системы. Мониторы, jcl.
- •10 Эволюция операционных систем. Многозадачные системы с разделением времени. Алгоритм планирования на основе абсолютного приоритета (с вытеснением).
- •11. Проблемы классификации операционных систем.
- •Классификация ос
- •12. Управление выполнением приложений. Понятия процесса и потока
- •13 Процесс. Элементы процесса. Pcb. Элементы процесса в Windows nt.
- •14 Создание и завершение процессов. Этапы создания процесса в Windows nt.
- •Контекст и дескриптор процесса
- •15.Состояния процессов.
- •21. Многопоточность. Однопоточная и многопоточная модели процессов.
- •22. Преимущества использования потоков.
- •23. Состояния потоков.
- •24. Структура потоков в Windows 2000.
- •25. Взаимодействие «клиент-сервер». Использование потоков на стороне клиента для вызова удалённо-вызываемых процедур: однопоточный и многопоточный клиенты.
- •26. Взаимодействие «клиент-сервер». Использование потоков на стороне сервера: однопоточный сервер, многопоточный сервер, многопоточный сервер на базе пула потоков.
- •27.Реализация потоков в системе. Потоки на уровне пользователя.
- •28.Реализация потоков в системе. Потоки на уровне ядра.
- •29.Реализация потоков в системе. Комбинированный подход
- •31. Кластеры. Системное программное обеспечение кластеров. Типы кластеров.
- •32. Многопроцессорные системы. Соглашения относительно многопроцессорных систем. Диспетчеризация потоков на smp.
- •33.Диспетчеризация потоков в Windows 2000 при однопроцессорной и многопроцессорной конфигурации.
- •34. Модели параллелизма. Примеры.
- •35.Монолитная архитектура операционной системы. Преимущества и недостатки
- •Монолитные системы
- •36. Микроядерная архитектура операционной системы.
- •37. Архитектура операционных систем семейства Windows nt.
- •38.Архитектура операционной системы Linux.
- •39.Архитектура операционной системы qnx.
- •40. Процессы и синхронизация. Основные понятия: состояние, действие, история. Независимость параллельных процессов.
- •41. Разделяемый и критический ресурс. Доказательство корректности параллельных алгоритмах Примеры.
- •42.Понятие синхронизации. Виды синхронизации.
- •43. Мелкомодульная неделимость. Условие «не больше одного».
- •44.Задача критической секции.
- •45.Активные блокировки. Алгоритм «Проверить-установить». Недостатки.
- •46.Активные блокировки. Алгоритм «Проверить-проверить-установить».
- •47. Реализация взаимоисключения. Аппаратная поддержка. Реализация алгоритма «Проверить-установить» на x86 с использованием инструкции xchg.
- •48.Спин-блокировки в Windows 2000. Назначение спин-блокировок. Спин-блокировки очередями.
- •49.Задача критической секции. Решения со справедливой стратегией.
- •50.Семафоры Дейкстры. Псевдокод реализации семафора. Бинарные семафоры.
- •51.Реализация семафора средствами Windows api.
- •52.Семафорные механизмы в Windows api.
- •53.Задача «производитель/потребитель». Реализация на бесконечном буфере.
- •54.Задача «читатели-писатели».
- •55.Задача «обедающие философы». Заговоры и голодовка. Решения.
- •56. Мониторы. Мониторы с сигналами.
- •57.Мониторы. Мониторы с оповещением и широковещанием.
- •58.Принципы взаимного блокирования. Условия возникновения взаимоблокировок.
- •59. Управление памятью. Требования к управлению памятью.
- •60.Управление памятью. Распределение памяти. Фиксированное распределение. Алгоритм размещения при фиксированном распределении.
- •61.Управление памятью. Распределение памяти. Динамическое распределение. Алгоритмы размещения при динамическом распределении.
- •Не с лекции: Распределение памяти разделами переменной величины
- •62.Управление памятью. Перемещение. Типы адресов. Аппаратная поддержка перемещения.
- •63.Управление памятью. Простая страничная организация. Трансляция логических адресов. Страничная организация
- •Страничное распределение
- •64.Управление памятью. Простая сегментная организация. Трансляция логических адресов.
- •65. Виртуальная память (вп). Основные идеи. Выполнение программы с использованием вп. Преимущества вп. Поддержка функционирования вп.
- •66. Виртуальная память (вп). Типы памяти. Виртуальное адресное пространство. Пробуксовка (Thrashing). Принцип локализации.
- •67. Страничная организация вп. Биты таблицы страниц. Многоуровневая адресация. Страничная адресация в 80386.
- •68.Ассоциативный буфер трансляции (tlb). Функционирование tlb.
- •69.Размеры страниц. Влияние размеров страниц на поведение процесса.
- •70. Сегментная вп. Таблицы сегментов. Трансляция при сегментной организации.
- •1)Сегментная схема функционирования вп
- •71.Сегментно-страничная организация. Трансляция адресов при сегментно-страничной организации в 80386.
- •72.Задачи управления памятью. Стратегии выборки.
- •73.Задачи управления памятью. Стратегии размещения.
- •74.Задачи управления памятью. Стратегии замещения.
- •75.Задачи управления памятью. Буферизация страниц. Буферизация страниц в Windows 2000.
- •76.Управление резидентным множеством. Фиксированное распределение, локальное замещение.
- •77.Управление резидентным множеством. Переменное распределение, глобальное замещение.
- •78.Управление резидентным множеством. Переменное распределение, локальное замещение.
- •79.Управление резидентным множеством. Стратегия рабочего множества. Управление рабочим множеством в Windows 2000.
- •80.Архитектура компьютерной системы. Подключение устройств к магистрали. Иерархия магистралей.
- •83.Вызов сервисов операционной системы с использованием прерываний. Вызов сервисов в Windows nt.
- •84.Вызов сервисов операционной системы с использованием инструкций мп Pentium II sysenter/sysexit. Вызов сервисов в Windows 2000/xp/Server 2003.
- •85.Сложность систем ввода-вывода. Модуль (контроллер) ввода-вывода. Структура и функции модуля ввода-вывода.
- •86.Решения по организации ввода-вывода: программируемый (pio), управляемый прерываниями, прямой доступ к памяти (dma).
- •87.Ввод-вывод в операционных системах. Требования к эффективности и универсальности.
- •88.Подсистема ввода-вывода в операционной системе. Обзор функций.
- •89.Подсистема ввода-вывода. Организация параллельной работы устройств ввода-вывода и процессора.
- •90.Подсистема ввода-вывода. Согласование скоростей обмена. Буферизация в операциях ввода-вывода.
- •91. Подсистема ввода-вывода. Кэширование данных: кэширование на основе логических и виртуальных блоков.
- •93.Синхронный и асинхронный ввод-вывод. Средства поддержки асинхронного ввода-вывода в Windows api.
- •94.Подсистема ввода-вывода. Поддержка различных файловых систем. Ifs в системах Windows nt.
- •95.Файловые системы fat и ntfs. Отказоустойчивость в ntfs.
- •96.Отказоустойчивые дисковые массивы raid. Raid 0 6.
- •97.Многослойная модель подсистемы ввода-вывода. Многослойная модель подсистемы ввода-вывода в Windows nt.
- •12. Общие принципы построения операционных систем.
37. Архитектура операционных систем семейства Windows nt.
Windows NT – это относительно новая операционная система. Она была разработана в 1989 г. как операционная система 90-х годов и позднее. Базовая идея покоится на объектно-ориентированном программировании, строя операционную систему на модулях. Это идея была также распространена на ядро операционной системы, так чтобы ядро было функционально независимо от аппаратуры. Это было достигнуто, используя уровень абстрагирования от аппаратуры (hardware abstraction layer, HAL).
HAL Следуя объектно-ориентированной модели, все компоненты операционной системы взаимодействуют, посылая сообщения друг другу. Вызовы к системным сервисам реализованы по средством сообщений, который посылаются из процесса в пользовательском режиме в сервис ядра операционной системы. Это позволяет каждой части ОС разрабатываться независимо и увеличивает общую надежность проекта. Приложения не имеют непосредственный доступ к аппаратуре, когда управление осуществляется сервисами, запущенными на уровне ядра. Это позволяет переносить NT легко на другие аппаратные платформы.
Управление задачами Процессы в Windows NT принадлежат двум различным классам приоритетов: динамическому и реального времени. Большинство процессов принадлежат динамическому классу, который допускает изменение своих приоритетов операционной системой в зависимости от таких факторов как являются ли они фоновыми задачами или они недавно ожидают. Это хорошо для GPOS (General propose OS) , так как позволяет всем потокам быть запущенными и предоставляет пользователям более быструю реакцию от активного приложения. Однако правила, определяющие эти изменения приоритетов не подходят для RTOS (real-time OS). Поэтому Microsoft включила ряд приоритетов выше динамического класса, назвав их (Real-Time Class) класс приоритетов реального времени.
Потоки, запущенные с этими приоритетами всегда выполняются до тех, которые запущены с приоритетами из динамического класса. Операционная система не изменяет их приоритет никогда, таким образом оставляет большой контроль за разработчиком. Microsoft не рекомендует, чтобы потоки тратили много времени в этом классе, так как они имеют приоритет выше чем некоторые системные задачи, такие как сброс кэша диска и контроль ввода.
Можно подумать, что этого достаточно, чтобы сделать Windows NT операционной системой реального времени. К несчастью, существует ряд проблем с приоритетами. Только семь уровней приоритетов может быть использовано внутри класса, что явно недостаточно для серьезного приложения реального времени.
Блокировка инверсии приоритетов может происходить в потоках, ожидающих мьютекса. Большинство RTOS решают эту проблему с помощью инверсии приоритетов, но Windows NT использует схему, где потоки, которые не запускаются некоторое время принимают случайный приоритет повышая возможность быть запущенным. Это приводит к непредсказуемости и поэтому неприемлемо для системы реального времени, но используется в общецелевых операционных системах.
Память Виртуальная память была включена с самого начала и каждый процесс запускается в своем собственном адресном пространстве. Это увеличивает надежность предотвращая процессы от разрушающего воздействия других процессов. Но это также изолирует задачи от аппаратуры и намного более сложно иметь доступ к ним непосредственно.
Управление виртуальной памятью включает механизм свопинга. Для бизнес-приложений это прекрасно, но для систем реального времени, которые должны откликаться на внешние события в предопределенных временных рамках, это веет к непредсказуемости, когда система должна получить страницу памяти с диска. Поэтому Windows NT позволяет закрыть страницы в памяти, вызвав функцию VirtualLock. Память для окна может быть свопирована, если оно сжато в иконку. Таким образом, можно избежать проблемы свопинга для приложений реального времени, ограничиваясь доступной физической памятью.
На уровне драйвера устройств, однако, свопинг можно обойти.
Метод управления прерываниями.
Системы реального мира взаимодействуют с реальным миром через аппаратуру компьютера. Внешние события преобразуются в прерывания и управляются драйверами устройств. Прерывания генерируются аппаратурой. На них откликаются драйверы устройств. Чтобы увеличить оперативность отклика ОС на прерывание был выбран оригинальный механизм. Управление прерываниями происходит в два этапа. Во-первых, прерывания управляются очень короткими Interrupt Service Routine (ISR) (модуль обслуживания прерываний). Он выполняет минимальную работу по сохранению содержимого аппаратных регистров и подтверждает прерывание. Затем он для остатка работы запрашивает DPC (Deferred Procedure Call) (процедура отложенного вызова), которая выполняется позднее. DPC размещается в очереди FIFO и запускается тогда, когда предыдущие DPC закончили свое выполнение. В очереди DPC нет никаких приоритетов. Так, что DPC с более низким приоритетом прерываний будет выполняться до DPC с более высоким приоритетом (но позже пришедшим) . Нет способа определить сколько DPC стоит в очереди и сколько времени они будут выполняться
Win 32 API Все эти точки выглядят скорее как отрицательные для тех кто ищет серьезную надежную RTOS. Но Windows NT имеет свои преимущества и главный из них Win32 API. Этот интерфейс прикладного программирования должен быть широко используемым в мире так, что существует много разработчиков, знакомы с ним и хорошо его понимающих. У него много объектов синхронизации. Легкие и понятные инструменты разработчика. Это значительно упрощает работу программистов и открывает рынок реального времени для новых разработчиков и производителей.