УЗНАЙ ЦЕНУ

(pdf, doc, docx, rtf, zip, rar, bmp, jpeg) не более 4-х файлов (макс. размер 15 Мб)


↑ вверх
Тема/ВариантУправление процессами в Windows
ПредметПрограммирование
Тип работыкурсовая работа
Объем работы12
Дата поступления12.12.2012
890 ₽

Содержание

Оглавление 1 Введение 3 2 Основные компоненты 3 2.1 Задание (task) 3 2.2 Процесс (process) 3 2.3 Поток (thread) 4 2.4 Волокно (fiber) 5 3 Вызовы API для управления процессами и потоками 5 3.1 Создание процессов 5 3.2 Создание потоков 7 3.3 Создание волокон 7 3.4 Межпроцессное взаимодействие 7 3.4.1 Почтовые ящики (Mailslots) 8 3.4.2 Сокеты (Sockets) 8 3.5 Механизмы синхронизации 8 3.5.1 Семафор (Semaphore) 8 3.5.2 Мьютексы (Mutex) 9 3.5.3 Критические секции (Critical Sections) 9 3.5.4 События (Events) 9 4 Заключение 10 Список литературы 11

Введение

1 Введение В операционной системе Windows 2000 поддерживаются традиционные процес¬сы, способные общаться и синхронизироваться друг с другом так же, как это дела¬ют процессы в UNIX. Каждый процесс содержит, по крайней мере, один поток, со¬держащий, в свою очередь, как минимум одно волокно (облегченный поток). Более того, для управления определенными ресурсами процессы могут объединяться в задания. Все вместе — задания, процессы, потоки и волокна — образует общий набор инструментов для управления ресурсами и реализации параллелизма как на однопроцессорных, так и на многопроцессорных машинах. 2 Основные компоненты 2.1 Задание (task) Задание в Windows 2000 представляет собой набор, состоящий из одного или нескольких процессов, управляемых как единое целое. В частности, с каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соот¬ветствующем объекте задания. Квоты включают такие пункты, как максимальное количество процессов (не позволяющее процессам задания создавать бесконтроль¬ное количество дочерних процессов), суммарное время центрального процессора, доступное для каждого процесса в отдельности и для всех процессов вместе, а также максимальное количество используемой памяти для процесса и для всего задания. Задания также могут ограничивать свои процессы в вопросах безопасности, на¬пример, запрещать им получать права администратора даже при наличии правильного пароля. 2.2 Процесс (process) Процессы являются более важны¬ми, чем задания. Как и в системе UNIX, процессы представляют собой контейнеры для ресур¬сов. У каждого процесса есть 4-гигабайтное адресное пространство, в котором пользователь занимает нижние 2 Гбайт (в версиях Windows 2000 Advanced Server и Datacenter Server этот размер может быть по желанию увеличен до 3 Гбайт), а операционная система занимает остальную его часть. Таким образом, операци¬онная система присутствует в адресном пространстве каждого процесса, хотя она и защищена от изменений с помощью аппаратного блока управления памятью MMU. У процесса есть идентификатор процесса, один или несколько потоков, список дескрипторов (управляемых в режиме ядра) и маркер доступа, хранящий информацию защиты. Процессы создаются с помощью вызова Win32, который принимает на входе имя исполняемого файла, определяющего начальное содер¬жимое адресного пространства, и создает первый поток. Процесс в Windows представлен блоком процесса, создаваемым ис¬полнительной системой (EPROCESS). Кроме многочисленных атрибутов, относящихся к процессу, в блоке EPROCESS содержатся указатели на неко¬торые структуры данных. Так, у каждого процесса есть один или более по¬токов, представляемых блоками потоков исполнительной системы (ЕТНREAD). Блок EPROCESS и связанные с ним структуры данных — за исключением блока переменных окружения процесса (process environment block, РЕВ) — суще¬ствуют в системном пространстве. РЕВ находится в адресном пространстве процесса, так как содержит данные, модифицируемые кодом пользователь¬ского режима. Для каждого процесса, выполняющего Windows-программу, процесс под¬системы Windows (Csrss) поддерживает в дополнение к блоку EPROCESS параллельную структуру данных. Кроме того, часть подсистемы Windows, ра¬ботающая в режиме ядра (Win32k.sys), поддерживает структуру данных для каждого процесса, которая создается при первом вызове потоком любой функции USER или GDI, реализованной в режиме ядра. Блок EPROCESS состоит из следующих элементов: 1. Блок процесса ядра (KPROCESS). 2. Идентификатор процесса. 3. Блок квот. 4. Дескрипторы виртуальных адресов (virtual address descriptors). 5. Информация о рабочем наборе. 6. Информация о виртуальной памяти. 7. LPC-порт исключений. 8. Отладочный LPC-порт. 9. Маркер доступа (ACCESS_TOKEN). 10. Таблица описателей. 11. Карта устройств. 12. Блок переменных окружения процесса. 13. Блок процесса подсистемы Windows. 2.3 Поток (thread) Каждый процесс начинается с одного потока, но новые потоки могут создавать¬ся динамически. Потоки формируют основу планирования центрального процес¬сора, так как операционная система всегда для запуска выбирает поток, а не про¬цесс. Соответственно, у каждого потока есть состояние (готовый, работающий, блокированный и т. д.), тогда как у процессов состояний нет. Потоки могут дина¬мически создаваться вызовом Win32, которому в адресном пространстве процесса задается адрес начала исполнения. У каждого потока есть идентификатор потока, выбираемый из того же пространства, что и идентификаторы процессов, поэтому один и тот же идентификатор никогда не будет использован одновременно для процесса и для потока. Идентификаторы процессов и потоков кратны четырем, поэтому они могут использоваться в роли байтовых индексов в таблицах ядра, как и другие объекты. Как правило, поток работает в пользовательском режиме, но когда он обраща¬ется к системному вызову, то переключается в режим ядра, после чего продолжает выполнять тот же поток, с теми же свойствами и ограничениями, которые были у него в режиме пользователя. У каждого потока есть два стека, один используется в режиме ядра, а другой в режиме пользователя. Помимо состояния, идентифика¬тора и двух стеков, у каждого потока есть контекст (в котором сохраняются его регистры, когда он не работает), приватная область для локальных переменных, а также может быть свой собственный маркер доступа. Если у потока есть свой мар¬кер доступа, то он перекрывает маркер доступа процесса, чтобы клиентские потоки могли передать свои права доступа серверным потокам, выполняющим работу для них. Когда поток завершает свою работу, он может прекратить свое существование. Когда прекращает существование последний активный поток, процесс завершается. Потоки представляют собой концепцию планирования, а не концепцию владения ресурсами. Любой поток может получить доступ ко всем объектам его процесса. Все, что ему для этого нужно сделать, — это заполучить дес¬криптор и обратиться к соответствующему вызову Win32. Для потока нет ника¬ких ограничений доступа к объекту, связанных с тем, что этот объект создан или открыт другим потоком. Система даже не следит за тем, какой объект каким потоком создан. Как только дескриптор объекта помещен в таблицу дескрипторов про¬цесса, любой поток процесса может его использовать. Помимо нормальных потоков, работающих в процессах пользователя, в опера¬ционной системе Windows 2000 есть множество процессов-демонов, не связанных ни с каким пользовательским процессом (они ассоциированы со специальной си¬стемой или простаивающими процессами). Некоторые демоны выполняют адми¬нистративные задачи, как, например, запись «грязных» страниц на диск, тогда как другие формируют пул, и ими могут пользоваться компоненты исполняющей системы или драйверы, которым нужно выполнить какие-либо асинхронные за¬дачи в фоновом режиме. 2.4 Волокно (fiber) Переключение потоков в операционной системе Windows 2000 занимает до¬вольно много времени, так как для этого необходимо переключение в режим ядра, а затем возврат в режим пользователя. Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 используются волокна, подобные потокам, но планируемые в пространстве пользователя создавшей их программой (или ее системой поддержки исполнения). У каждого потока может быть несколько воло¬кон, так же как у процесса может быть несколько потоков, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон, после чего для работы выбирается другое волокно в контексте того же потока. Операционная система не знает о смене волокон, так как все тот же поток продолжает работу. Так как операционная система ничего не знает о волокнах, то с ними, в отличие от заданий, процессов и потоков, не связаны объекты испол¬няющей системы. Для управления волокнами нет и настоящих системных вызо¬вов. Однако для этого есть вызовы Win32 API. Они относятся к тем вызовам Win32 API, которые не обращаются к системным вызовам. 3 Вызовы API для управления процессами и потоками 3.1 Создание процессов Новые процессы создаются при помощи функции Win32 API CreateProcess (см. [4]). У этой функции 10 параметров, каждый из которых может задаваться в различных вариантах. Такая схема значительно сложнее схемы, применяемой в UNIX, в которой системный вызов fork не имеет параметров, а у системного вы¬зова exec их всего три: указатели на имя исполняемого файла, массив параметров командной (проанализированной) строки и строки окружения. У вызова CreateProcess следующие 10 параметров: 1. Указатель на имя исполняемого файла. 2. Командная строка (непроанализированная). 3. Указатель на описатель защиты процесса. 4. Указатель на описатель защиты для начального потока. 5. Бит, управляющий наследованием дескрипторов. 6. Разнообразные флаги (например, режим ошибки, приоритет, отладка, кон¬соли).

Литература

Список литературы [1] Таненбаум Э., Современные операционные системы. 2-е изд. ¬¬¬— СПб.: Питер, 2002, 1040 с. [2] Руссинович М. и Соломон Д., Внутреннее устройство Microsoft Windows: Windows 2003 Server, Windows XP и Windows 2000. Мастер-класс. / Пер. с англ. — 4-е изд. — М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер; 2005, 992 с. [3] Хелен Кастер, Основы Windows NT и NTFS / Пер. с англ. — М.: Издательский отдел “Русская редакция” ТОО “Channel Trading Ltd.”, 1996, 440 c. [4] http://msdn.microsoft.com/en-us/library/ms682425.aspx - MSDN, описание функции CreateProcess. [5] http://msdn.microsoft.com/en-us/library/ms682453(VS.85).aspx – MSDN, описание функции CreateThread. [6] http://msdn.microsoft.com/en-us/library/ms682115(VS.85).aspx – MSDN, описание функции ConvertThreadToFiber. [7] http://msdn.microsoft.com/en-us/library/ms682402(VS.85).aspx – MSDN, описание функции CreateFiber. [8] http://msdn.microsoft.com/en-us/library/ms686350(VS.85).aspx – MSDN, описание функции SwithToFiber. [9] http://msdn.microsoft.com/en-us/library/aa365147.aspx - MSDN, описание функции CreateMailslot. [10] http://msdn.microsoft.com/en-us/library/ms740632(VS.85).aspx – MSDN, описание интерфейса WinSock. [11] http://msdn.microsoft.com/en-us/library/ms682438(VS.85).aspx – MSDN, описание функции CreateSemaphore. [12] http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx – MSDN, описание функции DuplicateHandle. [13] http://msdn.microsoft.com/en-us/library/ms685071(VS.85).aspx – MSDN, описание функции ReleaseSemaphore [14] http://msdn.microsoft.com/en-us/library/ms687032(VS.85).aspx – MSDN, описание функции WaitForSingleObject [15] http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx – MSDN, описание функции CreateMutex. [16] http://msdn.microsoft.com/en-us/library/ms685066(VS.85).aspx – MSDN, описание функции RealeaseMutex. [17] http://msdn.microsoft.com/en-us/library/ms682608(VS.85).aspx – MSDN, описание функции EnterCriticalSection. [18] http://msdn.microsoft.com/en-us/library/ms684169(VS.85).aspx – MSDN, описание функции LeaveCriticalSection [19] http://msdn.microsoft.com/en-us/library/ms686211(VS.85).aspx – MSDN, описание функции SetEvent. [20] http://msdn.microsoft.com/en-us/library/ms685081(VS.85).aspx – MSDN, описание функции ResetEvent. [21] http://msdn.microsoft.com/en-us/library/ms684914(VS.85).aspx – MSDN, описание функции PulseEvent.
Уточнение информации

+7 913 789-74-90
info@zauchka.ru
группа вконтакте