Лабораторная работа: Порождение и завершение процессов и нитей

Цель работы

Изучение методов и средств порождения процессов и нитей. Изучение способов синхронизации процессов и нитей через ожидание окончания их выполнения.

Список используемых системных вызовов

CloseHandle, CreateProcess, CreateThread, ExitProcess, ExitThread, GetCommandLine, GetCurrentProcess, GetCurrentProcessId, GetCurrentThread, GetCurrentThreadId, GetExitCodeProcess, OpenProcess, OpenThread, ResumeThread, SuspendThread, Sleep, ThreadProc, TerminateProcess, TerminateThread, WaitForSingleObject, WaitForMultipleObjects.

Системные перехватчики (HOOK).

Системные перехватчики – это спец-е функции, вызываемые ОС при возникновении условий перехвата. Чаще всего системные перехватчики работают с оконными сообщениями. Системный перехватчик можно установить на выбранную нить или на все нити текущего рабочего стола.
Если Системный перехватчик должен перехватывать не только сообщения текущего процесса, но и сообщения других процессов этого рабочего стола, то функция перехвата должна находиться в DLL.

Адрес этой функции можно получить с помощью динамического связывания. После установления перехватчика эта библиотека будет внедрена во все процессы, для которых требуется активировать функцию перехвата. Причем эта функция будет вызываться в контексте той нити, которая работает с оконным сообщением.

Динамически загружаемые библиотеки (DLL). Связывание во время выполнения программы.

Динамически загружаемые библиотеки связываются с программами и между собой с помощью таблиц экспорта и импорта, находящихся внутри файлов, библиотек и программ.

RVA – relative virtual address – формализация данных в файле.

Сегментно-страничный способ организации памяти.

Как и в сегментном способе прога разбивается на сегменты и виртуальный адрес содержит номер сегмента и смещение, которое состоит из 2-х полей: виртуальной страницы и индекса внутри страницы.

Из следующего рисунка видно насколько усложняется и отсюда следует - замедляется обращение к памяти. Единственный способ решения этой проблемы – аппаратный. Наиболее эффективным аппаратным способом поиска дескрипторов является ассоциативный КЕШ. В качестве тэга берут номер сегмента и страницы, а рез-т ф-и – адрес физической страницы.

Этот способ вобрал в себя все достоинства. Разбитие проги на сегменты позволяет размещать сегменты в памяти целиком. Сегменты разбиваются на страницы и редко используемый код удаляется из памяти. Т.К прога разбита на сегменты согласно внутренней логике, число межсегментных переходов минимально. Страницы сегмента находятся в памяти, но не подряд, а рассыпаны и можно не заботиться о фрагментации памяти. Наличие сегментов даёт эффективную защиту одной проги от другой, возможна динамическая компоновка.
Примеры: ОС Unix, упрощённо: наиболее упрощённо – Windows 9x, менее упрощённо Windows NTbased и ОС Linux.

Страничная организация памяти.

При этом способе организации памяти все фрагменты проги на которые она разбивается, за исключением последний части, получаются одинаковыми и эти части называются страницами. Говорят, что память разбивается на физические страницы, а прога и данные на виртуальные страницы. Часть виртуальных страниц размещается в ОП. Другая часть во внешней памяти на диске в файле свопинга.
Величина любой страницы выбирается равной степени двойки. Т.о. любой адрес в проге становится не одномерным, а двумерным, а именно № страницы и № смещения внутри страницы. Задача ОС во время исполнения проги сводится к отображения виртуальной страницы на физическую. Суммарный размер виртуальных страниц м.б. > размера ОП.

Чтобы правильно отобразить страницы нужно иметь таблицу соответствия виртуальных страниц физическим, такая таблица называется таблицей страниц. Дискриптер страницы проще дискриптера сегмента- не нужно поле длинны, т.к. все страницы одинакового размера. Трансляция виртуальных таблиц на физические идет с помощью бита присутствия, как и в сегментном способе адресации памяти. У каждой страницы есть свой код доступа, если прога требует доступ с правами большими чем код доступа страницы, то в таком доступе отказывается.