Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС шпоры 1.docx
Скачиваний:
22
Добавлен:
25.09.2019
Размер:
876.45 Кб
Скачать

ПРИМЕРНЫЙ СПИСОК ВОПРОСОВ К ЭКЗАМЕНУ ПО КУРСУ ОПЕРАЦИОННЫЕ СИСТЕМЫ

ВНИМАНИЕ: каждом экзаменационном билете будет по 8 подобных вопросов

(прежде чем готовится к экзамену по этому списку вопросов, настоятельно рекомендуется проработать ВСЕ вопросы для самопроверки в учебном пособии)

  1. Дисциплины замещения сегментов в памяти.

  2. Дисциплины замещения страниц в Unix и Windows системах.

  3. Классификация ОС. Архитектурные особенности ОС.

  4. Контекст процесса и его состояния.

  5. Механизмы межпроцессорного взаимодействия.

  6. Механизмы синхронизации: блокирующие переменные, семафоры, мониторы.

  7. Мультипрограммирование. Особенности реализации мультипрограммирования в системах пакетной обработки, разделения времени, реального времени, с мультипроцессорной обработкой.

  8. Общая схема обработки прерываний в однопрограммной ОС.

  9. Оверлейный способ распределения памяти.

  10. Основное отличие процессов и потоков.

  11. Особенности реализации мультипрограммирования в системах пакетной обработки, разделения времени, реального времени, с мультипроцессорной обработкой.

  12. Особенности эффективного использования таблицы страниц: многоуровневые таблицы страниц, ассоциативная память, инвертированная таблица страниц, хеширование.

  13. Параллельные процессы, синхронизация процессов, пример необходимости синхронизации, критическая секция.

  14. Планирование процессов и потоков: критерии, виды, алгоритмы планирования.

  15. Понятие и структура ОС. Эволюция вычислительных и ОС. Основные функции ОС.

  16. Понятие пространственной и временной локальности.

  17. Понятие процесса и потока. Создание процессов и потоков. Управляющие структуры процессов и потоков.

  18. Понятия дорожки, сектора, блока на жестком диске.

  19. Принцип работы ассоциативной памяти.

  20. Принципы построения файловой системы: интерфейс, функциональная схема, типовая структура файловой системы.

  21. Проблемы синхронизации (тупики) и способы их разрешения.

  22. Распределение памяти: общие принципы управления памятью в однопрограммных ОС, распределение памяти фиксированными, динамическими, перемещаемыми разделами.

  23. Роль прерываний при мультипрограммировании.

  24. Сегментное распределение памяти.

  25. Сегментно-страничное распределение памяти.

  26. Способы выделения дискового пространства. Управление дисковым пространством. Размер логического блока.

  27. Страничное распределение памяти.

  28. Управление памятью: задачи управления, типы адресации.

  29. Физическая организация жесткого диска.

  30. Чем характеризуется микроядерная архитектура построения ОС?

  31. Что понимается под «пробуксовкой» страниц памяти?

  1. Дисциплины замещения сегментов в памяти

Для решения проблемы замещения (определения того сегмента, который должен быть либо перемещен во внешнюю память, либо просто замещен новым) исполь­зуются следующие дисциплины:

·       правило FIFO (first in — first out, что означает: «первый пришедший первым и выбывает»);

·       правило LRU (least recently used, что означает «последний из недавно использованных» или, иначе говоря, «дольше всего неиспользуемый»);

·       правило LFU (least frequently used, что означает: «используемый реже всех остальных»);

·       случайный (random) выбор сегмента.

Первая и последняя дисциплины являются самыми простыми в реализации, но они не учитывают, насколько часто используется тот или иной сегмент и, следовательно, диспетчер памяти может выгрузить или расформировать тот сегмент, к которому в самом ближайшем будущем будет обращение. Безусловно, достоверной информации о том, какой из сегментов потребуется в ближайшем будущем, в общем случае иметь нельзя, но вероятность ошибки для этих дисциплин многократно выше, чем у второй и третьей дисциплины, которые учитывают информацию об использовании сегментов.

Алгоритм FIFO ассоциирует с каждым сегментом время, когда он был помещен в намять. Для замещения выбирается наиболее старый сегмент. Учет времени необязателен, когда все сегменты в памяти связаны в FIFO-очередь и каждый помещаемый в память сегмент добавляется в хвост этой очереди. Алгоритм учитывает только время нахождения сегмента в памяти, но не учитывает фактическое использование сегментов. Например, первые загруженные сегменты программы могут содержать переменные, используемые на протяжении работы всей программы. Это приводит к немедленному возвращению к только что замещенному сегменту.

Для реализации дисциплин LRU и LFU необходимо, чтобы процессор имел дополнительные аппаратные средства. Минимальные требования — достаточно, чтобы при обращении к дескриптору сегмента для получения физического адреса, с которого сегмент начинает располагаться в памяти, соответствующий бит обращения менял свое значение (скажем, с нулевого, которое установила ОС, в единичное). Тогда диспетчер памяти может время от времени просматривать таблицы дескрипторов исполняющихся задач и собирать для соответствующей обработки статистическую информацию об обращениях к сегментам. В результате можно составить список, упорядоченный либо по длительности не использования (для дисциплины LRU), либо по частоте использования (для дисциплины LFU).

  1. Дисциплины замещения страниц в Unix и Windows системах.

·       правило FIFO (first in — first out, что означает: «первый пришедший первым и выбывает»);

·       правило LRU (least recently used, что означает «последний из недавно использованных» или, иначе говоря, «дольше всего неиспользуемый»);

·       правило LFU (least frequently used, что означает: «используемый реже всех остальных»);

·       случайный (random) выбор сегмента.

Напомним, что алгоритм LFU выбирает для замещения ту страницу, на которую не было ссылки на протяжении наиболее длительного периода времени. Алгоритм LRU ассоциирует с каждой страницей время ее последнего использования. Для замещения выбирается та страница, которая дольше всех не использовалась.

Для использования дисциплин LRU и LFU в процессоре должны быть соответствующие аппаратные средства. В дескрипторе страницы размещается бит обращения (на рис. 3.5 подразумевается, что этот бит расположен в последнем поле), который становится единичным при обращении к дескриптору.

Для абсолютного большинства современных операционных систем характерна дисциплина замещения страниц LRU как самая эффективная. Так, именно эта дисциплина используется в OS/2 и в Linux. Однако в операционных системах Windows NT/2000/XP разработчики, желая сделать их максимально независимыми от аппаратных возможностей процессора, отказались от этой дисциплины и применили правило FIFO. А для того чтобы хоть как-то компенсировать неэффективность правила FIFO, была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск или просто расформированы. Принцип буферизации прост. Прежде чем замещаемая страница действительно окажется во внешней памяти или просто расформированной, она помечается как кандидат на выгрузку. Если в следующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец списка FIFO. В противном случае страница действительно выгружается, а на ее место в «буфер» попадает следующий «кандидат». Величина такого «буфера» не может быть большой, поэтому эффективность страничной реализации памяти в Windows NT/2000/XP намного ниже, чем в других операционных системах, и явление пробуксовки начинается даже при существенно большем объеме оперативной памяти.

В ряде операционных систем с пакетным режимом работы для борьбы с пробуксовкой используется метод «рабочего множества». Рабочее множество — это множество «активных» страниц задачи за некоторый интервал Т, то есть тех страниц, к которым было обращение за этот интервал времени. Реально количество активных страниц задачи (за интервал Т) все время изменяется, и это естественно, но, тем не менее, для каждой задачи можно определить среднее количество ее активных страниц. Это количество и есть рабочее множество задачи. Наблюдения за исполнением множества различных программ показали, что даже если интервал Т равен времени выполнения всей работы, то размер рабочего множества часто существенно меньше, чем общее число страниц программы. Таким образом, если операционная система может определить рабочие множества исполняющихся задач, то для предотвращения пробуксовки достаточно планировать на выполнение только такое количество задач, чтобы сумма их рабочих множеств не превышала возможности системы.