- •1) Что понимают под архитектурой, структурой и составом ос?
- •2) Каков типовой состав ос?
- •3) Представьте классическую архитектуру ос (на основе ядра), поясните состав и функции ядра и вспомогательных модулей ос.
- •4) Какие режимы, обеспечивающие привилегии ос, должна поддерживать аппаратура компьютера?
- •5) Какая задержка переключений процессора характерна для классической архитектуры ос?
- •6) Изобразите многослойную структуру ос и поясните ее основные особенности.
- •7) Какие действия выполняет ос при порождении процесса?
- •8) Что такое «описатель (дескриптор) процесса»?
- •9) Что такое «описатель (дескриптор) потока»?
- •10) Поясните суть и основные типы планирования потоков.
- •11) Чем динамическое планирование потоков отличается от статического?
- •12) Поясните суть и порядок диспетчеризации потоков.
- •13) Как организуются и переупорядочиваются очереди потоков?
- •14) Чем различаются вытесняющие и невытесняющие алгоритмы планирования?
- •15) Поясните особенности алгоритмов планирования, основанных на квантовании.
- •16) Что такое «приоритет потока» и каким он бывает?
- •17) Чем динамические приоритеты потоков отличаются от статических?
- •18) Опишите схему назначения приоритетов в ос Windows nt.
- •19) Опишите смешанный алгоритм планирования в ос Windows nt.
- •20)Перечислите события, требующие перераспределения процессорного времени и поясните действия планировщика ос в каждом случае.
- •21) Опишите моменты перепланировки в среде ос рв.
- •22)Как осуществляются диспетчеризация и учёт приоритетов прерываний в ос?
- •23) Как работает диспетчер прерываний?
- •24)Как согласуется диспетчеризация прерываний с диспетчеризацией потоков?
- •25)Как организован диспетчер системных вызовов?
- •26) Опишите схему организации системных вызовов с диспетчером системных вызовов.
- •27)Опишите особенности и различия организации синхронных и асинхронных системных вызовов.
- •31)Что такое «критическая секция», «критические данные», «взаимное исключение» потоков.
- •32)Поясните суть использования блокирующих переменных.
- •33)Поясните суть использования семафоров.
- •34)Опишите пример использования семафоров при работе с буферным пулом записи/чтения.
- •36)Чем тупики отличаются от очередей?
- •37)Опишите идеи и средства выявления и устранения тупиков.
- •38)Поясните сложность синхронизации потоков разных процессов.
- •39)Какие методы используются в ос для разделения синхронизирующих объектов?
- •40)Какие обычные объекты ос могут использоваться как синхронизирующие и какие события переводят их в сигнальное состояние?
31)Что такое «критическая секция», «критические данные», «взаимное исключение» потоков.
Важным понятием синхронизации потоков является понятие «критической секции» программы. Критическая секция - часть программы, результат выполнения которой может непредсказуемо меняться, если общие данные изменяются другими потоками в то время, когда выполнение этой части еще не завершено. Критическая секция всегда определяется по отношению к определенным критическим данным, при несогласованном изменении которых могут возникнуть нежелательные эффекты. Во всех потоках, работающих с критическими данными, должна быть определена критическая секция. В разных потоках критическая секция состоит в общем случае из разных последовательностей команд.
32)Поясните суть использования блокирующих переменных.
Для синхронизации потоков, программист может использовать глобальные блокирующие переменные. С этими переменными, к которым все потоки процесса имеют прямой доступ, программист работает, не обращаясь к системным вызовам.
Каждому набору критических данных, ставится в соответствие двоичная переменная, которой поток присваивает значение 0, когда он входит в критическую секцию и значение 1, когда он ее покидает. Блокирующие переменные могут использоваться не только при доступе к данным, но и к разделяемым ресурсам любого вида. При блокирующих переменных имеется ограничение на прерывания: нельзя прерывать поток выполнением операции проверки и установлением блокирующей переменной.
Реализация взаимного исключения ,способом блокирующих переменных, имеет существенный недостаток, а именно в течении времени, когда один поток находится в критической секции, другой поток, которому требуется этот же ресурс получив доступ к процессору, будет непрерывно опрашивать блокирующую переменную, бесполезно тратя свой квант времени.
33)Поясните суть использования семафоров.
Для синхронизации процессов, а точнее, для синхронизации доступа нескольких процессов к разделяемым ресурсам, используются семафоры. Являясь одной из форм IPC, семафоры не предназначены для обмена большими объемами данных, как в случае FIFO или очередей сообщений. Вместо этого, они выполняют функцию, полностью соответствующую своему названию — разрешать или запрещать процессу использование того или иного разделяемого ресурса.
Применение семафоров поясним на простом примере. Допустим, имеется некий разделяемый ресурс (например, файл). Необходимо блокировать доступ к ресурсу для других процессов, когда некий процесс производит операцию над ресурсом (например, записывает в файл). Для этого свяжем с данным ресурсом некую целочисленную величину — счетчик, доступный для всех процессов. Примем, что значение 1 счетчика означает доступность ресурса, 0 — его недоступность. Тогда перед началом работы с ресурсом процесс должен проверить значение счетчика. Если оно равно 0 — ресурс занят и операция недопустима — процессу остается ждать. Если значение счетчика равно 1 — можно работать с ресурсом. Для этого, прежде всего, необходимо заблокировать ресурс, т. е. изменить значение счетчика на 0. После выполнения операции для освобождения ресурса значение счетчика необходимо изменить на 1. В приведенном примере счетчик играет роль семафора.