- •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)Какие обычные объекты ос могут использоваться как синхронизирующие и какие события переводят их в сигнальное состояние?
39)Какие методы используются в ос для разделения синхронизирующих объектов?
Механизмы синхронизации, основанные на использовании глобальных переменных процесса, обладают существенным недостатком — они не подходят для синхронизации потоков разных процессов. В таких случаях операционная система должна предоставлять потокам системные объекты синхронизации, которые были бы видны для всех потоков, даже если они принадлежат разным процессам и работают в разных адресных пространствах.
Примерами таких синхронизирующих объектов ОС являются системные семафоры, мьютексы, события, таймеры и другие - их набор зависит от конкретной ОС, которая создает эти объекты по запросам процессов. Чтобы процессы могли разделять синхронизирующие объекты, используются разные методы. Некоторые ОС возвращают указатель на объект. Этот указатель может быть доступен всем родственным процессам, наследующим характеристики общего родительского процесса. В других ОС процессы в запросах на создание объектов синхронизации указывают имена, которые должны быть им присвоены. Эти имена используются разными процессами для манипуляций объектами синхронизации.
Потоки с помощью специального системного вызова сообщают операционной системе о том, что они хотят синхронизировать свое выполнение с состоянием некоторого объекта. Будем далее называть этот системный вызов Wait(X), где Х — указатель на объект синхронизации. Системный вызов, с помощью которого поток может перевести объект синхронизации в сигнальное состояние, назовем Set(X).
Поток, выполнивший системный вызов Wait(X), переводится операционной системой в состояние ожидания до тех пор, пока объект Х не перейдет в сигнальное состояние. Примерами системных вызовов типа Wait() и Set() являются вызовы WaitForSingleObject() и SetEvent() в Windows NT, sleep() и wakeup() в UNIX.
40)Какие обычные объекты ос могут использоваться как синхронизирующие и какие события переводят их в сигнальное состояние?
Кроме того, для синхронизации могут быть использованы такие «обычные» объекты ОС, как файлы, процессы и потоки. Все эти объекты могут находиться в двух состояниях: сигнальном и несигнальном — свободном. Для каждого объекта смысл, вкладываемый в понятие «сигнальное состояние», зависит от типа объекта. Так, например, поток переходит в сигнальное состояние тогда, когда он завершается. Процесс переходит в сигнальное состояние тогда, когда завершаются все его потоки. Файл переходит в сигнальное состояние в том случае, когда завершается операция ввода-вывода для этого файла. Для остальных объектов сигнальное состояние устанавливается в результате выполнения специальных системных вызовов. Приостановка и активизация потоков осуществляются в зависимости от состояния синхронизирующих объектов ОС.