- •Лихачёв д.С.
- •1 Понятие операционной системы. Классификация операционных систем
- •2 Сетевые операционные системы
- •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 Принципы работы с потоками вWindows. Распределение процессорного времени между потоками
- •32 Приостановка и возобновление потоков/процессов
- •33 Потоки вWindows. Приоритеты потоков и процессов
- •34 Задача синхронизации потоков
- •35 Синхронизация потоков с объектами ядра. Функции ожидания объектов ядра
- •36 Мьютексы. Создание, открытие, освобождение и удаление мьютекса. Отказ от мьютекса
- •37 Семафоры. Создание, открытие, освобождение и удаление семафора
- •38 Понятие сетевой операционной системы. Компьютерная сеть
- •39 Типичная структура сетевых операционных систем.
- •40 Сетевые службы и сетевые ресурсы
- •41 Архитектура взаимодействия типа клиент – сервер.
- •42 Многоуровневая структура коммуникаций. Эталонная модель взаимодействия открытых систем osi. Принцип пакетной передачи данных.
- •43 Технологии, используемые для построения компьютерных сетей.
- •44 Стек протоколов tcp/ip. Ip-адресация.
- •45 Понятие программной модели ia-32. Регистры общего назначения. Сегментные регистры.
- •46 Понятие программной модели ia-32. Регистры состояния и управления.
- •47 Режимы работы микропроцессора
- •48 Понятие оперативной памяти. Формирование адреса в процессорах с архитектурой ia-32.
- •49 Режимы адресации для процессоров с архитектурой ia-32. Работа с массивами на ассемблере.
- •50 Понятие модульного программирования. Понятие подпрограммы. Ассемблерные процедуры и функции.
- •51 Способы передачи аргументов в процедуру.
- •52 Программная модель математического сопроцессора.
- •2. Три служебных регистра:
35 Синхронизация потоков с объектами ядра. Функции ожидания объектов ядра
Механизмы синхронизации с помощью критических секций и на основе глобальных переменных процесса, обладают существенным недостатком — они не подходят для синхронизации потоков разных процессов. В таких случаях операционная система должна предоставлять потокам системные объекты синхронизации, которые были бы видны для всех потоков, даже если они принадлежат разным процессам и работают в разных адресных пространствах.
Примерами таких синхронизирующих объектов ОС являются системные семафоры, мьютексы, события, таймеры и другие — их набор зависит от конкретной ОС, которая создает эти объекты по запросам процессов. Чтобы процессы могли разделять синхронизирующие объекты, в разных ОС используются разные методы. Некоторые ОС возвращают указатель на объект. Этот указатель может быть доступен всем родственным процессам, наследующим характеристики общего родительского процесса. В других ОС процессы в запросах на создание объектов синхронизации указывают имена, которые должны быть им присвоены. Далее эти имена используются разными процессами для манипуляций объектами синхронизации. В таком случае работа с синхронизирующими объектами подобна работе с файлами. Их можно создавать, открывать, закрывать, уничтожать. Кроме того, для синхронизации могут быть использованы такие «обычные» объекты ОС, как файлы, процессы и потоки. Все эти объекты могут находиться в двух состояниях: сигнальном и несигнальном — свободном. Для каждого объекта смысл, вкладываемый в понятие «сигнальное состояние», зависит от типа объекта. Так, например, поток переходит в сигнальное состояние тогда, когда он завершается. Процесс переходит в сигнальное состояние тогда, когда завершаются все его потоки. Файл переходит в сигнальное состояние в том случае, когда завершается операция ввода-вывода для этого файла. Для остальных объектов сигнальное состояние устанавливается в результате выполнения специальных системных вызовов. Приостановка и активизация потоков осуществляются в зависимости от состояния синхронизирующих объектов ОС.
В Windowsесть специальные функции ожидания синхронизирующих объектов ядра (wait-функции) позволяют потоку в любой момент приостановиться и ждать освобождения какого-либо объекта ядра. Из всего семейства этих функций чаще всего используетсяWaitForSingleObject:
DWORDWaitForSingleObject(HANDLEhObject,DWORDdwMilliseconds);
Когда поток вызывает эту функцию, первый параметр, hObject, идентифицирует объект ядра, поддерживающий состояния «свободен-занят». Второй параметр,dwMilliseconds, указывает, сколько времени (в миллисекундах) поток готов ждать освобождения объекта.
Следующий вызов сообщает системе, что поток будет ждать до тех пор, пока не завершится процесс, идентифицируемый описателем hProcess.
WaitForSingleObject(hProcess,INFINITE);
В данном случае константа INFINITE, передаваемая во втором параметре, подсказывает системе, что вызывающий поток готов ждать этого события хоть целую вечность. Именно эта константа обычно и передается функцииWaitForSingleObject, но можно указать любое значение в миллисекундах.
Функция WaitForMultipleObjectsаналогичнаWaitForSingleObjectcтем исключением, что позволяет ждать освобождения сразу нескольких объектов или какого-то одного из списка объектов:
DWORD WaitForMultipleObjects( DWORD dwCount,
CONST HANDLE* phObjects, BOOL fWaitAll, DWORD dwMilliseconds);
Параметр dwCountопределяет количество интересующих объектов ядра Его значение должно быть в пределах от 1 доMAXIMUM_WAIT_OBJECTS(в заголовочных файлахWindowsоно определено как 64). ПараметрphObject— это указатель на мас сив описателей объектов ядра.
WaitForMultipleObjectsприостанавливает поток и заставляет его ждать освобождения либо всех заданных объектов ядра, либо одного из них. ПараметрfWaitAllкак раз и определяет, чего именно требуется от функции. Если он равенTRUE, функция не даст потоку возобновить свою работу, пока не освободятся все объекты.
Параметр dwMillisecondsидентичен одноименному параметру функцииWaitForSingleObject.
Возвращаемое значение функции WaitForMultipleObjectsсообщает, почему возобновилось выполнение вызвавшего ее потока.