Вконтакте Facebook Twitter Лента RSS

Управление процессами ОС Windows с помощью диспетчера задач. Управление процессами ОС Windows с помощью диспетчера задач Система управления процессами в ос windows 7

Управление процессами

Важнейшей частью операционной системы, непосредственно влияющей на функ­ционирование вычислительной машины, является подсистема управления процессами.

Для каждого вновь создаваемого процесса ОС генерирует системные информа­ционные структуры, которые содержат данные о потребностях процесса в ресур­сах вычислительной системы, а также о фактически выделœенных ему ресурсах. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, процесс можно также определить как некоторую заявку на по­требление системных ресурсов.

Чтобы процесс мог быть выполнен , операционная система должна назначить ему область оперативной памяти , в которой будут размещены коды и данные процес­са, а также предоставить ему крайне важно е количество процессорного времени. Вместе с тем, процессу может понужнобиться доступ к таким ресурсам, как файлы и устройства ввода-вывода.

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

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

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

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

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

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

Таким образом , подсистема управления процессами (рис.4.) планирует выполнение про­цессов, то есть распределяет процессорное время между несколькими одновре­менно существующими в системе процессами, занимается созданием и уничто­жением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает синхронизацию процессов, а также обеспечивает взаимодействие между процессами

Управление памятью

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

Существует большое разнообразие алгоритмов распределœения памяти. Οʜᴎ мо­гут отличаться:

Количеством выделяемых процессу областей памяти (в одних случаях память выделяется процессу в виде одной непрерывной облас­ти, а в других - в виде нескольких несмежных областей),

Степенью свободы гра­ницы областей (она должна быть жестко зафиксирована на всœе время существова­ния процесса или же динамически перемещаться при выделœении процессу дополнительных объёмов памяти),

В некоторых системах распределœение памяти выполняется страницами фиксированного размера, а в других - сегментами пе­ременной длины

Одним из наиболее популярных способов управления памятью в современных операционных системах является так называемая виртуальная память .

Защита памяти - это избирательная способность предохранять выполняемую задачу от записи или чтения памяти, назначенной другому процессу (задаче). Средства защиты памяти, реализован­ные в операционной системе, должны пресекать несанкционированный доступ процессов к чужим областям памяти.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, функциями ОС по управлению памятью являются (рис.5) отслежива­ние свободной и занятой памяти; выделœение памяти процессам и освобождение памяти при завершении процессов; защита памяти; вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти недостаточны для размещения в ней всœех процессов, и возвращение их в оперативную память, ко­гда в ней освобождается место, а также настройка адресов программы на кон­кретную область физической памяти.

Управление файлами и внешними устройствами

Опе­рационная система виртуализирует отдельный набор данных, хранящихся на внешнем накопителœе в виде файла - простой неструктурированной последова­тельности байтов, имеющей символьное имя. Для удобства работы с данными файлы группируются в каталоги. Пользователь может с помощью ОС выполнять над файлами и каталогами такие действия, как поиск по имени, удаление, вывод содержимого на внешнее устройство (к примеру, на дисплей), изменение и сохра­нение содержимого.

Чтобы представить большое количество наборов данных, разбросанных случай­ным образом по цилиндрам и поверхностям дисков различных типов, в виде хо­рошо всœем знакомой и удобной иерархической структуры файлов и каталогов, операционная система должна решить множество задач.

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

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

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

Программа, управляющая конкретной моделью внешнего устройства и учиты­вающая всœе его особенности, обычно принято называть драйвером этого устройства (от английского drive - управлять, вести). Созданием драйверов устройств занимаются как разработчики конкретной ОС, так и специалисты компаний, выпускающих внешние устройства.

Поддержание высокоуровневого унифицированного интерфейса прикладного программирования к разнородным устройствам ввода-вывода является одной из наиболее важных задач ОС.

Со времени появления ОС UNIX такой унифи­цированный интерфейс в большинстве операционных систем строится на базе концепции файлового доступа. Эта концепция состоит по сути в том, что обмен с любым внешним устройством выглядит как обмен с файлом, имеющим имя и представляющим собой неструктурированную последовательность байтов. В качестве файла может выступать как реальный файл на диске, так и алфавитно-цифровой терминал, печатающее устройство или сетевой адаптер.
Размещено на реф.рф
Здесь мы опять имеем дело со свойством операционной системы подменять реальную аппаратуру удобными для пользователя и программиста абстракциями.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, функциями ОС по управлению файлами и внешними устройствами (рис.6) являются виртуализация отдельных наборов данных; преобразование символьных имен файлов в физические адреса данных на диске; передачу данных между внешними устройствами и оперативной памятью; управление конкретным типом периферийных внешних устройств; реализации концепции файлового доступа для обмена данными с внешними устройствами.

Управление процессами - понятие и виды. Классификация и особенности категории "Управление процессами" 2017, 2018.

Лекция 4. Управление процессами в ОС Windows NT Структура ОС Windows Подсистема Win 32 Объекты ядра Процессы и потоки в ОС Windows Планирование потоков 1 2/6/2018 1: 32: 29 PM

Структура ОС Windows 3 Первые версии системы имели микроядерный дизайн, основанный на микроядре Mach, которое было разработано в университете Карнеги. Меллона. Архитектура более поздних версий системы микроядерной уже не является. Большой объем системного кода (управление системными вызовами и экранная графика) был перемещен из адресного пространства пользователя в пространство ядра и работает в привилегированном режиме. 2/6/2018 1: 32: 30 PM

Структура ОС Windows 4 В результате в ядре ОС Windows переплетены элементы микроядерной архитектуры и элементы монолитного ядра (комбинированная система). Основные компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений (микроядерная архитектура) В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно 2/6/2018 1: 32: 30 PM операционным системам с монолитным ядром.

Подсистема Win 32 Приложение Text. Editor Монитор Основные компоненты Win 32: ntoskrnl. exe исполнительная система и ядро; ntdll. dll - внутренние функции поддержки и интерфейсы диспетчера системных сервисов с функциями исполнительной системы; hal. dll - уровень абстрагирования от оборудования; win 32 k. sys - часть подсистемы Win 32, работающая в режиме ядра; kernel 32. dll, advapi 32. dll, user 32. dll, gdi 32. dll - основные dll подсистемы Win 32 5 2/6/2018 1: 32: 30 PM

Системные вызовы в Win 32 При вызове приложением одной из Win 32 -функций может возникнуть одна из трех ситуаций: 1) Функция полностью выполняется внутри данной dll (шаг 1). 2) Для выполнения функции привлекается сервер csrss, для чего ему посылается сообщение (шаг 2 a, за которым обычно следуют шаги 2 b и 2 c). 3) Данный вызов транслируется в системный сервис (системный вызов), который обычно обрабатывается в модуле ntdll. dll (шаги 3 a и 3 b). Например, Win 32 -функция Read. File выполняется с помощью недокументированного сервиса Nt. Read. File 6 2/6/2018 1: 32: 31 PM

Объекты ядра Для работы с важными системными ресурсами ОС Windows создает объекты, управление которыми осуществляет менеджер объектов. Ядро поддерживает базовые объекты двух видов: объекты диспетчера (события, мьютексы, семафоры, потоки ядра, таймеры и др.) и управляющие (DPC, APC, прерывания, процессы, профили и др.) Над объектами ядра находятся объекты исполнительной системы, каждый из которых инкапсулирует один или более объектов ядра. Объекты исполнительной системы предназначены для управления памятью, процессами и межпроцессным обменом. К ним относятся такие объекты, как: процесс, поток, открытый файл, семафор, мьютекс, маркер доступа и ряд других (MSDN). Эти объекты и называются объектами ядра в руководствах по программированию. 7 2/6/2018 1: 32: 31 PM

Объекты ядра Внешнее отличие объектов ядра (объектов исполнительной системы) от объектов User и GDI состоит в наличии у первых атрибутов защиты, Далее эти объекты ядра (объекты исполнительной системы) будут называться просто объектами. Объект представляет собой блок памяти в виртуальном адресном пространстве ядра. Этот блок содержит информацию об объекте в виде структуры данных. Структура содержит как общие, так и специфичные для каждого объекта элементы. Объекты создаются в процессе загрузки и функционирования ОС и теряются при перезагрузке и выключении питания. Содержимое объектов доступно только ядру, приложение не может модифицировать его непосредственно. Доступ к объектам можно осуществить только через его функцииметоды (инкапсуляция данных), которые инициируются вызовами некоторых библиотечных Win 32 -функций. 8 2/6/2018 1: 32: 31 PM

Создание и мониторинг объектов ядра void __fastcall TForm 1: : Sm. Create. Click(TObject *Sender) { try { HANDLE r=Create. Semaphore(NULL, 1, 5, "My. Sem"); if (r) {Ansi. String msg="Semaphore was created"; LBConsole->Items->Add(msg); } else LBConsole->Items->Add("Error"); } catch (. . .) { } } void __fastcall TForm 1: : Sm. Open. Click(TObject *Sender) { try {HANDLE r=Open. Semaphore(SEMAPHORE_ALL_ACCESS, false, "My. Sem"); if (r) { Ansi. String msg="Semaphore was opened. "; LBConsole->Items->Add(msg); } else LBConsole->Items->Add("Error opended"); } catch (. . .) {} } Приложение Sem. Example 9 Приложение Winobj 2/6/2018 1: 32: 31 PM

Структура объекта. Методы объекта Каждый объект имеет заголовок с информацией, общей для всех объектов, а также данные, специфичные для объекта. Например, в поле заголовка имеется список процессов, открывших данный объект, и информация о защите, определяющая, кто и как может использовать объект. Счетчик ссылок на объект увеличивается на 1 при открытии объекта и уменьшается на 1 при его закрытии. 10 2/6/2018 1: 32 PM

Структура объекта. Методы объекта Квота устанавливает ограничения на объемы ресурсов. Например, по умолчанию лимит на открытые объекты для процесса - 230. Множество объектов делится на типы, а у каждого из объектов есть атрибуты, неизменные для объектов данного типа. Ссылка на тип объекта также входит в состав заголовка. В состав компонентов объекта типа входит атрибут методы указатели на внутренние процедуры для выполнения стандартных операций. Методы вызываются диспетчером объектов при создании и уничтожении объекта, открытии и закрытии описателя объекта, изменении параметров защиты. Система позволяет динамически создавать новые типы объектов. В этом случае предполагается регистрация его методов у диспетчера объектов. Например, метод open вызывается всякий раз, когда создается или открывается объект и создается его новый описатель. 11 2/6/2018 1: 32 PM

Описатели объектов Sem. Example Win. Obj Proc. Exp Создание новых объектов, или открытие по имени уже существующих, приложение может осуществить при помощи Win 32 -функций, таких, как Create. File, Create. Semaphore, Open. Semaphore и т. д. Это библиотечные процедуры, за которыми стоят сервисы Windows и методы объектов. В случае успешного выполнения создается 64 -битный описатель в таблице описателей процесса в памяти ядра. На эту таблицу есть ссылка из блока управления процессом EPROCESS 12 2/6/2018 1: 32 PM

Описатели объектов Из 64 -х разрядов описателя 29 разрядов используются для ссылки на блок памяти объекта ядра, 3 - для флагов, а оставшиеся 32 - в качестве маски прав доступа. Маска прав доступа формируется на этапе создания или открытия объекта, когда выполняется проверка разрешений. Таким образом, описатель объекта - принадлежность процесса, создавшего этот объект. По умолчанию он не может быть передан другому процессу. Тем не менее, система предоставляет возможность дублирования описателя и передачи его другому процессу специальным образом. Win 32 -функции, создающие объект, возвращают приложению не сам описатель, а индекс в таблице описателей, то есть малое число: типа 1, 2 а не 64 разрядное. Впоследствии это значение передается одной из функций, которая принимает описатель объекта в качестве аргумента. Одной из таких функций является функция Close. Handle, задача которой - закрыть объект. 13 2/6/2018 1: 32 PM

Создание объектов ядра Когда процесс инициализируется в первый paз, таблица описателей еще пуста. Но стоит одному из его потоков вызвать функцию, создающую объект ядра (например, Create. Ftle. Mapping), как ядро выделяет для этого объекта блок памяти и инициализирует его, далее ядро просматривает таблицу описателей, принадлежащую данному процессу, и отыскивает свободную запись. Вот некоторые функции, создающие объекты ядра: HANDLE Create. Thread(…), HANDEE Create. File(…), HANDLE Create. File. Mapping(…), HANDLE Create. Semaphore(…)… Все функции, создающие объекты ядра, возвращают описатели, которые привязаны к конкретному процессу и могут быть использованы в любом потоке данного процесса Значение описателя представляет собой индекс в таблице описателей, принадлежащей процессу, и таким образом идентифицирует место, где хранится информация, связанная с объектом ядра. Вот поэтому при отладке своего приложения и просмотре фактического значения описателя объекта ядра Вы и видите такие малые величины: 1, 2 и т. д. Но помните, что физическое содержимое описателей не задокументировано и может быть изменено. 14 2/6/2018 1: 32 PM

Защита объектов Объекты ядра можно защитить дескриптором защиты (security descriptor), который описывает, кто создал объект и кто имеет права на доступ к нему. Дескрипторы защиты обычно используют при написании серверных приложений; создавая клиентское приложение, Вы можете игнорировать это свойство объектов ядра. Почти все функции, создающие объекты ядра, принимают указатель на структуру SECURITY_ATTRIBUTES как аргумент, например: HANDLE Create. File. Mapping(HANDLE h. File. PSECURITY_ATTRIBUTES psa, DWORD fl. Protect, DWORD dw. Maximum. Size. High, DWORD dw. Maximuni. Size. Low, PCTSTR psz. Narne); Большинство приложений вместо этого аргумента передает NULL и создает объект с защитой по умолчанию. Такая защита подразумевает, что создатель объекта и любой член группы администраторов получают к нему полный доступ, а все прочие к объекту не допускаются 15 2/6/2018 1: 32 PM

Защита объектов Вы можете создать и инициализировать структуру SECURITY_ATTRIBUTES, а затем передать ее адрес. Она выглядит так: typedef struct _SECURITY_ATTRIBUTES { DWORD n. Length, LPVOID lp. Security. Descriptor; BOOL b. Inhertt. Handle; } SECURITY_ATTRIBUTES; Хотя структура называется SECURITY__ATTRIBUTES, лишь один ее элемент имеет отношение к защите - lp. Secunty. Descriptor. Если надо ограничить доступ к созданному Вами объекту ядра, создайте дескриптор защиты и инициализируйте структуру SECURITY_ATTRIBUTES следующим образом: SECURITY_ATTRIBUTES sa; sa. n. Length = sizeof(sa); // используется для выяснения версий sa. lp. Secunty. Descriptor = p. SD, // адрес инициализированной SD sa. b. Inherit. Handle = FALSE; // наследование объекта HANDLE h. File. Mapping = Create. File. Mapping(INVALID_HANDLE_VALUE, &sa, PAGE_REAOWRITE, 0, 1024, "My. File. Mapping"); 16 2/6/2018 1: 32 PM

Закрытие объекта ядра Независимо от того, как именно Вы создали объект ядра, по окончании работы с ним его нужно закрьпь вызовом Close. Handle: BOOL Close. Handle(HANDLE hobj); Эта функция сначала проверяет таблицу описателей, принадлежащую вызывающему процессу, чтобы убедиться, идентифицирует ли переданный ей индекс (описатель) объект, к которому этот процесс действительно имеет доступ. Если переданный индекс правилен, система получает адрес структуры данных объекта и уменьшает в этой структуре счетчик числа пользователей; как только счетчик обнулится, ядро удалит объект из памяти. Если же описатель невереи, происходит одно из двух. В нормальном режиме выполнения процесса Close. Handle возвращает FALSE, a Get. Last. Error - код ERROR_INVALID_HANDLE. Но при выполнении процесса в режиме отладки система просто уведомляет отладчик об ошибке. 17 2/6/2018 1: 32 PM

Именование объектов. Разделяемые ресурсы Многие объекты в системе имеют имена. Именование объектов удобно для учета объектов и поиска нужного объекта. Кроме того, знание имени объекта может быть использовано процессом для получения к нему доступа (совместное использование ресурсов). Пространство имен объектов организовано в виде древовидной иерархической системы. В качестве нетерминальной вершины дерева используется объект "каталог объектов". Каталог включает информацию, необходимую для трансляции имен объектов в указатели на сами объекты. Именование допускают многие (но не все) объекты ядра. Например, следующие функции создают именованные объекты ядра HANDLE Create. Mutex(… PCTSTR psz. Name); HANDLE Create. Event(… PCTSTR psz. Name); HANDLE Create. Semaphore(… PCTSTR psz. Name); HANDLE Create. Job. Object(…PCTSTR psz. Name); Последний параметр, psz. Name, у всех этих функций одинаков. Передавая в нем NULL, Вы создаете безымянный (анонимный) объект ядра. В этом случае Вы можете разделять объект между процессами либо через наследование, либо с помощью Duplicate. Handle. А чтобы разделять объект по имени, Вы должны присвоить ему какое-нибудь имя. Тогда вместо NULL в параметре psz. Name нужно передать адрес строки с именем, завершаемой нулевым символом. 18 2/6/2018 1: 32 PM

Совместное использование объектов Иногда у приложений возникает необходимость в разделении ресурсов. В ОС Windows обычно это имеет следствием совместное использование объектов, стоящих за этими ресурсами. Наиболее распространенный вариант - когда двум или более процессам известно имя разделяемого объекта. В этом случае один из процессов создает объект (например, с помощью функции Create. Semaphore), а остальные открывают его для себя (например, с помощью функции Open. Semaphore). 19 2/6/2018 1: 32 PM

Процессы и потоки в ОС Windows Процесс является динамическим объектом, описывающим выполнение программы. В Windows NT процесс – это объект, создаваемый и уничтожаемый менеджером объектов. Процесс содержит потоки, учетную информацию и ссылки на системные ресурсы: закрытое адресное пространство, семафоры, коммуникационные порты, файлы и т. д. Процесс характеризуется текущим состоянием (выполнение, ожидание, готовность и т. д.) , которые обобществляются всеми потоками процесса. Задача ОС состоит в том, чтобы организовать их поддержку, которая подразумевает, что каждый процесс получит все необходимые ему ресурсы; Независимые процессы не должны влиять друг на друга, а процессы, которым необходимо обмениваться информацией, должны иметь возможность сделать это путем межпроцессного взаимодействия. 21 2/6/2018 1: 32: 33 PM

Процессы и потоки в ОС Windows Для описания процесса ОС поддерживает набор структур, главную из которых принято называть блоком управления процессом (PCB, Process control block). Состав PCB: идентификатор процесса; токен доступа - исполняемый объект, содержащий информацию о безопасности; базовый приоритет - основа для исполнительного приоритета нитей процесса; процессорная совместимость - набор процессоров, на которых могут выполняться нити процесса; предельные значения квот - максимальное количество страничной и нестраничной системной памяти, дискового пространства, предназначенного для выгрузки страниц, процессорного времени - которые могут быть использованы процессами пользователя; время исполнения - общее количество времени, в течение которого выполняются все нити процесса. 22 2/6/2018 1: 32: 33 PM

Внутреннее устройство процессов в ОС Windows Proc. Exp Блок управления процессом (PCB) реализован в виде набора связанных структур, главная из которых называется блоком процесса EPROCESS. 23 2/6/2018 1: 32: 33 PM

Создание процесса Обычно процесс создается другим процессом вызовом Win 32 -функции Create. Process. Создание процесса осуществляется в несколько этапов: 1) на диске отыскивается нужный файл-образ, после чего создается объект "раздел" памяти для проецирования на адресное пространство нового процесса (kernel 32. dll); 2) выполняется обращение к системному сервису Nt. Create. Process для создания объекта "процесс". Формируются блоки EPROCESS, KPROCESS и блок переменных окружения PEB. Менеджер процессов инициализирует в блоке процесса маркер доступа (копируя аналогичный маркер родительского процесса), идентификатор и другие поля; 3) создание первичного потока (сервис Nt. Create. Thread, библиотека kernel 32. dll); 4) kernel 32. dll посылает подсистеме Win 32 сообщение, которое содержит информацию, необходимую для выполнения нового процесса. Данные о процессе и потоке помещаются, в список процессов и список потоков данного процесса, затем устанавливается приоритет процесса, создается структура, используемая частью Win 32, которая работает в режиме ядра, и т. д. ; 5) запускается первичный поток, для чего формируются его начальный контекст и стек, и выполняется запуск стартовой процедуры потока режима ядра Ki. Thread. Startup. После этого стартовый код из библиотеки C/C++ передает управление функции main() запускаемой программы. 24 2/6/2018 1: 32: 34 PM

Создание процесса. Функция Create. Process BOOL Create. Process(PCTSTR psz. Application. Name, //имя программы; PTSTR psz. Command. Line, //параметры командной строки; SECURITY_ATTRIBUTES psa. Process, //атрибуты безопасности процесса; PSECURITY_ATTRIBUTES psa. Thread, //атрибуты безопасности главного потока; BOOL b. Inherit. Handles, //- если b. Inherit. Handles == TRUE, то созданный процесс (запущенная программа), наследует дескрипторы (handles) запускающей программы; DWORD fdw. Creation. Flags, //- параметры создания. Здесь можно указать класс приоритета создаваемого процесса и некоторые дополнительные параметры; PVOID pv. Environment, // - указатель на блок окружения или NULL, тогда используется блок окружения родителя; PCTSTR psz. Cur. Dir, // текущая директория или NULL, тогда используется текущая директория родителя; PSTARTUPINFO psi. Start. Info, //- указатель на структуру STARTUPINFO, которая определяет положение главного окна; PPROCESS_INFORMATION ppi. Proc. Info //информация о созданном процессе.); 25 2/6/2018 1: 32: 34 PM

Создание процесса (пример) #include #include void main(VOID) { STARTUPINFO Startup. Info; PROCESS_INFORMATION Proc. Info; TCHAR Command. Line = TEXT(“format c: "); Zero. Memory(&Startup. Info, sizeof(Startup. Info)); Startup. Info. cb = sizeof(Startup. Info); Zero. Memory(&Proc. Info, sizeof(Proc. Info)); if(!Create. Process(NULL, // Не используется имя модуля Command. Line, // Командная строка NULL, // Дескриптор процесса не наследуется. NULL, // Дескриптор потока не наследуется. FALSE, // Установка описателей наследования 0, // Нет флагов создания процесса NULL, // Блок переменных окружения родит. процесса NULL, // Использовать текущий каталог родит. процесса &Startup. Info, // Указатель на структуру STARTUPINFO. &Proc. Info) // Указатель на структуру информации о процессе.) } 26 printf("Create. Process failed. "); // Ждать окончания дочернего процесса Wait. For. Single. Object(Proc. Info. h. Process, INFINITE); // Закрыть описатели процесса и потока Close. Handle(Proc. Info. h. Process); Close. Handle(Proc. Info. h. Thread); Приложение createprocess 2/6/2018 1: 32: 34 PM

Завершение процесса Процесс завершается если: Входная функция первичного потока возвратила управление. Один из потоков процесса вызвал функцию Exit. Process. Поток другого процесса вызвал функцию Terminate. Process. Когда процесс завершается, все User- и GDI-объекты, созданные процессом, уничтожаются, объекты ядра закрываются (если их не использует другой процесс), адресное пространство процесса уничтожается. Рассмотрим, как это реализуется на практике. 27 2/6/2018 1: 32: 34 PM

Получение идентификатора процесса Для получения идентификатора процесса (pid) рассмотрим функцию, которая будет определять PID по имени файла. Для этого необходимо получить snapshot (снимок) системных процессов с помощью функции Create. Toolhelp 32 Snapshot(), а затем функциями Process 32 First() и Process 32 Next() перебираются все процессы для поиска нужного. Здесь существенную роль играет структура PROCESSENTRY 32, которая как раз содержит информацию как об имени файла (элемент sz. Exe. File), так и об идентификаторе процесса (элемент th 32 Process. ID). typedef struct tag. PROCESSENTRY 32 { DWORD dw. Size; //Рамер структуры DWORD cnt. Usage; //Число ссылк на процесс. Процесс уничтожается, //когда число ссылок становится 0 DWORD th 32 Process. ID; //Идентификатор процесса DWORD th 32 Default. Heap. ID; //Идентификатор основной кучи DWORD th 32 Module. ID; //идентификатор модуля DWORD cnt. Threads; //Число потоков DWORD th 32 Parent. Process. ID; //Идентификатор родителя LONG pc. Pri. Class. Base; //приоритет по умолчанию DWORD dw. Flags; //Зарезервировано CHAR sz. Exe. File; //Собственно имя процесса } PROCESSENTRY 32, *PPROCESSENTRY 32, *LPPROCESSENTRY 32; 28 2/6/2018 1: 32: 34 PM

Получение идентификатора процесса procedure TForm 1. Button 1 Click(Sender: TObject); var han: THandle; pi: TProc. Info; // from "tlhelp 32" in uses clause s. ID: string; begin LB. Items. Clear; // Get a snapshot of the system han: = Create. Toolhelp 32 Snapshot(TH 32 CS_SNAPALL, 0); if han = 0 then exit; pi: =TProc. Info. Create; pi. Proc. Struct. dw. Size: = sizeof(PROCESSENTRY 32); if Process 32 First(han, pi. Proc. Struct) then repeat s. ID: = Extract. File. Name(pi. Proc. Struct. sz. Exe. File); while length(s. ID)

Получение списка окон и классов procedure TForm 1. Button 2 Click(Sender: TObject); var Wnd: h. Wnd; buff: array of Char; classname: array of Char; s: string; pc: PAnsi. Char; nc: integer; begin LB. Clear; pc: =@classname; Wnd: = Get. Window(Handle, gw_HWnd. First); while Wnd 0 do begin {Не показываем: } if (Wnd Application. Handle) and {-Собственное окно} Is. Window. Visible(Wnd) and {-Невидимые окна} (Get. Window(Wnd, gw_Owner) = 0) and {-Дочерние окна} (Get. Window. Text(Wnd, buff, sizeof(buff)) 0) {Окна без заголовков} then begin Get. Window. Text(Wnd, buff, sizeof(buff)); nc: =Get. Class. Name(Wnd, pc, 1023); s: =Str. Pas(buff); while length(s)

Жизненный цикл потока 31 Каждый новый процесс содержит, по крайней мере, один поток Потоки составляют основу планирования Готовность. У нити есть все для выполнения, но не хватает только процессора. Первоочередная готовность (standby). Для каждого процессора системы выбирается одна нить, которая будет выполняться следующей. Выполнение. Как только происходит переключение контекстов, нить переходит в состояние выполнения и находится в нем до тех пор, пока либо ядро не вытеснит ее. 2/6/2018 1: 32: 35 PM

Жизненный цикл потока Ожидание. Нить по своей инициативе ожидает некоторый объект для того, 32 чтобы синхронизировать свое выполнение; операционная система (например, подсистема ввода-вывода) может ожидать в интересах нити; подсистема окружения может непосредственно заставить нить приостановить себя. Переходное состояние. Нить готова к выполнению, но ресурсы, которые ей нужны, заняты. Завершение. Когда выполнение нити закончилось, она входит в состояние завершения. Находясь в этом состоянии, нить может быть либо удалена, либо не удалена. Код ядра выполняется в контексте текущего потока. Это означает, что при прерывании, системном вызове и т д. , то есть когда процессор переходит в режим ядра и управление передается ОС, переключения на другой поток (например, системный) не происходит. Контекст потока при этом сохраняется, поскольку операционная система все же может принять решение о смене характера деятельности и переключении на другой поток. Вследствие этого состояние "Выполнение" разделяют на "Выполнение в режиме пользователя" и "Выполнение в режиме ядра. Поэтому у каждого потока два стека, один работает в режиме ядра, другой - в режиме пользователя. Один и тот же стек не может использоваться и в режиме пользователя, и в режиме ядра. Любой поток может делать все что угодно со своим собственным стеком (стеком режима пользователя), в том числе организовывать несколько стеков и переключаться между ними. Поток сам может определять размер своего стека. 2/6/2018 1: 32: 35 PM

Внутреннее устройство потоков Объект-нить имеет следующие атрибуты: Идентификатор клиента - уникальное значение, которое идентифицирует нить при ее обращении к серверу. Контекст нити - содержит текущее состояние регистров, стеков и индивидуальной области памяти, которая используется подсистемами и библиотеками. Динамический приоритет - значение приоритета нити в данный момент. Базовый приоритет - нижний предел динамического приоритета нити. Процессорная совместимость нитей - перечень типов процессоров, на которых может выполняться нить. Время выполнения нити - суммарное время выполнения нити в пользовательском режиме и в режиме ядра, накопленное за период существования нити. Состояние предупреждения - флаг, который показывает, что нить должна выполнять вызов асинхронной процедуры. Счетчик приостановок - текущее количество приостановок выполнения нити. 33 2/6/2018 1: 32: 35 PM

Планирование потоков Выбор текущего потока из нескольких активных потоков, пытающихся получить доступ к процессору называется планированием. Выбранный для выполнения поток работает в течение некоего периода, называемого квантом, по истечении которого поток вытесняется. Предполагается, что поток не знает, в какой момент он будет вытеснен. Поток также может быть вытеснен даже, если его квант еще не истек. Процедура планирования обычно связана с весьма затратной процедурой диспетчеризации - переключением процессора на новый поток, поэтому планировщик должен заботиться об эффективном использовании процессора. Принадлежность потоков к процессу при планировании не учитывается, то есть единицей планирования в ОС Windows является именно поток. В ОС Windows запуск процедуры планирования вызывается одним из следующих событий. События, связанные с освобождением процессора: (1) Завершение потока (2) Переход потока в состояние готовности в связи с тем, что его квант времени истек (3) Переход потока в состояние ожидания События, в результате которых пополняется или может пополниться очередь потоков в состоянии готовности. (4) Поток вышел из состояния ожидания (5) Поток только что создан (6) Деятельность текущего потока может иметь следствием вывод другого потока из состояния ожидания. 34 2/6/2018 1: 32: 35 PM

Алгоритмы планирования потоков В ОС Windows реализовано вытесняющее приоритетное планирование, когда каждому потоку присваивается определенное числовое значение - приоритет, в соответствии с которым ему выделяется процессор. Потоки с одинаковыми приоритетами планируются согласно алгоритму Round Robin (карусель). В системе предусмотрено 32 уровня приоритетов. Шестнадцать значений приоритетов (16 -31) соответствуют группе приоритетов реального времени, пятнадцать значений (1 -15) предназначены для обычных потоков, и значение 0 зарезервировано для системного потока обнуления страниц. 35 Класс приоритета для всех потоков конкретного процесса можно задать с помощью набора констант-параметров функции Set. Priority. Class, которые могут иметь следующие значения: реального времени (REALTIME_PRIORITY_CLASS), высокий (HIGH_PRIORITY_CLASS), выше нормы (ABOVE_NORMAL_PRIORITY_CLASS), нормальный (NORMAL_PRIORITY_CLASS), ниже нормы (BELOW_NORMAL_PRIORITY_CLASS) 2/6/2018 1: 32: 35 PM неработающий (IDLE_PRIORITY_CLASS).

Приоритеты потоков Пользовательские потоки работают с приоритетами от 1 до 15. Устанавливая 1) 2) 36 приоритеты процесса и потока, пользователь может отдавать преимущество тому или иному потоку. Нулевой поток работает в фоновом режиме и съедает все процессорное время, на которое больше никто не претендует. Его работа заключается в обнулении страниц для менеджера памяти. Если и у этого потока нет работы, работает пустой поток. Однако он не является полноценным потоком. Со временем для улучшения производительности системы в базовом алгоритме планирования было сделано несколько усовершенствований. При определенных условиях текущий приоритет пользовательского потока может быть поднят операционной системой выше базового приоритета, но никогда не может быть установлен выше приоритета 15. Для потоков с приоритетами 15 и выше никогда не делается никаких изменений приоритета. Приоритет потока увеличивается: Когда завершается операция ввода-вывода и освобождает ожидающий ее поток, приоритет потока увеличивается, чтобы дать шанс этому потоку быстрее запуститься и снова запустить операцию ввода-вывода. Суть в том, чтобы поддерживать занятость устройств ввода-вывода. Величина, на которую увеличивается приоритет, зависит от устройства ввода-вывода. Как правило, это 1 для диска, 2 для последовательной линии, 6 для клавиатуры и 8 для звуковой карты. Если поток ждал семафора, мьютекса или другого события, то когда он отпускается, к его приоритету прибавляется две единицы, если это поток переднего плана (то есть процесс, управляющий окном, которому в данный момент направляется ввод с клавиатуры), и одна единица в противном случае. 2/6/2018 1: 32: 36 PM

Приоритеты потоков Есть еще один случай, при котором система изменяет приоритеты потоков. Представьте, что два потока работают вместе в задаче типа "производитель -потребитель". Работа производителя труднее, поэтому он получает более высокий приоритет, например 12, а потребитель получает приоритет 4. В определенный момент производитель заполняет до отказа общий буфер и блокируется на семафоре Прежде чем потребитель снова получит шанс поработать, посторонний процесс с приоритетом 8 приходит в состояние готовности и получает управление. Этот поток сможет работать столько, сколько захочет, так как его приоритет выше приоритета потребителя, а производитель, хоть и с большим приоритетом, заблокирован. При таких условиях производитель никогда снова не получит управления, пока поток с приоритетом 8 не остановится. 37 2/6/2018 1: 32: 36 PM

Приоритеты потоков В операционной системе Windows 2000 эта проблема решается при помощи большой кувалды. Система следит, сколько времени прошло с тех пор, когда готовый к работе поток запускался в последний раз. Если какой-либо поток превысит определенный интервал времени, он получает на два кванта времени приоритет 15. Это может помочь разблокировать производителя. После двух квантов прибавка приоритета резко убирается. Вероятно, лучшим решением было бы наказывать потоки, которые полностью используют свои кванты снова и снова. В конце концов, проблему создает не поток, умирающий от голода, а жадный поток. Эта проблема хорошо известна под названием инверсии приоритетов. Классы приоритетов процессов Критичный Самый Нормаль Выше нормы Ниже нормы ко времени высокий ный Самый низкий Неработающий 15 6 5 4 3 2 1 Ниже нормы 15 8 7 6 5 4 1 Нормальный 15 10 9 8 7 6 1 Выше нормы 15 12 11 10 9 8 1 Высокий 15 15 14 13 12 11 1 Реального времени 31 26 25 24 23 22 16 38 2/6/2018 1: 32: 36 PM

Для каждого приложения, запускаемого под управлением Microsoft Windows, операционная система создает собственную задачу, иными словами, отводит определенный объем оперативной памяти для выполнения этой программы и контролирует работу загруженного в память приложения с ресурсами компьютера. Помимо задач в Windows XP имеются также процессы - виртуальное адресное пространство памяти, отведенное для выполнения программой или самой операционной системой каких-либо процедур. Одна задача может активизировать в Windows несколько различных процессов: например, web-браузер может одновременно обращаться к порту модема для получения и отправки каких-либо данных и отображать на экране результат работы встроенного в web-страницу апплета Java. Каждому процессу автоматически назначается индивидуальный опознавательный номер, так называемый Process ID или PID, предназначенный для однозначной идентификации процесса в системе.
Если запущенная вами программа неожиданно вызвала «зависание» компьютера, в большинстве случаев нет необходимости прибегать к аварийной перезагрузке: вполне достаточно отыскать в памяти вызвавшую сбой задачу и снять ее, то есть принудительно прекратить ее дальнейшее выполнение. Возможна и другая ситуация: закрыв неожиданно «зависшую» программу путем снятия задачи, вы не сможете продолжить прерванную работу с каким-либо файлом или документом. Например, удалив из памяти компьютера Microsoft Word, вы не сможете снова загрузить в него текст, который только что редактировали, поскольку операционная система считает, что этот документ уже используется другой программой. Подобные явления происходят потому, что после снятия задачи в памяти все еще остался инициированный этой задачей процесс - в нашем случае это процесс обработки документа Word. Прекратив выполнение вызывающего сбои процесса, вы сможете продолжить работу с Windows XP в обычном режиме.

Для управления задачами и процессами в Microsoft Windows XP предусмотрена специальная системная утилита, называемая Диспетчер задач (Windows Task Manager), окно которой появляется на экране при нажатии сочетания клавиш Ctrl+Alt+Del

Окно утилиты Диспетчер задач Windows XP имеет пять функциональных вкладок.
Вкладка Приложения (Applications) содержит список всех запущенных в системе задач: в поле Задача (Task) отображается название задачи, в поле Состояние (Status) - ее текущее состояние. Нормальным статусом задачи является состояние Работает (Running). Если задача «зависла» и не отвечает на системные запросы, ее состояние будет определено как Не отвечает (Not responding).
Чтобы снять одну из задач, выделите ее щелчком мыши в меню Задача (Task) и нажмите на кнопку Снять задачу (End Task).
Чтобы переключиться к какой-либо задаче, то есть открыть на экране ее окно, выделите в списке нужную задачу и щелкните мышью на кнопке Переключиться (Switch To).
Вы можете инициировать новую задачу, нажав на кнопку Новая задача (New Task) и указав полное имя и путь к запускаемой программе в соответствующем поле открывшегося окна либо определив эту программу визуально при помощи кнопки Обзор (Browse).

Вкладка Процессы (Processes) дает возможность управлять запущенными в системе процессами.

В меню на данной вкладке отображаются названия процессов - Имя образа (Image Name), определители инициаторов процессов - Имя пользователя (User Name), характеристики аппаратной обработки процессов - ЦП (CPU) и занимаемый процессами объем оперативной памяти - Память (Memory Usage). Вы можете включить отображение других характеристик процессов (например, PID, диапазон ввода-вывода, объем используемого процессом кэша и т. д.), воспользовавшись функцией Выбрать столбцы (Select Columns) командного меню Вид (View). Чтобы прекратить выполнение процесса, выделите его заголовок щелчком мыши и нажмите на кнопку Завершить процесс (End Process).
Если вы хотите, чтобы в данном меню отображались процессы, инициированные всеми пользователями вашей системы, установите флажок рядом с пунктом Отображать процессы всех пользователей (Show processes from all users). Вы можете также установить приоритет процесса, если щелкните на его заголовке правой кнопкой мыши, выберите в появившемся меню пункт Приоритет (Set Priority) и укажете назначаемый для данного процесса режим выполнения:

Реального времени (Realtime)- режим реального времени (все инициируемые процессом запросы выполняются системой по мере поступления);
Высокий (High)- высочайший приоритет;
Выше среднего (AboveNormal)- высокий приоритет;
Средний (Normal)- стандартный приоритет;
Ниже среднего (BelowNormal)- низкий приоритет;
Низкий (Low)- наиболее низкий приоритет.

Чем выше приоритет процесса, тем быстрее выполняются инициированные им запросы. Процессам с высоким приоритетом система предоставляет аппаратные и программные ресурсы в первую очередь. При перераспределении приоритетов процессов следует помнить, что если вы установите высокий приоритет какому-либо второстепенному процессу, приоритет одного из жизненно важных для Windows системных процессов может автоматически стать низким, в результате чего скорость работы системы в целом заметно снизится или выполнение этого процесса будет полностью блокировано, что приведет к «зависанию» компьютера. Устанавливать высокий приоритет одному из процессов следует только в том случае, если его выполнение с «нормальным» приоритетом по каким-то причинам затруднено или невозможно.

Вкладка Быстродействие (Performance) окна Диспетчера задач Windows содержит информацию о загрузке процессора, оперативной памяти и об использовании других аппаратных ресурсов компьютера.

(CPU Usage) и Хронология загрузки ЦП (CPU Usage History) показывают нагрузку на процессор вашего компьютера, индикаторы Файл подкачки (PF Usage) и Хронология использования файла подкачки (PF Usage History) - использование файла подкачки при системном кэшировании данных, индикатор Физическая память (Physical Memory) - степень загрузки оперативной памяти в килобайтах.

Аналогичным образом вкладка Сеть (Networking) демонстрирует нагрузку на вашу локальную сеть.
И наконец, если вы хотите просмотреть список всех работающих в настоящее время с вашей системой пользователей, перейдите ко вкладке Пользователи (Users).


Если вы зарегистрированы в системе как администратор данного компьютера, то можете отключить одного из пользователей, выделив в меню название его сеанса работы с Windows щелчком мыши и нажав на кнопку Отключить (Disconnect). Помимо этого вы можете отправить ему сообщение нажатием на кнопку Отправить сообщение (Send Message). Чтобы завершить текущий сеанс работы с Windows, щелкните мышью на кнопке Выйти из системы (Logoff).

Практическая работа №

Управление процессами в Windows .

Цель работы : изучение возможностей контроля и управления процессами в операционных системах Windows, научиться работать с Диспетчером задач, ознакомиться с управлением процессами в ОС Windows с помощью утилиты Process Explorer.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ .

Для правильного выполнения той или иной задачи в Windows необходимо, чтобы была запущена та или иная программа. В данной работе вы ознакомитесь с минимальным набором программ, которые должны быть запущены для корректной работы Windows . Для того чтобы увидеть полный список выполняемых задач в данный момент можно воспользоваться Диспетчером задач Windows или любой другой аналогичной программой (утилиты Process Explorer (procexp.exe.)). В этой работе мы ознакомимся только с Диспетчером задач, который можно запустить нажатием комбинации CTRL + ALT + DELETE .

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

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

На вкладке Быстродействие динамически отображаются следующие сведения о быстродействии компьютера.

  1. Графики загрузки ЦП и использования памяти.
  2. Общее число дескрипторов, процессов, выполняющихся на компьютере.
  3. Общий объем физической памяти, памяти ядра и выделения памяти в килобайтах.

Если имеется подключение к сети, можно просматривать состояние сети и параметры ее работы.

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

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

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

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

Имя процесса

Описание

Explorer.exe

Программа проводник, отвечает за отображение на экране рабочего стола, открытие главного меню (если открываете окно проводника, появляется ещё один процесс)

Spoolsv.exe

Программа отвечает за очередь печати (постановка документов в очередь, удаление очереди отслеживание количества напечатанных листов)

services.exe

Позволяет компьютеру распознавать изменения в установленном оборудовании и подстраиваться под них, либо не требуя вмешательства пользователя, либо сводя его к минимуму. Остановка или отключение этой службы может привести к нестабильной работе системы.(Plug and Play ). А так же обеспечивает поддержку сообщений журналов событий, выдаваемых Windows-программами и компонентами системы, и просмотр этих сообщений.

svchost.exe

Позволяет настраивать расписание автоматического выполнения задач на этом компьютере.

svchost.exe

Управляет объектами папки ""Сеть и удаленный доступ к сети"", отображающей свойства локальной сети и подключений удаленного доступа.

svchost.exe

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

svchost.exe

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

svchost.exe

Позволяет удаленным пользователям изменять параметры реестра на этом компьютере.

mdm.exe

Управляет местной и удаленной отладкой для отладчиков Visual Studio

lsass.exe

Хранит информацию о безопасности для учетной записи локального пользователя.

Winlogon.exe

Программа входа в систему Windows NT

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

Управление процессами и потоками в ОС Windows с помощью утилиты Process Explorer фирмы SysInternals .

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

Помимо этого, с помощью программы можно изменить приоритет процесса, просмотреть информацию о DLL-файле и принудительно завершить безнадежно зависшую программу.

Утилита содержит 2 окна. В верхнем отображается список активных процессов (в т.ч. идентификатор процесса - PID, процент загрузки процессора - CPU, описание - Description, наименование аккаунта владельца - Owner, приоритет процесса - Priority, Handles, Windows Title). Информация, показываемая в нижнем окне, зависит от режима Process Explorer - если он находится в режиме handle mode, Вы можете видеть handles (файлы для Windows 9x/Ме), которые открыл процесс, выбранный в верхнем окне; если это режим DLL (DLL mode) - Вы можете видеть DLL, которые загрузил данный процесс.

Переключение между режимами осуществляется "горячими клавишами" или с помощью соответствующих пунктов меню:

Вы можете сортировать процессы по любому критерию, щелкая мышкой на соответствующей колонке; либо представить процессы в виде дерева процессов (process tree) путем выбора пункта меню View - Show Process Tree.

Щелкнув правой кнопкой мыши по выбранному процессу, с помощью появившегося контекстного меню Вы можете изменить базовый приоритет процесса (Set Priority), принудительно завершить процесс (Kill Process) и просмотреть дополнительные параметры процесса (Properties):

С помощью пункта меню Options - Highlight Services можно выделить процессы, которые обслуживают хост. Для выделения процессов текущего пользователя выберите пункт меню Options - Highlight Own Processes.

Запустив утилиту, запустите несколько приложений (например, Far, Word, Paint, Notepad и т.д.), обратите внимание на изменения в окне процессов. Прокомментируйте их. Приведите копию экрана и опишите процесс, порожденный запущенным приложением.

Задания для выполнения :

1. На вкладке Процессы Диспетчера задач измените количество столбцов, запишите выполненные для этого операции. Какие из процессов запущены Пользователем?

2. Сколько процессов активно на момент выполнения практической работы, на сколько загружен центральный процессор, какой объем памяти выделен на текущие процессы?

3. Просмотреть справочную систему Диспетчера задач. Найти информацию о запуске новых программ, завершении текущих программ с использованием Диспетчера и выписать в тетрадь.

4. Выполните следующие действия с помощью утилиты Process Explorer . Отсортируйте процессы по заданному критерию. Опишите один из системных процессов. Запустите указанное приложение. Опишите возникший процесс по заданным характеристикам. Принудительно завершите указанный процесс. Выполняемые действия иллюстрируйте копиями экранов.

No задания

Критерий

Приложение

Характеристики

Показать дерево системных процессов

Far Manager

Опрелелить используемые DLL

Отсортировать по PID

Блокнот

Wordpad

Отсортировать по приоритету

Калькулятор

Просмотреть доп. свойства процесса

Отсортировать по владельцу

Paint

Проводник

Просмотреть доп. свойства процесса

Отсортировать по наименованию

Редактор реестра

Опрелелить используемые DLL

Отсортировать по приоритету

Web-браузер

Изменить приоритет пользовательского процесса

Отсортировать по загрузке процессора

Сетевое окружение

Опрелелить используемые handles

Показать дерево пользовательских процессов

Дефрагментация диска

Опрелелить используемые DLL

Копии экрана с выполненным заданием и описание выполненных действий привести в отчете.

Контрольные вопросы:

  1. Что такое процесс?
  2. Опишите общие сведения про Диспетчер задач?
  3. Что означает параметр «бездействие системы»?
  4. Можно ли изменить внешний вид вкладки процессы в диспетчере задач?
  5. Как завершить процесс?
  6. Опишите возможности работы с помощью утилиты Process Explorer .
  7. Записать процессы и их описание из таблицы в тетрадь и выучить их наизусть.
Операционная система – весьма сложная по архитектуре программная система, в которой можно выделить следующие основные компоненты:
  1. Управление процессами
  2. Управление основной памятью
  3. Управление файлами
  4. Управление системой ввода-вывода
  5. Управление внешней памятью
  6. Поддержка сетей (networking)
  7. Система защиты (protection)
  8. Система поддержки командного интерпретатора .
  9. Графическая оболочка.

Рассмотрим эти компоненты подробнее.

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

Управление основной памятью .Основная (оперативная) память может рассматриваться как большой массив . Операционная система распределяет ресурсы памяти между процессами, выделяет память по запросу, освобождает ее при явном запросе или по окончании процесса, хранит списки занятой и свободной памяти в системе.

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

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

Система защиты .Согласно современным принципам надежных и безопасных вычислений (см. "Понятие операционной системы (ОС), цели ее работы. Классификация компьютерных систем"), при работе ОС должны быть обеспечены надежность и безопасность , т.е. защита от внешних атак, конфиденциальность личной и корпоративной информации, диагностика и исправления ошибок и неисправностей и др. ОС обеспечивает защиту компонент компьютерной системы, данных и программ, поддерживает фильтрацию сетевых пакетов , обнаружение и предотвращение внешних атак, хранит информацию обо всех действиях над системными структурами, полезную для анализа атак и борьбы с ними.

Система поддержки командного интерпретатора .Любая операционная система поддерживает командный язык (или набор командных языков ), состоящих из пользовательских команд, выполняемых с пользовательского терминала (из пользовательской консоли). Типичные команды – это получение информации об окружении, установка и смена текущей рабочей директории, пересылка файлов, компиляция и выполнение программ, получение информации о состоянии системы и выполнении своих процессов и др. В системе Windows для выполнения команд по традиции используется окно пользовательской консоли MS DOS (MS DOS Prompt ), в системе Linux – специальное окно " Терминал " (Start / System Tools / Terminal ). Наиболее мощные командные процессоры имеются в системах типа UNIX ( UNIX , Solaris, Linux и др.). Их командные языки позволяют писать скрипты – командные файлы, содержащие часто используемые последовательности команд ОС. В UNIX это наиболее удобно. Можно назвать такие командные языки UNIX , как sh (Bourne Shell), csh (C shell), ksh (Korn shell), bash .Каждый UNIX -программист имеет свой излюбленный командный язык и привыкает постоянно использовать скрипты и длинные нетривиальные последовательности команд, которые он выполняет с терминала. Что касается Windows , сравнительно недавно в ней появился мощный командный интерпретатор PowerShell ,который и рекомендуется к использованию. Кроме того, для Windows имеется система CygWin ,позволяющая выполнять команды и командные файлы UNIX в среде Windows . Типичная последовательность команд в стиле UNIX : ps –a | grep saf , которая выводит в стандартный вывод информацию об активных процессах , причем только принадлежащих пользователю saf .Вертикальная черта (p1 | p2) обозначает операцию конвейер (pipe) ,позволяющую использовать стандартный вывод процесса p1 как стандартный ввод процесса p2, что и используется операцией grep ( фильтрация строк , содержащих заданную последовательность). Подробнее о UNIX (Linux) можно прочитать в книге [ 16 ] .

Графическая оболочка – подсистема ОС, реализующая графический пользовательский интерфейс пользователей и системных администраторов с операционной системой. Разумеется, использование одного лишь командного языка и системных вызовов неудобно, поэтому простой и наглядный графический пользовательский интерфейс с ОС необходим. Имеется много известных графических оболочек для операционных систем, причем их возможности очень похожи друг на друга - настолько, что подчас не вполне понятно, какая именно ОС используется. Среди графических оболочек, используемых в системах типа UNIX , можно назвать CDE , KDE, GNOME. ОС Windows и MacOS имеют собственные, весьма удобные графические оболочки.

Управление процессами

Процесс (process) - это пользовательская программа при ее исполнении в компьютерной системе. Для выполнения процесса требуется ряд ресурсов , включая время процессора, память , файлы, устройства ввода-вывода , сетевые устройства и др.

В классической схеме UNIX , при создании процесса для него создается новое пространство виртуальной памяти, т.е. таблица страниц для отображения виртуальных адресов в физические, своя для каждого нового процесса. При этом расходуются значительные ресурсы. Если учесть, что в UNIX каждая команда пользователя (например, ls – вывод содержимого текущей директории ) запускается как отдельный процесс , то становится понятным, насколько "дорога" операция создания процесса в классическом смысле. Поэтому еще в 1980-х гг. появилась концепция облегченного процесса (lightweight process) – выполняемого в том же пространстве виртуальной памяти, что и процесс-родитель. При создании нового облегченного процесса ОС создает для него только стек – системный резидентный массив в памяти, предназначенный для поддержки выполнения процедур процесса и хранящий их локальные данные и связующую информацию между ними.

ОС отвечает за следующие действия, связанные с управлением процессами:

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

Приостановка и возобновление процессов . Выполнение процесса приостанавливается при выполнении синхронного ввода-вывода , а также системного вызова или команды (типа suspend ). Сразу отметим, что использовать подобные операции явной приостановки процессов следует с осторожностью, так как приостанавливаемый процесс может находиться в своей критической секции – выполнять обработку общего ресурса, к которому каждому процессу предоставляется монопольный доступ , так что при его приостановке возникает ситуация тупика (deadlock ) – приостановленный процесс не может освободить ресурс , а конкурирующий процесс не может его получить. При приостановке процесса ОС сохраняет состояние его выполнения, а при возобновлении – восстанавливает.

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

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

Семафоры .В 1966 г. в работе [ 17 ] проф. Эдсгер Дейкстра предложил новый способ синхронизации процессов , ставший классическим, - семафоры.

Двоичный семафор (binary semaphore) – переменная S, которая может находиться в двух состояниях: "открыт" и "закрыт"; над S определены две операции ("семафорные скобки"): P(S) – закрыть, V(S) – открыть. При попытке закрыть уже закрытый семафор происходит прерывание , и ОС добавляет текущий процесс в очередь к закрытому семафору. Операция V(S) активизирует первый стоящий в очереди к S процесс, который успешно завершает операцию P(S). Если семафор S уже открыт, операция V(S) не имеет никакого эффекта.

Таким образом, если предположить, что аппаратура и ОС поддерживают подобную концепцию семафора, то она является удобным инструментом для синхронизации по ресурсам. Назовем критической секцией код, который может выполняться несколькими процессами параллельно и осуществляет доступ к некоторому общему для всех процессов ресурсу – глобальной области памяти, общему файлу и т.д. Обозначим код критической секции critical_section .Если допустить, что данный код может выполняться параллельно в нескольких процессах напрямую, то может возникнуть уже известная нам ситуация race condition ( конкуренция за общие данные): один процесс может изменять ресурс , а второй в этот момент считывать его (некорректное) состояние, либо два процесса одновременно будут пытаться изменять один и тот же

© 2024 Windows. Инструкции. Программы. Железо. Ошибки