Управление процессами в Windows. Управление процессами в Windows Система управления процессами в ос windows 7

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

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

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

Все версии Windows от 1.0 до 3.11 представляли собой достаточно мощные многозадачные системы с невытесняющей диспетчеризацией. Версии, начиная с Windows NT и Windows 95, используют вытесняющую диспетчеризацию.

Понятие объекта в Windows

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

Объекты Windows делятся на объекты ядра (KERNEL), позволяющие управлять процессами, объекты USER, описывающие работу с окнами, и объекты GDI, задающие графические ресурсы Windows. В данном курсе рассматриваются только объекты ядра. Процессы, нити и открытые файлы являются примерами объектов ядра.

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

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

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

Объект существует до тех пор, пока не будут закрыты все хэндлы, указывающие на него.

Процессы и нити

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

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

· Имя файла запускаемой программы.

· Командная строка, передаваемая процессу при запуске.

· Атрибуты защиты для создаваемых процесса и нити. И процесс, и нить являются объектами ядра Windows и в этом качестве могут быть защищены от несанкционированного доступа (например, от попыток других процессов вмешаться в работу данного процесса).

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

· Блок среды процесса.

· Текущий каталог процесса.

· Параметры первого окна, которое будет открыто при запуске процесса.

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

Если процесс успешно создан, функция CreateProcess возвращает ненулевое значение.

Класс приоритета процесса используется при определении приоритетов его нитей. Подробнее об этом в п. 4.5.3.

Хэндл объекта ядра Windows (в данном случае процесса или нити) позволяет выполнять различные операции с этим объектом. Подробнее о хэндлах и идентификаторах см. п. 4.5.4.

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

· атрибуты защиты для создаваемой нити;

· размер стека нити;

· стартовый адрес нити (обычно нить связывается с выполнением одной из функций, описанных в программе процесса, при этом в качестве стартового адреса указывается имя функции);

· параметр-указатель, позволяющий передать нити при запуске некоторое значение в качестве аргумента;

· флаг создания нити в приостановленном состоянии;

· указатель на переменную, в которой функция должна возвратить идентификатор созданной нити.

Возвращаемым значением функции CreateThread является хэндл созданной нити либо NULL, если создать нить не удалось.

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

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

Завершение процесса приводит к освобождению всех ресурсов, которыми владел процесс: памяти, открытых файлов и т.п.

При завершении процесса завершаются все его нити. И наоборот, при завершении последней нити процесса завершается и сам процесс.

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

Планировщик Windows

Задачей планировщика является выбор очередной нити для выполнения. Планировщик вызывается в трех случаях:

· если истекает квант времени, выделенный текущей нити;

· если текущая нить вызвала блокирующую функцию (например, WaitForMultipleObjects или ReadFile) и перешла в состояние ожидания;

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

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

Очереди активных нитей пополняются за счет нитей, проснувшихся после состояния ожидания и нитей, вытесненных планировщиком. Как правило, нить помещается в конец очереди. Исключение делается для нити, вытесненной до истечения ее кванта времени более приоритетной нитью. Такая «обиженная» нить ставится в голову очереди.

Значение кванта времени для серверных установок Windows равно обычно 120 мс, для рабочих станций – 20 мс.

Как вы думаете, почему для серверов квант времени больше?

Теперь подробнее о приоритетах. Хотя общая схема их назначения одинакова для всех версий Windows, детали могут разниться. Дальнейшее изложение ориентировано на Windows NT 4.0.

Все уровни приоритета нитей пронумерованы от 0 (самый низкий приоритет) до 31 (самый высокий). Уровни от 16 до 31 называются приоритетами реального времени , они предназначены для выполнения критичных по времени системных операций. Только сама система или пользователь с правами администратора могут использовать приоритеты из этой группы. Уровни от 0 до 15 называются динамическими приоритетами .

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

· Realtime (базовый приоритет 24) – высший класс приоритета, допустимый только для системных процессов, занимающих процессор на очень короткое время;

· High (базовый приоритет 13) – класс высокоприоритетных процессов;

· Normal (базовый приоритет 8) – обычный класс приоритета, к которому относится большая часть запускаемых прикладных процессов;

· Idle (базовый приоритет 4) – низший (буквально – «холостой» или «простаивающий») класс приоритета, характерный для экранных заставок, мониторов производительности и других программ, которые не должны мешать жить более важным программам.

Собственно приоритет связывается не с процессом, а с каждой его нитью. Приоритет нити определяется базовым приоритетом процесса, к которому прибавляется относительный приоритет нити – величина от –2 до +2. Относительный приоритет назначается нити при ее создании и может при необходимости изменяться. Имеется также возможность назначить нити критический приоритет (31 для процессов реального времени, 15 для остальных) или холостой приоритет (16 для процессов реального времени, 0 для остальных).

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

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

· Когда заблокированная нить дождалась нужного ей события, к приоритету нити прибавляется величина, зависящая от причины ожидания. Эта прибавка может достигать 6 единиц (но приоритет не должен превысить 15), если нить разблокирована вследствие нажатия клавиши или кнопки мыши. Таким способом система стремится уменьшить время реакции на действия пользователя. Всякий раз, когда нить полностью использует свой квант времени, прибавка уменьшается на 1, пока приоритет нити не вернется к своему заданному значению.

· Если нить владеет окном переднего плана (т.е. тем, с которым работает пользователь), то ради уменьшения времени реакции планировщик может увеличить квант времени для этой нити с 20 мс до 40 или 60 мс, в зависимости от настроек системы.

· Если планировщик обнаруживает, что некоторая нить пребывает в очереди более 3 с, то он повышает ее приоритет аж до 15 и удваивает ее квант. Но эта благотворительность разовая: когда Золушка-нить израсходует увеличенный квант или заблокируется, ее приоритет и квант возвращаются к прежним значениям. Смысл акции понятен: система пытается обеспечить хоть какое-то продвижение даже для низкоприоритетных нитей.

Процесс и нить как объекты

Подсистема управления процессами в Windows позволяет рассматривать процессы и нити как объекты, над которыми нити различных процессов могут выполнить целый ряд действий. Для этого требуется иметь хэндл процесса или нити. Как нам известно, такие хэндлы возвращаются как побочные результаты работы функций CreateProcess и CreateThread. Это позволяет процессу, запустившему другой процесс или нить, выполнять с ними необходимые действия. Однако в некоторых случаях желательно дать возможность управлять процессом не процессу-«родителю», а другому, совершенно постороннему процессу (например, программе администрирования системы). Проблема при этом в том, что, как уже отмечалось, хэндл в Windows имеет смысл только в пределах того процесса, который вызвал функцию Create и не может быть просто передан другому процессу.

Функция OpenProcess позволяет одному процессу получить хэндл любого другого процесса, указав для этого два параметра: идентификатор интересующего процесса и маску, задающую набор запрашиваемых прав по отношению к этому процессу. Если подсистема безопасности Windows, сверив маркер доступа запрашивающего процесса с дескриптором безопасности процесса-объекта (см. п. 3.8.4.1), сочтет запрос законным, то функция вернет требуемый хэндл.

А о каких, собственно, правах идет речь? Что именно один процесс может сделать с другим процессом? Основные права следующие:

· запускать новую нить процесса;

· запрашивать и изменять класс приоритета процесса;

· использовать процесс в качестве объекта синхронизации;

· принудительно прекращать выполнение процесса;

· запрашивать код завершения процесса.

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

Синхронизация нитей

Способы синхронизации

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

· Традиционной для Windows формой синхронизации является обмен сообщениями (messages). При этом, механизм сообщений предназначен не только для синхронизации, но и для обмена данными. Далее работа с сообщениями будет рассмотрена подробно.

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

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

Цель работы : практическое знакомство с методикой управления процессами ОС MS Windows XP с помощью диспетчера задач

1 КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1.1 Процессы и потоки

В отличие от MS DOS, процессы в Win32 инертны, т. е. В Win32 процесс ничего не выполняет.

Процесс владеет:

4 Гб адресным пространством (при выполнении на 32-х разрядном ЦП);

Файлами;

Модулями (например, загруженными в адресное пространство DLL);

Одним или несколькими потоками.

Процесс обладает:

Идентификатором процесса (PID);

Базовым классом приоритета;

Маркером доступа (access token);

Идентификатором родительского процесса;

Набором используемых описателей (Handles) системных объектов;

Рабочим множеством страниц оперативной памяти и т.д.

Процесс (Пр) может породить другой процесс- см. рис.1.

Рисунок 1 – порождение процессов.

Процесс Пр1 породил процесс Пр2, который породил процессы Пр3 и Пр4.

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

В каждой системе Windows выполняются следующие системные процессы:

Процесс Idle (включает по одному потоку на процессор для учета времени простоя процессора);

Процесс System (содержащий большинство системных потоков режима ядра);

Диспетчер сеансов (Smss.exe);

Подсистема Windows (Csrss.exe);

Процесс входа в систему (Winlogon.exe);

Диспетчер управления сервисами (Services.exe) и создаваемые им дочерние процессы сервисов (например, универсальный процесс для хостинга сервисов, Svchost.exe);

Серверный процесс локальной аутентификации (Lsass.exe).

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

Диспетчер сеансов (Session Manager) Smss.exe является первым процессом пользовательского режима, создаваемым в системе. Он порождается системным потоком режима ядра и запускает процессы подсистем Csrss.exe и Winlogon, который в свою очередь создает остальные системные процессы.

Процесс входа в Windows - Winlogon.exe обрабатывает интерактивный вход пользователя в систему и выход из нее. При нажатии комбинации клавиш Alt+Ctrl+Del Winlogon получает уведомление о запросе пользователя на вход в систему.

После ввода имя и пароль пользователя посылаются для проверки серверному процессу локальной аутентификации LSASS. После успешной аутентификации LSASS вызывает какую-либо функцию в мониторе состояния защиты, чтобы сгенерировать объект «маркер доступа» (access token object), содержащий профиль безопасности пользователя. Впоследствии Winlogon использует его для создания начального процесса оболочки. Информация о начальном процессе хранится в параметре Userinit в разделе реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon.

По умолчанию начальным процессом считается Userinit.exe, который выполняет некоторые действия по инициализации пользовательской среды, а затем ищет в реестре параметр Shell и создает процесс для запуска определенной системной оболочки – по умолчанию Explorer.exe. После этого процесс Userinit.exe завершается и не показывается в списке выполняющихся процессов. Процесс Explorer.exe является «внучатым» процессом Winlogon. Процесс Explorer.exe – предок всех запущенных прикладных (пользовательских) процессов.

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

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

Чтобы процесс что-нибудь выполнил, в нем нужно создать поток (Thread). В принципе, один процесс может содержать несколько потоков и они одновременно используют код в адресном пространстве процесса. Для этого каждый поток должен поток располагать собственным набором регистров процессора, а каждый процесс – как минимум – одним потоком. Чтобы все эти потоки работали, ОС отводит каждому из них определенное процессорное время (квант времени). Время выдается потокам квантами по кругу (см. рис. 2) в соответствии с их приоритетами:

Рисунок 2 - схема выделения квантов времени потокам (П)

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

Потоки также могут создаваться драйверами режима ядра.

В WinNT, 2000, XP Windows Server - за потоком может быть закреплен отдельный процессор (процессоров может быть до 32), тогда потоки действительно выполняются параллельно.

1.2 Инструменты управления процессами

В ОС Windows встроена программа Диспетчер задач (Task Manager), с помощью которой можно получить информацию о выполняющихся в системе системных и прикладных процессах, количестве используемых ими потоков и потребляемых ресурсах, управлять выполнением процессов, изменять приоритеты процессов. Для запуска диспетчера задач можно использовать комбинацию Alt+Ctrl+Del или нажатие правой кнопкой мыши на панель задач. Окно диспетчера задач показано на рис. 3.

Рисунок 3 - Окно диспетчера задач (закладка Процессы)

В окне Процессы можно видеть список всех выполняемых в системе процессов и их параметры – на рис.3 это идентификаторы процессов, загрузка ЦП каждым процессом и количество потоков. Заметьте, что количество потоков, равное 0 не говорит о том, что их действительно нет (это процесс такой).

С помощью меню Вид можно удалить из списка показанные на рис.3 параметры или добавить новые.

Закладка Быстродействие (см. рис.4) дает возможность вывести графики суммарной загрузки ЦП, использования файла подкачки, а также получить сведения о суммарном потреблении ресурсов ПК.

Диспетчер задач – очень простой инструмент, его возможностей недостаточно для решения даже несложных задач анализа и управления системой. ПРИМЕР – постройте дерево выполняемых в системе процессов на основе полученной с помощью диспетчера задач информации.

Фирмой Sysinternals разработана программа Process Explorer, обладающая значительно большими возможностями, чем диспетчер задач от Microsoft, а также ряд других программ для управления ПК и анализа информационной безопасности. Однако все эти программы бесплатны только для личного использования и на современном этапе без лицензии не могут использоваться в учебном процессе кафедры.

Рисунок 4 - Окно диспетчера задач (закладка Быстродействие)

2. МЕТОДИКА ВЫПОЛНЕНИЯ

1. Запустить диспетчер задач, ознакомиться с перечнем параметров процессов (меню вид закладки Процессы).

2. Ознакомиться с возможностями диспетчера задач по управлению процессами (создание процесса и завершение процесса). Изменение приоритета выбранного процесса с помощью контекстного меню.

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

4. Построить график изменения загрузки ЦП при перемещении мыши, изменении размеров окна диспетчера, запуске приложений Open Office.

5. Построить график изменения размера выделенной в файле подкачки памяти при запуске приложений (Open Office, Visual Studio).

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

Таблица 1 Индивидуальные задания

Таблица 2 - Параметры процессов

3. ОТЧЕТ О РАБОТЕ

Готовится в письменном виде с помощью Open Office один на бригаду.

1. Титульный лист с номером и названием работы, номером группы, бригады, фамилиями студентов и преподавателя

2. Перечень использованных при выполнении работы параметров процессов

3. Результаты, полученные при выполнении индивидуального задания.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Дать определение процесса, потока, системного и прикладного процесса

2. Какая информация необходима для построения перечня выполняющихся в системе процессов в виде дерева. Можно ли получить такую информацию в MS Windows, используя диспетчер задач?

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

Управление процессами в 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. Записать процессы и их описание из таблицы в тетрадь и выучить их наизусть.

Для каждого приложения, запускаемого под управлением 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). Операционная система – весьма сложная по архитектуре программная система, в которой можно выделить следующие основные компоненты:
  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 ( конкуренция за общие данные): один процесс может изменять ресурс , а второй в этот момент считывать его (некорректное) состояние, либо два процесса одновременно будут пытаться изменять один и тот же