
- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
Любой процесс в ОС Windows определяется как основа выполняемой программы, состоящая из двух компонентов:
Объект ядра – это та её часть, которая включает служебные структуры данных, с помощью которых, при вызове системных функций, осуществляется управление выполнением программ потоков процесса;
Адресное пространство памяти (область памяти), в котором представляются программные коды и данные всех .exe и .dll модулей программ потоков.
Средствами системы могут создаваться несколько типов объектов ядра, с помощью которых могут выполняться различные операции. Примерами таких объектов являются:
Процессы – Process objects;
Файлы – Files;
Проекции файлов – Files mapping;
Задания – Job;
Мьютексы – Mutex;
Семафоры – Semaphore;
Почтовые ящики – Mails;
Каналы – Pipe.
5, 6 – объекты синхронизации. 7, 8 – объект обмена данными.
Каждый объект интерпретируется в системе, как некоторая служебная структура памяти, в элементах которой указывается информация об объекте. Часть элементов этой структуры присутствует во всех типах объектов. Некоторые являются специфичными для каждого отдельного типа. Все объекты создаются системными функциями. Программа пользователя может обращаться к объектам ядра с помощью этих функций. Когда функция вызывается, то в результате своего выполнения, она создает соответствующий объект ядра, заполняет её исходными данными, и возвращает в программу дескриптор объекта, который далее и используется в программе пользователя.
В ОС, кроме объектов ядра, существуют и могут использоваться объекты других типов, например: окна, меню, шрифты, курсоры мыши, и рад других. Перечисленные объекты относятся к GDI – объектам пользовательского интерфейса.
Для того чтобы процесс мог бы быть запущен на выполнение, в системе должен быть создан соответствующий объект ядра, и кроме того, образован хотя бы один поток процесса. В потоке должна выполняться последовательность команд требуемой прикладной или системной программы. Для этого, процессу при его запуске выделяется область адресного пространства памяти (виртуального адресного пространства, которое при выполнении в процессоре трансформируется в физическое адресное пространство).
Любой процесс может иметь несколько потоков. Каждому потоку при его создании предоставляется возможность использования индивидуального набора регистров процессора, и собственного стека. Совокупность состояний регистров и области памяти, отводимой под стек, образует контекст потока.
Чтобы все потоки процесса выполнялись в мультипрограммном режиме, система периодически отводит каждому из них квант процессорного времени, в соответствии с дисциплиной распределения RR.
В ходе создания процесса образуется самый первый (первичный) поток процесса. Он всегда создается системой автоматически. В дальнейшем, этот поток может образовать другой поток того же процесса, тот, в свою очередь, - третий, и т. д. В результате, в системе возникает состояние многопоточности, которое может образовываться для каждого процесса.
В некоторых версиях Windows все потоки процесса выполняются на одном и том же процессоре, то есть в системе реализуется режим мультипрограммной работы на одном процессоре с вытесняющей многозадачностью.
Начиная с некоторых версий Windows 2000 возможен режим, при котором программными средствами каждый поток закрепляется за отдельным процессором, если процессорная часть компьютера позволяет это сделать. В этом случае, обеспечивается мультипроцессорный мультипрограммный режим. Аналогичный режим реализуется в компьютерах с многоядерными процессорами.
Все пользовательские программы, выполняемые под управлением Windows, подготавливаются программистами с помощью соответствующих систем программирования. В большинстве из них, основная часть исходного кода программы размещается программистом внутри т.н. основной или входной функции. Существует несколько видов таких функций:
main ();
wmain ();
Winmain ();
wWinmain ().
w – использование Юникода.
Существуют особенности в выполнении этих функций. В момент запуска на выполнение программного кода этих функций, управление получают не первые команды тела этих функций, а происходит обращение (вызов) другой функции системы программирования, которая называется стартовой функцией. Она хранится в библиотеке системы программирования и автоматически включается в исполняемый файл программы потока компоновщиком на этапе создания этого файла.
Стартовая функция реализует следующие операции общесистемного характера:
Считывает из памяти указатель на полную командную строку запускаемого процесса;
Инициализирует глобальные переменные из библиотеки системы программирования;
Считывает указатель на переменные системного окружения процесса;
Инициализирует динамически используемую область памяти, отводимую для программы потока;
Вызывает конструкторы всех глобальных и статических объектов для соответствующих классов объектно-ориентированной системы программирования;
Передает управление на первую исполняемую команду основной функции программы первичного потока.
После этого, программа начинает выполняться в обычном режиме. После того, как выполнятся до конца все команды основной функции, управление снова возвращается к стартовой функции. Она вызывает деструкторы всех глобальных и статических объектов в программе первичного потока.
Если к этому моменту все другие потоки процесса завершились, стартовая функция вызывает функцию завершения процесса ExitProcess (). Эта функция уничтожает процесс (его объект ядра) и устанавливает код его завершения.