- •Часть 3
- •1)_Ч3 Что понимают под архитектурой, структурой и составом ос?
- •2)_Ч3 Каков типовой состав ос?
- •3)_Ч3 Представьте классическую архитектуру ос (на основе ядра), поясните состав и функции ядра и вспомогательных модулей ос.
- •4)_Ч3 Какие режимы, обеспечивающие привилегии ос, должна поддерживать аппаратура компьютера.
- •5)_Ч3 Как обеспечивается подчиненность приложений операционной системе?
- •6)_Ч3 Как влияет на возможности защиты поддержка многоуровневой иерархии привилегий?
- •7)_Ч3 Какая задержка переключений процессора характерна для классической архитектуры ос?
- •8)_Ч3 Изобразите многослойную структуру ос и поясните ее основные особенности.
- •9)_Ч3 Перечислите особенности слоев и межслойных интерфейсов многослойной структуры ос.
- •10)_Ч3 Какие достоинства имеет многослойная структура ос?
- •11)_Ч3 Перечислите типовые слои ядра и опишите их функции.
- •12)_Ч3Опишите особенности слоя менеджеров ресурсов ядра ос.
- •13)_Ч3Какие способы взаимодействия слоев используются в классической архитектуре?
- •14)_Ч3к чему ведет увеличение/уменьшение числа слоев ядра ос?
- •15)_Ч3Перечислите и охарактеризуйте типовые средства аппаратной поддержки ос.
- •16)_Ч3Почему одна и та же ос не может без изменений устанавливаться на компьютеры с другим типом процессора или способом организации всей аппаратуры?
- •17)_Ч3Опишите особенности построения машинно-зависимых компонент и переносимости ос.
- •18)_Ч3Что такое «микроядро» и какие модули входят в его состав?
- •19)_Ч3Что такое «серверы ос» в архитектуре на основе микроядра, в каком режиме они работают?
- •20)_Ч3Перечислите и поясните особенности архитектуры ос на основе микроядра.
- •21)_Ч3Поясните механизм обращения к функциям ос, оформленным в виде серверов архитектуры на основе микроядра.
- •22)_Ч3Опишите достоинства и недостатки архитектуры ос на основе микроядра.
- •23)_Ч3Какая задержка переключений процессора характерна для архитектуры ос на основе микроядра?
- •24)_Ч3Опишите варианты гибридного (смешанного) и модульного ядра.
- •25)_Ч3Опишите варианты наноядра, пикоядра и экзоядра.
- •26)_Ч3в чем суть совместимости различных ос и особенности различных ее видов?
- •27)_Ч3 Для чего в прикладных программных средах выполняется трансляция библиотек?
- •28)_Ч3 Опишите вариант реализации множественных прикладных программных сред на основе трансляторов системных вызовов.
- •29)_Ч3 Опишите вариант реализации множественных прикладных программных сред на основе поддержки нескольких равноправных api.
- •30)_Ч3 Опишите вариант реализации множественных прикладных программных сред на основе концепции микроядра.
- •31)_Ч3 Что дает наличие в составе ос множественных прикладных программных сред?
- •32)_Ч3 Опишите назначение и типы гипервизоров.
- •33)_Ч3 Опишите технологии виртуализации.
- •34)_Ч3 Опишите примеры гипервизоров и тенденции их развития.
- •1)_Ч5 Чем виртуальные адреса команд и данных отличаются от физических?
- •2)_Ч5 Что такое виртуальное адресное пространство процесса и на какие части оно делится?
- •3)_Ч5 Какие способы структурирования виртуального адресного пространства процесса используются?
- •4)_Ч5 Поясните смысл понятий «максимально возможное вап» и «назначенное вап процесса».
- •5)_Ч5 Что такое «образ процесса»?
- •6)_Ч5 Охарактеризуйте части, на которые делится вап процесса.
- •7)_Ч5 На какие области виртуальной памяти вытеснение не распространяется?
- •9)_Ч5 На какие классы делятся алгоритмы распределения оп и какие из них составляют каждый класс?
- •10)_Ч5 Какие задачи решаются при виртуализации оп?
- •11)_Ч5 Назовите и поясните основные подходы к виртуализации оп.
- •12)_Ч5 Поясните суть свопинга.
- •13)_Ч5Перечислите достоинства и недостатки свопинга.
- •14)_Ч5 Что такое таблица страниц и для чего она используется?
- •15)_Ч5Какую информацию включает дескриптор страниц?
- •16)_Ч5Как выполняется страничное распределение оп?
- •17)_Ч5 Как представляется виртуальный адрес при страничной организации?
- •18)_Ч5Опишите известные стратегии замещения страниц.
- •19)_Ч5Как при страничном распределении оп осуществляется поддержка разделов?
- •20)_Ч5Какие недостатки страничного распределения оп устраняет сегментное распределение?
- •21)_Ч5 Чем сегментное распределение оп отличается от страничного?
- •22)_Ч5Как выполняется сегментное распределение оп?
- •23)_Ч5Как представляется виртуальный адрес при сегментной организации?
- •24)_Ч5 Что такое таблица сегментов и для чего она используется?
- •25)_Ч5 Каковы недостатки и достоинства сегментного распределения оп?
- •26)_Ч5Поясните суть сегментно-страничной организации оп. Сегментно-страничное распределение памяти
- •27)_Ч5Как происходит преобразование виртуального адреса в физический при сегментно-страничной организации
- •28)_Ч5 Как используется модифицированный страничный механизм при сегментно-страничной организации оп?
- •29)_Ч5Дайте краткое сравнение разных алгоритмов распределения оп.
- •30)_Ч5 Для чего нужны разделяемые сегменты памяти и какие варианты их организации существуют?
- •1)_Ч6 Перечислите и кратко поясните задачи ос по управлению увв и файлами.
- •2)_Ч6Опишите необходимость и организацию параллельной работы увв и процессора, согласования скоростей обмена и кэширования.
- •3)_Ч6Опишите необходимость и организацию разделения увв и данных между процессами, логического интерфейса между увв и остальной частью ос.
- •4)_Ч6Опишите необходимость и организацию поддержки широкого спектра драйверов, динамической загрузки и выгрузки драйверов.
- •5)_Ч6Опишите необходимость и организацию поддержки нескольких фс, синхронных и асинхронных операций ввода-вывода.
- •9)_Ч6Опишите назначение и функции классического драйвера.
- •Ч4_Какие действия выполняет ос при порождении процесса?
- •Ч4_Что такое «описатель (дескриптор) процесса»?
- •Ч4_Что такое «описатель потока»?
- •Ч4_Поясните суть и основные типы планирования потоков.
- •Ч4_Чем динамическое планирование потоков отличается от статического?
- •Ч4_Поясните суть и порядок диспетчеризации потоков.
- •Ч4_Опишите состав контекста потока и роль его иерархической организации.
- •Ч4_Как организуются и переупорядочиваются очереди потоков?
- •Ч4_Чем различаются вытесняющие и невытесняющие алгоритмы планирования?
- •Ч4_Чем различаются вытесняющие и невытесняющие алгоритмы планирования?
- •Ч4_Что такое «приоритет потока» и каким он бывает?
- •Ч4_Чем динамические приоритеты потоков отличаются от статических?
- •Ч4_Опишите схему назначения приоритетов в ос WindowsNt.
- •Ч4_Опишите смешанный алгоритм планирования в ос WindowsNt.
- •Ч4_Опишите смешанный алгоритм планирования в ос unixSystemVRelease 4.
- •Ч4_Опишите смешанный алгоритм планирования в os/2.
- •Ч4_Опишите схему изменения приоритетов потоков и величины квантов при планировании в os/2.
- •Ч4_Перечислите события, требующие перераспределения процессорного времени и поясните действия планировщика ос в каждом случае.
- •Ч4_Опишите моменты перепланировки в среде ос рв.
- •Ч4_Какие дополнительные организационные трудности для ос создают прерывания?
- •Ч4_Как осуществляются диспетчеризация и учет приоритетов прерываний в ос?
- •Ч4_Как работает диспетчер прерываний?
- •Ч4_Как соотносятся приоритеты обработчиков прерываний и приоритеты потоков?
- •Ч4_Как согласуется диспетчеризация прерываний с диспетчеризацией потоков?
- •Ч4_Как организована диспетчеризация системных вызовов?
- •Ч4_Опишите схему организации системных вызовов с диспетчером системных вызовов.
- •Ч4_Опишите особенности и различия организации синхронных и асинхронных системных вызовов.
- •Ч4_Каковы цели взаимодействия процессов и потоков?
- •Ч4_Поясните суть и необходимость синхронизации процессов и потоков.
- •Ч4_Когда возникают гонки при выполнении потоков?
- •Ч4_Что такое «критическая секция», «критические данные», «взаимное исключение» потоков.
- •Ч4_Поясните суть использования блокирующих переменных.
- •Ч4_Поясните суть использования семафоров.
- •Ч4_Опишите пример использования семафоров при работе с буферным пулом записи/чтения.
- •Ч4_Поясните суть взаимных блокировок (тупиков).
- •Ч4_Чем тупики отличаются от очередей?
- •Ч4_Опишите идеи и средства выявления и устранения тупиков.
- •Ч4_Поясните сложность синхронизации потоков разных процессов.
- •Ч4_Какие методы используются в ос для разделения синхронизирующих объектов?
- •Ч4_Какие обычные объекты ос могут использоваться как синхронизирующие и какие события переводят их в сигнальное состояние?
- •Ч4_в чем состоит суть сигнального состояния синхронизирующего объекта ос?
- •Ч4_Приведите примеры сигнальных состояний для следующих синхронизирующих объектов: поток, процесс, файл.
- •Ч4_Что такое мьютекс и объект-событие?
- •Ч4_Поясните роль сигналов как синхронизирующих объектов.
4)_Ч6Опишите необходимость и организацию поддержки широкого спектра драйверов, динамической загрузки и выгрузки драйверов.
Достоинством подсистемы ввода-вывода любой универсальной ОС является наличие разнообразного набора драйверов для наиболее популярных УВВ. Администраторы и пользователи не должны искать нужный драйвер, а тем более разрабатывать его.Подсистема ввода-вывода может поддерживать несколько различных видов интерфейсов «драйвер-ядро»/«драйвер-устройство», предоставляя специфический интерфейс для УВВ определенного класса.Обычно подсистема ввода-вывода поддерживает большое число системных функций, которые драйвер может вызвать для выполнения некоторых типовых действий (например, операции обмена с регистрами контроллера, ведение буферов для промежуточного хранения данных ввода-вывода, синхронизация работы нескольких драйверов, копирование данных из пространства пользователя в пространство ОС). Включение драйвера в состав модулей работающей ОС и его выключение «на ходу», то есть динамическая загрузка/выгрузка драйверов является важным свойством ОС, поскольку набор потенциально поддерживаемых данной ОС УВВ всегда существенно больше набора реальных устройств, которыми ОС должна управлять при ее установке на конкретном компьютере. При этом актуальна возможность динамически загружать в ОП требуемый драйвер без останова ОС и так же выгружать ненужный драйвер для экономии ОП.Альтернативой динамической загрузке/выгрузке драйверов является повторная компиляция кода ядра с требуемым набором драйверов, что создает между всеми компонентами ядра статические связи вместо динамических. Например, так решалась данная проблема в ранних версиях ОС UNIX, упрощая структуру системы, но при этом требовалось наличие исходных кодов модулей ОС.
5)_Ч6Опишите необходимость и организацию поддержки нескольких фс, синхронных и асинхронных операций ввода-вывода.
Большая часть системных и пользовательских данных хранится на дисках, делая дисковые накопители важнейшими УВВ. Данные на дисках организуются в различные ФС, а свойства отдельной ФС во многом определяют такие свойства самой ОС, как отказоустойчивость, быстродействие, максимальный объем хранимых данных. Популярность некоторой ФС часто приводит к ее миграции из «родной» ОС в другие ОС. Например, ФС «таблица расположения файлов» (FileAllocationTable, FAT) была создана для MS-DOS, но затем была реализована в OS/2, семействеMSWindows и многих реализациях UNIX. Именно поэтому поддержка нескольких популярных ФС для подсистемы ввода-вывода имеет принципиальное значение. При этом архитектура подсистемы ввода-вывода должна обеспечивать легкое включение в ее состав новых типов ФС без необходимости переписывания кода ОС. Обычно в ОС имеется специальный слой, отвечающий за решение этой задачи, например, слой «виртуальная файловая система» (VirtualFileSystem,VFS) в разных реализациях UNIXна основе SystemVRelease 4. Операция ввода-вывода по отношению к запросившему ее программному модулю может выполняться, как и в случае ранее рассмотренных системных вызовов, синхронно (с приостановкой работы модуля и ожиданием ее завершения) или асинхронно (с продолжением работы модуля параллельно с операцией ввода-вывода). Причем, операция ввода-вывода может быть инициирована не только пользовательским процессом (когда она выполняется в рамках системного вызова), но и кодом ядра, например, подсистемы виртуальной памяти для считывания отсутствующей в ОП страницы.Системные вызовы ввода-вывода чаще выполняются как синхронные, поскольку такие операции длятся долго, и пользовательскому процессу/потоку все равно необходимо ожидать их результатов для продолжения своей работы. Внутренние же вызовы операций ввода-вывода из модулей ядра обычно выполняются как асинхронные, поскольку ядру нужна свобода в выборе дальнейшего поведения после запроса операции ввода-вывода. Асинхронный вариант дает более гибкое решение, позволяя всегда добавить при необходимости промежуточную синхронную процедуру, блокирующую выполнение асинхронной до завершения ввода-вывода
6)_Ч6Представьте и опишите обобщенную структуру подсистемы ввода-вывода.
Идея многослойной организации ОС оказывается полезной и при построении подсистемы ввода-вывода. При большом разнообразии УВВ, обладающих существенно разными характеристиками, ее иерархическая структура позволяет соблюсти баланс между двумя противоречивыми требованиями. При этом нижние слои подсистемы ввода-вывода должны включать индивидуальные драйверы, написанные для конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, представляя общий интерфейс для всех устройств или для групп устройств, обладающих некоторыми общими характеристиками, например, для лазерных принтеров компании HewlettPackard.Обобщенная структура подсистемы ввода-вывода представлена на рис.6.1.ПО ввода-вывода здесь делится не только на горизонтальные слои, но и на вертикальные. Необходимость вертикальных слоев обусловлена наличием групп разнотипных УВВ со своими способами управления [1-2].
Рис.6.1.стр Обобщенная структура подсистемы ввода-вывода
Здесь общий принцип многослойности соблюдается, но для групп разнотипных УВВ он реализуется по-разному, со своим числом слоев и их функциями. В группу графических УВВ могут входить также мониторы, диджитайзеры и т.п., а в группу сетевых – сетевые адаптеры.
В каждой вертикальной подсистеме существует несколько слоев модулей. Нижний слой образуют аппаратные драйверы устройств, осуществляющие обмен байтами и блоками байтов. Как правило, они не имеют дела с высокоуровневой логической организацией данных (например, с файлами или сложными графическими объектами). Функции вышележащих слоев в значительной степени зависят от типа вертикальной подсистемы.
7)_Ч6Опишите организацию и особенности менеджера ввода-вывода.
В подсистеме ввода-вывода наряду с модулями, отражающими специфику групп УВВ и образующих вертикальные подсистемы, существуют и модули универсального назначения. Они организуют согласованную работу всех остальных компонентов подсистемы, а также взаимодействие с пользовательскими процессами и другими подсистемами ОС. Как и функции управления УВВ, эти организующие функции распределены по всем уровням, образуя оболочку, получившую название менеджер ввода-вывода. Задачи такого менеджера довольно разнообразны.
Верхний слой менеджера составляют системные вызовы ввода-вывода, принимающие от пользовательских процессов запросы на ввод-вывод и переадресующие их отвечающим за определенную группу УВВ модулям и драйверам, а также возвращающие процессам результаты операций ввода-вывода. Таким образом верхний слой поддерживает пользовательский интерфейс ввода-вывода, создавая для прикладных программистов максимум удобств по манипулированию УВВ и расположенными на них данными.
Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами УВВ, экранируя драйверы от особенностей аппаратной платформы компьютера (шины ввода-вывода, , системы прерываний и т.п.). Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме (с независимой от шины адресацией и форматом), а затем преобразуют эти запросы в зависящий от аппаратной платформы формат. Диспетчер прерываний может входить в состав менеджера ввода-вывода или быть отдельным модулем ядра ОС. В последнем случае менеджер ввода-вывода выполняет для диспетчера прерываний первичную обработку запросов прерываний, передавая ему сведения об источнике запроса.
Важной функцией менеджера ввода-вывода является создание некоторой среды для остальных компонентов подсистемы, облегчающей их взаимодействие друг с другом за счет использования стандартного внутреннего межмодульного интерфейса. Его наличие облегчает включение новых драйверов и ФС в состав ОС. Кроме того, разработчики драйверов освобождаются от написания общих процедур, таких как буферизация данных или синхронизация нескольких модулей при обмене данными. Все эти функции берет на себя менеджер ввода-вывода.
Еще одной функцией менеджера является организация взаимодействия с модулями других подсистем ОС, таких как подсистема управления процессами, подсистема управления виртуальной памятью и другие.
Наличие стандартного внутреннего межмодульного интерфейса повышает устойчивость и улучшает расширяемость подсистемы ввода-вывода, но может и несколько замедлять ее работу за счет взаимодействия слоев (по сравнению с монолитной организацией с прямыми передачами управления) [2].
8)_Ч6Опишите организацию и особенности многоуровневых драйверов.
Изначально термин «драйвер» применялся в достаточно узком смысле для обозначения программного модуля, который
-
входит в состав ядра ОС, работая в привилегированном режиме;
-
непосредственно управляет УВВ, взаимодействуя с его контроллером с помощью команд ввода-вывода компьютера;
-
обрабатывает прерывания от контроллера УВВ;
-
предоставляет прикладному программисту удобный логический интерфейс для работы с УВВ, экранируя от него низкоуровневые детали управления УВВ и организации его данных;
-
взаимодействует с другими модулями ядра ОС с помощью строго оговоренного интерфейса, описывающего формат передаваемых данных, структуру буферов, способы включения драйвера в состав ОС, способы вызова драйвера, набор общих процедур ввода-вывода, которыми драйвер может пользоваться и т.п.
Согласно этому определению, драйвер вместе с контроллером устройства и прикладной программой воплощали идею многослойной организации ПО. Контроллер обеспечивал нижний слой управления, а драйвер выполнял более сложные операции, преобразуя данные, адресуемые, например, в терминах номеров цилиндров, головок и секторов диска, в линейную последовательность блоков. В результате прикладная программа работала уже с достаточно понятными для человека данными (файлами, таблицами, текстовыми окнами на мониторе), не вдаваясь в детали представления этих данных в УВВ.
В описанной схеме драйверы не делились на слои, но часто выполняли задачи разного уровня сложности, в зависимости от сложности УВВ или алгоритма его функционирования.
Постепенно, по мере развития ОС и усложнения структуры подсистемы ввода-вывода, наряду с традиционными драйверами в ней появились так называемые высокоуровневые драйверы, которые располагаются (на рис.6.1) над традиционными драйверами. Традиционные драйверы стали называть аппаратными драйверами, низкоуровневыми или драйверами устройств. Низкоуровневые операции составляют фундамент, на котором можно построить целый набор операций в драйверах более высоких уровней. Так повышается гибкость и расширяемость функций управления УВВ: вместо жесткого набора функций, сосредоточенного в единственном драйвере, администратор ОС теперь может выбрать требуемый набор функций, установив нужный высокоуровневый драйвер или несколько, работающих над одним аппаратным драйвером.
Число уровней драйверов в подсистеме ввода-вывода обычно не ограничивается, но на практике чаще всего используют 2-5 уровней драйверов. При этом несколько драйверов, управляющих одним УВВ на разных уровнях, можно рассматривать как набор или как один многоуровневый драйвер.
Высокоуровневые драйверы оформляются по тем же правилам и придерживаются тех же внутренних интерфейсов, что и аппаратные драйверы. Единственным отличием является то, что высокоуровневые драйверы, как правило, не вызываются по прерываниям, поскольку взаимодействуют с управляемым устройством через аппаратные драйверы. Менеджер ввода-вывода управляет всеми драйверами однотипно [1].
Отметим, что в схеме рис.6.1 не показаны все возможные вертикальные слои УВВ, а также допустимые исключения, которые могут быть связаны с ориентацией высокоуровневого интерфейса не только на блоки или байты. Например, таймер как устройство вывода не содержит адресуемой информации, не порождает потока байтов, а только выдает сигнал прерывания в некоторые моменты времени [2].