- •Назначение, состав и функции операционных систем (ос).
- •Классификация ос. Особенности ос реального времени. Виды ос реального времени. Примеры ос реального времени.
- •Вычислительные процессы и ресурсы. Виды ресурсов. Управление ресурсами.
- •Переносимость приложений и способы ее достижения. Платформа и технологии .Net. Управляемый и неуправляемый код. Сборка мусора – достоинства и недостатки.
- •Процессы и управление процессами в ос Linux. Средства получения информации о процессах ос Linux.
- •Функции Win api для мониторинга процессов и потоков ос Windows.
- •Функции Win api для получения дополнительной информации о процессах и потоках.
- •Планирование и диспетчеризация потоков в ос. Алгоритмы планирования в системах пакетной обработки и диалоговых системах.
- •Уровни приоритета процесса и потока в ms Windows xp. Функции Win api для изменения приоритетов процесса и потока. Недостижимые значения приоритетов потока.
- •Динамическое повышение приоритета потока. Необходимость. Графики изменения величины приоритета для различных ситуаций динамического повышения приоритета.
- •1)Динамическое повышение приоритета после завершения ввода-вывода
- •2)Динамическое повышение приоритета по окончании ожидания событий и семафоров.
- •Типы потоков по способу их взаимодействия. Понятие критического участка. Необходимость использования синхронизации.
- •Семафорные примитивы Дейкстры – назначение и использование для синхронизации конкурирующих и сотрудничающих (поставщик-потребитель) потоков.
- •Средства синхронизации потоков пользовательского режима. Достоинства и недостатки.
- •Объекты ядра ос ms Windows, используемые для синхронизации потоков.
- •Мьютексы как средство синхронизации потоков. Функции Win32 api для создания и использования мьютекса. Отказ от мьютекса. Пример использования мьютекса.
- •Семафоры. Виды семафоров и их применение. Функции Win32 api для создания и использования семафора. Пример использования семафора.
- •События. Виды событий. Примеры записи функций Win32 api для создания и использования событий. Пример использования событий для синхронизации конкурирующих и сотрудничающих потоков.
- •Функция Win32 api ожидания нескольких событий. Пример использования функции.
- •Var pHandles; // адрес массива объектов
- •Понятие тупиковой ситуации. Модель Холта и её использование. Пример модели Холта. Средства анализа тупиковых ситуаций от компании Microsoft.
- •Условия возникновения тупика. Стратегии Хавендера. Методы борьбы с тупиками.
- •Сегментация, страничная и сегментно-страничная организация памяти. Виды фрагментации памяти. Оценка потерь памяти вследствие фрагментации. Методы борьбы с фрагментацией.
- •Формат дескрипторов мп Intel в защищенном режиме i80386.
- •Байт доступа. Назначение битов. Условие доступа программы к сегменту данных. Поле доступа. Назначение бита дробности.
- •Алгоритмы замещения страниц виртуальной памяти (сам)
- •Четыре метода управления виртуальной памятью. Области применения каждого метода. Понятие региона виртуального адресного пространства (вап). Свойства региона вап.
- •Резервирование регионов в адресном пространстве и передача физической памяти региону. Используемые функции Win32 и их параметры.
- •Кучи. Необходимость создания дополнительных куч процесса. Методы доступа к куче. Операции с кучами. Используемые функции Win32.
- •Функция Win32 api получения сведений о регионах виртуального адресного пространства. Пример использования.
- •Файлы, проецируемые в память. Области применения. Этапы проецирования. Назначение каждого этапа, используемые функции Win32.
- •Динамически загружаемые библиотеки. Области применения. Основные dll ms Windows. Достоинства и недостатки dll. Создание dll.
- •Способы передачи данных между процессами. Схема передачи данных между процессами без использования средств ос и с использованием средств ос. Обмен сообщениями. Каналы и почтовые ящики.
- •Использование именованных каналов. Сокеты. Назначение. Области применения.
- •Дополнительный вопросы: Назначение планировщика задач
- •Краткосрочный планировщик
- •Диспетчер
- •Статическое и динамическое планирование
- •Алгоритм планирования rr
- •Планирование в системах пакетной обработки. Кратчайшее задание первое.
Объекты ядра ос ms Windows, используемые для синхронизации потоков.
Оперaциoннaя системa Windows пoддерживaет рaзличные типы oбъектoв синхрoнизaции.
Первый тип — клaссический семaфoр. При испoльзoвaнии семaфoрa дoступ к ресурсу мoжнo пoлнoстью синхрoнизирoвaть, т. е. oдин и тoлькo oдин пoтoк или прoцесс смoжет oбрaщaться к ресурсу в кoнкретный мoмент времени, или семaфoр мoжет пoзвoлить лишь небoльшoму числу прoцессoв или пoтoкoв пoлучaть дoступ в любoй мoмент времени. Семaфoры реaлизoвaны с пoмoщью счетчика, текущее значение кoтoрoгo увеличивается, кoгдa семaфoр предoстaвляется прoгрaмме, и уменьшaется, кoгдa он oсвoбoждaется.
Втoрoй тип oбъектa синхрoнизaции — мьютекс (mutex). Мьютекс синхрoнизирует дoступ к ресурсу тaким oбрaзoм, что oдин и тoлькo oдин пoтoк или прoцесс мoжет oбрaщaться к ресурсу в кaждый мoмент времени.
Третий тип oбъектa синхрoнизaции — сoбытие. Его мoжнo применять для блoкирoвки дoступa к ресурсу до тех пор, пoкa кaкoй-нибудь другoй пoтoк или прoцесс не сooбщит, что ресурс мoжнo испoльзoвaть.
Мьютексы как средство синхронизации потоков. Функции Win32 api для создания и использования мьютекса. Отказ от мьютекса. Пример использования мьютекса.
Мьютекс – это синхронизирующий объект, когда oдин и тoлькo oдин пoтoк или прoцесс мoжет oбрaщaться к ресурсу в кaждый мoмент времени.
позволяет множеству потоков упорядочить доступ к разделяемым данным. Поток захватывает мьютекс в монопольное владение и остается владельцем, пока сам же его не освободит.
Создание мьютекса
HM=CreateMutex(указатель на атрибут безопасности, ссылка-null, началь.сост.объекта –true, false, Null)
Использование
до: WaitForSingleObject(объект, сколько ждать)
критический участок
после: ReleaseMutex(объект);
CloseHandle(HM)
Пример: использование Mutex для синхронизации конкурирующих потоков:
HM=CreateMutex(Null, false,Null);
T1=CreateThread(Null, …);
T2=CreateThread(Null, …);
WaitForMultipleObjects();
CloseHandle(HM);
…
W
aitForSingleObject(HM,
INFINIIY) – ф-я
потока
Т1
// крит.участок
ReleaseMutex(HM);
Объект-мьютекс отличается от других синхронизирующих объектов ядра тем, что занявшему его потоку передаются права на владение им. Прочие синхронизирующие объекты могут быть либо свободны, либо заняты и только, а мьютексы способны еще и запоминать, какому потоку они принадлежат. Отказ от мьютекса происходит, когда ожидавший его поток захватывает этот объект, переводя его в занятое состояние, а потом завершается. В таком случае получается, что мьютекс занят и никогда не освободится, поскольку другой поток не сможет этого сделать. Система не допускает подобных ситуаций и, заметив, что произошло, автоматически переводит мьютекс в свободное состояние.
Семафоры. Виды семафоров и их применение. Функции Win32 api для создания и использования семафора. Пример использования семафора.
Данный объект синхронизации позволяет ограничить доступ потоков к объекту синхронизации на основании их количества. Например, мы хотим, чтобы к какому-нибудь объекту могли обратиться максимум 3 потока. Не больше. Тогда нам нужен семафор. Сначала семафор инициализируется и ему передается количество потоков, которые к нему могут обратиться. Дальше при каждом обращении к ресурсу его счетчик уменьшается. Когда счетчик уменьшится до 0, к ресурсу обратиться больше нельзя. При отсоединении потока от семафора его счетчик увеличивается, что позволяет другим потокам обратиться к нему.
Сигнальному состоянию соответствует значение счетчика больше нуля. Когда счетчик равен нулю, семафор считается не установленным
Сначала нам нужно создать семафор, а для этого есть функция CreateSemaphore(). Эта функция создает семафор с заданным начальным значением счетчика и максимальным значением. Это значение ограничивает доступ. Функция OpenSemaphore() осуществляет доступ к семафору. Функция ReleaseSemaphore() увеличивает значение счетчика. Счетчик может меняться от 0 до максимального значения. После завершения работы достаточно вызвать CloseHandle().
Классический семафор – семафор, реализованный как обычный счетчик, увеличивающий свое значение при освобождение процессом семафора и уменьшающим свое значение при использовании.
Данный тип семафора может использоваться, как для синхронизации работы с ресурса, который может обслуживать только один процесс так и с ресурсом, который может обслуживать одновременно несколько процессов.
Исключающий семафор – специализированный вид классического семафора со счетчиком равным 1.
