АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. I. Сведения о заявителе
  2. III. ИСТОРИКО-ЛИТЕРАТУРНЫЕ И ТЕОРЕТИЧЕСКИЕ ПОНЯТИЯ
  3. WWW и Интернет. Основные сведения об интернете. Сервисы интернета.
  4. А) Теоретические основы термической деаэрации
  5. А. Общие сведения
  6. А. Общие сведения
  7. А. Общие сведения
  8. А. Общие сведения
  9. А. Общие сведения
  10. Вещества атомного строения. Основные сведения о стороении атома. Атомное ядро.
  11. ВНИМАНИЕ: вводимые в данном окне сведения, общие на всю семью. Вводить и корректировать сведения в данной карточке необходимо крайне аккуратно.
  12. Вопрос №19 Экономическая система: сущность, элементы, теоретические концепции.

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

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

- адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;

- исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.

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

Для предотвращения доступа приложений к критически важным данным операционной системы и устранения риска их модификации Windows использует два режима доступа к процессору (даже если он поддерживает более двух режимов): пользовательский (user mode) и ядра (kernel mode). Код приложений работает в пользовательском режиме, тогда когда код операционной системы (например, системные сервисы и драйверы устройств) – в режиме ядра. В режиме ядра предоставляется доступ ко всей системной памяти и разрешается выполнять любые машинные команды процессора. Предоставляя операционной системе более высокий уровень привилегий, чем прикладным программам, процессор позволяет разработчикам операционных систем реализовать такие архитектуры, которые не дают возможности сбойным приложениям нарушать стабильность работы всей системы.

Процессы инертны. Отвечают же за исполнение кода, содержащегося в адресном пространстве процесса, потоки. Поток (thread) - некая сущность внутри процесса, получающая процессорное время для выполнения. В каждом процессе есть минимум один поток. Этот первичный поток создается системой автоматически при создании процесса. Далее этот поток может породить другие потоки, те в свою очередь новые и т.д. Таким образом, один процесс может владеть несколькими потоками, и тогда они одновременно исполняют код в адресном пространстве процесса. Каждый поток имеет:

- уникальный идентификатор потока;

- содержимое набора регистров процессора, отражающих состояние процессора;

- два стека, один из которых используется потоком при выполнении в режиме ядра, а другой - в пользовательском режиме;

- закрытую область памяти, называемую локальной памятью потока (thread local storage, TLS) и используемую подсистемами, run-time библиотеками и DLL.

Создание Win32 процесса осуществляется вызовом одной из таких функций, как CreateProcess, CreateProcessAsUser (для Win NT/2000) и CreateProcessWithLogonW (начиная с Win2000) и происходит в несколько этапов:

- открывается файл образа (EXE), который будет выполняться в процессе. Если исполняемый файл не является Win32 приложением, то ищется образ поддержки (support image) для запуска этой программы. Например, если исполняется файл с расширением.bat, запускается cmd.exe и т.п.;

- создается объект Win32 "процесс";

- создается первичный поток (стек, контекст и объект "поток");

- подсистема Win32 уведомляется о создании нового процесса и потока;

- начинается выполнение первичного потока;

- в контексте нового процесса и потока инициализируется адресное пространство (например, загружаются требуемые DLL) и начинается выполнение программы.

Процесс завершается если:

- входная функция первичного потока возвратила управление;

- один из потоков процесса вызвал функцию ExitProcess;

- поток другого процесса вызвал функцию TerminateProcess;

Когда процесс завершается, все User- и GDI-объекты, созданные процессом, уничтожаются, объекты ядра закрываются (если их не использует другой процесс), адресное пространство процесса уничтожается [1,2].

Для просмотра и модификации процессов, потоков и информации, связанной с ними, существует множество утилит. Самая простая и известная – это диспетчер задач Windows. Диспетчер задач можно запустить нажатием клавиш Ctrl+Shift+Esc, выбрать из меню окна безопасности Windows Ctrl+Alt+Delete или просто выполнить команду taskmgr.exe.

Диспетчер задач в Windows2000 имеет 3 закладки – это просмотр выполняемых программ (открытых окон), просмотр выполняемых процессов и инспектор быстродействия системы.

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

На вкладке «Приложения» отображается список видимых окон верхнего уровня всех объектов «рабочий стол». Колонка «Состояние» даёт представление о том, находится ли поток – владелец окна в состоянии ожидания т.н. Windows-сообщения. «Выполняется» означает, что поток ожидает ввода в окно, а «Не отвечает» - что не ожидает (т.е. занят либо ждёт завершения операции ввода-вывода или освобождения какого-либо синхронизирующего объекта). Данная вкладка позволяет идентифицировать процесс, которому принадлежит поток, владеющий каким-либо окном задачи. Для этого необходимо выбрать приложение и в меню выбрать пункт «Перейти к процессам». Кроме этого, имеется возможность завершить задачу (как и процесс), переключиться на задачу, запустить новое приложение. На закладке «Быстродействие», можно отслеживать степень загрузки процессора и памяти.

Более широкие возможности предоставляет утилита Process Explorer. Она в целом похожи на стандартный диспетчер задач и имеет следующие возможности:

- выводить полное имя (вместе с путём) выполняемого образа;

- выводить маркер защиты процесса;

- производить выделение изменений в списке процессов и потоков;

- выводить список сервисов внутри процессов – хостов сервисов с выводом отображаемого имени и описания;

- отображать процессы, которые являются частью задания и детальные сведения о заданиях;

- отображать время запуска процессов и потоков;

- выводить полный список файлов, отображённых в память (а не только dll-модулей);

- приостанавливать процесс;

- принудительно завершать индивидуальные потоки;

- выявлять процессы, использующие наибольшую долю процессорного времени за определённый период;

- отображать дерево процессов с возможностью свёртывания отдельных частей этого дерева;

- показывать список dll и файлов, отображаемых в память конкретным процессом;

- показывать активность потоков в каком-либо процессе;

- отображать лимиты памяти режима ядра и др.

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

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Поиск по сайту:



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