- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
Одна из особенностей мультипрограммных ОС состоит в том, что при их функционировании в системе могут параллельно развиваться и существовать несколько вычислительных процессов.
С точки зрения внешнего наблюдателя, каждый из этих процессов является последовательным, если структура аппаратной части компьютера является однопроцессорной. Поскольку все процессы присутствуют в системе, и в частности, в ОП, одновременно, то с точки зрения работы ОС, их можно интерпретировать как параллельные. Это позволяет считать, что под параллельными процессами можно понимать не только процессы, одновременно выполняющиеся в разных процессорах или каналах ввода/вывода, но и те последовательные процессы, которые совместно используют (разделяют) один и тот же процессор, ОП, или другой системный ресурс, и хотя бы частично перекрываются во времени.
Мультипрограммная ОС на логическом уровне может быть представлена как совокупность последовательных процессов, которые, с одной стороны, конкурируют между собой за использование ресурсов и переходят из одного состояния в другое, а с другой стороны – действуют почти независимо друг от друга и устанавливают в необходимые моменты связи между собой путем передачи друг другу данных, сообщений, или синхронизирующих сигналов. В связи с этим, все параллельные процессы можно разделить на две группы:
Независимые – характеризуются тем, что множества данных которые они используют, не пересекаются друг с другом. Под данными нужно понимать общие области ОП, а также файлы внешней памяти. Независимые процессы не влияют на результаты работы друг друга, поскольку не могут изменить значения данных других процессов. Они могут быть лишь причиной задержек в исполнении других процессов, поскольку разделяют наряду с ними ресурсы системы;
Взаимодействующие процессы совместно используют различные системные ресурсы, и в частности, общие данные. Выполнение одного процесса этого типа может повлиять на выполнение другого.
Различные системные ресурсы могут совместно использоваться несколькими процессами. Такие ресурсы называются разделяемыми. В каждый момент времени, к ресурсу такого типа может иметь доступ только один из взаимодействующих процессов. Ресурсы системы, которые не допускают одновременного использования несколькими процессами, называются критическими. Если нескольким взаимодействующим процессам необходимо использовать критический ресурс, то в мультипрограммных ОС должна быть предусмотрена защита от одновременного доступа процессов к таким ресурсам. В противном случае, в ходе работы системы могут возникать ошибки (тупиковые ситуации/конфликты/клинчи), когда несколько процессов одновременно пытаются получить доступ к критическому ресурсу. Причиной возникновения таких ошибок является то, что процессы в мультипрограммных системах развиваются с разными абсолютными скоростями, и при этом, их относительные скорости неизвестны и не могут быть изменены в самом процессе. Поэтому влияние, которое оказывают друг на друга взаимодействующие процессы, в большинстве случаев непредсказуемо и невоспроизводимо.
Взаимодействовать друг с другом могут процессы двух типов:
конкурирующие;
совместно выполняющие общую вычислительную работу.
Конкурирующие процессы периодически получают доступ к разделяемым ресурсам, но при этом не обмениваются данными между собой. Процессы второго типа постоянно обмениваются данными друг с другом таким образом, что результаты вычислений одного процесса передаются другому. Возможна и обратная передача данных.
Для функционирования ОС потенциально опасным является, прежде всего, некорректное исполнение конкурирующих процессов, вследствие нерегламентированного доступа к критическим ресурсам. Для регламентации доступа, то есть определения правил такого доступа, в ОС должны быть созданы средства взаимного исключения, которые не позволяли бы двум конкурирующим процессам одновременно обращаться к одному и тому же разделяемому ресурсу. Смысл применения этих средств состоит в том, что до окончания периода обращения одного процесса к такому ресурсу должна быть исключена возможность обращения к нему программ из другого процесса.
Подобная ситуация, возникающая между двумя процессами, называется взаимным исключением.
Кроме средств взаимного исключения, в системе должны быть предусмотрены средства, синхронизирующие работу взаимодействующих процессов. Они необходимы для того, чтобы обеспечить возможность нормального обмена данными между такими процессами.
Те области в программах конкурирующих процессов, в которых происходит обращение к критическим ресурсам, называются критическими секциями (критическими интервалами).
Решение проблемы корректного доступа к критическим секциям заключается в организации такого доступа, когда только одному из процессов в один и тот же момент времени разрешается входить в свою критическую секцию.
Эта задача, в общем случае, является достаточно сложной, поскольку критическая секция – это не просто последовательность операторов программы, а последовательность действий, которые выполняются этими операторами. Если какой-либо процесс уже находится в своей критической секции, то другой процесс может продолжать свое исполнение, но без входа в критическую секцию. Взаимное исключение необходимо в том случае, когда процессы начинают одновременно обращаться к разделяемым ресурсам.
Если процессы выполнят операции, которые не приводят к конфликтам, то им обеспечивается возможность постоянного параллельного выполнения. Когда процесс выходит из своей критической секции, то одному из других процессов, ожидающих входа в свои критические секции, должно быть разрешено продолжение работы в своих секциях.
В современных системах, для решения проблемы взаимного исключения, а также связанных с ней проблем синхронизации и обмена данными, используются специальные средства, называемые средствами межпроцессных коммуникаций.
Эти средства делятся на две группы:
средства синхронизации процессов и потоков, в которые входят средства, обеспечивающие решение проблемы взаимного исключения;
средства обмена данными между процессами и потоками.
