Процессы в операционной системе
Влияние подсистемы управления процессами на функционирование вычислительной машины. Ограничение права одних процессов управлять другими. Архитектура разнообразных системных ресурсов. Порты исключений и отладки. Определение параметров и аргументов функций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 03.10.2010 |
Размер файла | 26,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Процессы в операционной системе
Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Процесс (или по-другому, задача) - абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Программа (program) -- это статическая последовательность команд, тогда как процесс (process) -- это программа и системные ресурсы, необходимые для ее работы. Фактически, процесс - программа, находящаяся в режиме выполнения.
Подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает взаимодействие между процессами.
В Windows 3.x, да иногда и в Win32 процесс определяют как копию (экземпляр) выполняющейся программы. Так оно и есть, но при этом забывают, что копия - понятие статическое. Другими словами процесс в Win32 - это объект, который не выполняется, а просто "владеет" выделенным ей адресным пространством, другими словами процесс является структурой в памяти. А вот в адресном пространстве процесса находятся:
? саму программу;
? данные к программе;
? стек программы.
В общем случае ОС содержат блок кода, управляющий созданием и удалением процессов, а также отношениями между ними. Этот код называется структурой процессов (process structure) и в Windows реализован диспетчером процессов (process manager).
Основной задачей диспетчера процессов является предоставление набора базовых сервисов процесса, который подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов. Цель такого подхода -- обеспечить в Windows несколько сред ОС, работающих в пользовательском режиме.
Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице процессов операционной системы (табл.1).
Таблица 1. Поля таблицы процессов
Управление процессом |
Управление памятью |
Управление файлами |
|
Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время |
Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека |
Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы |
На самом высоком уровне абстракции процесс состоит из:
исполняемой программы, которая определяет начальный код и данные;
закрытого адресного пространства (address space), т. е. набора адресов виртуальной памяти, который процесс может использовать;
системных ресурсов, таких как семафоры, коммуникационные порты и файлы, выделяемых ОС процессу во время выполнения программы.
В Windows процесс, чтобы он мог работать, должен включать четвертый элемент:
* по крайней мере один поток управления (thread of execution).
Поток управления -- это сущность внутри процесса, которую ядро Windows направляет на исполнение. Без него программа процесса не может выполняться.
Процесс не должен иметь неограниченного права управления другими процессами. Одним из способов достижения этого в Windows служит система виртуальной памяти (virtual memory). С ее помощью программисты (и создаваемые ими процессы) получают логический образ памяти, который не совпадает с ее физической структурой.
При всяком обращении процесса по виртуальному адресу система виртуальной памяти транслирует этот адрес в физический. Она также предотвращает непосредственный доступ процесса к виртуальной памяти, занятой другими процессами или ОС. Для исполнения кода ОС или доступа к памяти ОС поток должен исполняться в привилегированном режиме процессора -- так называемом режиме ядра (kernel mode). Однако большинство процессов -- это процессы пользовательского режима, т. е. такие, потоки которых исполняются в основном в непривилегированном режиме процессора -- пользовательском режиме (user mode).
Поток пользовательского режима получает доступ к ОС, вызывая некоторый системный сервис. Когда поток вызывает сервис, процесс перехватывает его и переключает из пользовательского режима в режим ядра.
ОС получает управление потоком, проверяет аргументы, переданные потоком сервису, после чего исполняет сервис. Перед возвратом управления пользовательской программе ОС переключает поток обратно в пользовательский режим. Таким образом, ОС защищает себя и свои данные от просмотра и модификации пользовательскими процессами.
Кроме закрытого адресного пространства, с каждым процессом связан набор разнообразных системных ресурсов. На рис. 1 показан типичный процесс и его ресурсы.
Вверху схемы изображен маркер доступа процесса. Маркер доступа присоединяется к процессу непосредственно ОС. Если процессу требуется получить информацию о его маркере доступа или, возможно, изменить некоторые атрибуты маркера, то он должен открыть описатель своего объекта-маркера. Подсистема защиты определяет, есть ли у процесса такое право. Процесс, показанный на рис.1, не открыл дескриптор своего маркера доступа, поэтому отсутствует стрелка, идущая из таблицы объектов к маркеру.
Ниже маркера доступа расположен набор структур данных, созданных диспетчером виртуальной памяти для отслеживания виртуальных адресов, используемых процессом. Процесс не может напрямую читать или изменять эти структуры; диспетчер виртуальной памяти создает и модифицирует их неявно, по мере выделения памяти программой.
Таблица объектов процесса показана в нижней части рис.1 Процесс открыл описатели одного из своих потоков, файла и секции совместно используемой памяти. (Описание виртуального адресного пространства содержит информацию о виртуальных адресах, занятых стеком потока и объектом-секцией, на что указывают стрелки, идущие от описания виртуального адресного пространства к этим объектам.)
Кроме материально осязаемых ресурсов, показанных на рис.1, каждый процесс имеет набор квот на ресурсы, ограничивающий объем памяти, который его потоки могут использовать для открытия описателей объектов.
В исполнительной системе Windows процессы -- это просто объекты, создаваемые и уничтожаемые диспетчером объектов. Объект-процесс, как и другие объекты, содержит заголовок, создаваемый и инициализируемый диспетчером объектов. В заголовке хранятся стандартные атрибуты объекта, такие как:
? дескриптор защиты объекта-процесса,
? имя процесса (может назначаться ему в целях совместного использования)
? каталог объектов, в котором хранится имя, если оно есть.
Диспетчер процессов определяет атрибуты, хранящиеся в теле объектов-процессов, а также предоставляет системные сервисы для чтения и изменения этих атрибутов. Атрибуты и сервисы для объектов-процессов показаны на рис.2.
Обратите внимание, что таблица объектов и описание адресного пространства не показаны как часть объекта-процесса. Причина в том, что они, хотя и связаны с процессом, но не могут быть изменены процессами пользовательского режима напрямую. На рис.2 изображены только те данные, которые код пользовательского режима может считывать или изменять путем вызова сервисов объекта-процесса. В табл. 2 приведены атрибуты объекта-процесса.
Таблица 2. Атрибуты объекта - процесса
Атрибут |
Назначение |
|
Идентификатор процесса |
Уникальное значение, идентифицирующее процесс в ОС |
|
Маркер доступа |
Объект исполнительной системы, содержащий информацию о правах зарегистрированного в системе пользователя, которого представляет данный процесс |
|
Базовый приоритет |
Базовый приоритет потоков процесса |
|
Процессорное сродство по умолчанию |
Набор процессоров, на которых потоки процесса могут исполняться по умолчанию |
|
Размеры квот |
Максимальный объем резидентной и нерезидентной системной памяти, пространства в файле подкачки и процессорного времени, выделяемый пользовательскому процессу |
|
Время выполнения |
Общее время выполнения всех потоков процесса |
|
Счетчики ввода-вывода |
Переменные, в которых записывается число и тип операций ввода-вывода, выполненных потоками процесса |
|
Счетчики операций виртуальной памяти |
Переменные, в которых записывается число и тип операций виртуальной памяти, выполненных потоками процесса |
|
Порты исключений-отладки |
Каналы коммуникаций между процессами, по которым диспетчер процессов посылает сообщение, если один из потоков процесса вызывает исключение |
|
Код завершения |
Причина завершения процесса |
Некоторые атрибуты объекта-процесса налагают ограничения на потоки, исполняемые внутри процесса. Например, на многопроцессорном компьютере процессорное сродство может ограничить исполнение потоков процесса подмножеством всех доступных процессоров. Аналогично, размеры квот регулируют, сколько памяти, пространства файла подкачки и времени процессора могут использовать все потоки процесса вместе.
Базовый приоритет процесса помогает ядру Windows регулировать приоритет потоков в системе. Приоритеты отдельных потоков изменяются, но всегда остаются в диапазоне базовых приоритетов их процессов. Подсистемы среды могут использовать базовый приоритет, чтобы повлиять на то, потоки какого процесса будут выбраны ядром Windows для исполнения в первую очередь. Например, подсистема Win32 при помощи сервисов NT повышает базовый приоритет процесса выбранного пользователем приложения и понижает базовый приоритет процессов фоновых приложений, давая интерактивным приложениям преимущество над другими. Размеры квот, процессорное средство и базовый приоритет входят в состав тех атрибутов и структур данных процесса, которые могут наследоваться от него другим процессом.
Порты исключений и отладки процесса -- это каналы коммуникаций между процессами, по которым ОС посылает сообщения, если один из потоков процесса возбуждает исключение или если идет отладка процесса. Поток другого процесса ожидает у порта для приема сообщения и соответствующих действий. Например, поток подсистемы среды может "слушать" у порта исключений для перехвата ошибок ее клиентских процессов, а отладчик может перехватывать исключения, такие как отладочные точки останова.
Таблица 3. Сервисы процессов
Сервис |
Функция Win32 |
|
Создать процесс |
CreateProcess() |
|
Открыть процесс |
OpenProcess() |
|
Запросить информацию процесса |
GetPriorityClass(), GetProcessTimes(), GetProcessWorkingSetSize(), GetExitProcessCode() и т.д. |
|
Установить информацию процесса |
SetPriorityClass(), SetProcessWorkingSetSize() |
|
Текущий процесс |
GetCurrentProcess(), GetCurrentProcessId() |
|
Завершить процесс |
ExitProcess() или TerminateProcess(). |
Рассмотрим наиболее важные из них.
Создание процессов
Создать процесс -- это прежде всего означает создать описатель процесса, в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе, необходимые ОС для управления им.
Три основные события, приводящие к созданию процессов:
? Загрузка системы.
? Работающий процесс подает системный вызов на создание процесса.
? Запрос пользователя на создание процесса.
Во всех случаях, активный текущий процесс посылает системный вызов на создание нового процесса.
В ОС каждому процессу присваивается идентификатор процесса ( PID - Process IDentifier)
При создании процесса автоматически запускается поток (он называется главным). При остановке главного потока автоматически останавливается и процесс. Так как процесс без потока просто бесцельно занимает ресурсы, то система автоматически уничтожает ставшим ненужным процесс. Первичный процесс создается системой при запуске, точно так же при создании первичного процесса в нем создается и поток.
Приложение тоже может создать процесс с главным потоком, используя для этой цели функцию CreateProcess(). Её прототип, находящийся в файле winbase.h, при первой встрече с ним внушает легкий ужас:
BOOL CreateProcess(LPCSTR lpApplicationName,
LPSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation);
Возвращаемое значение. В начале работы функция выделяет память для этой структуры, а потом выделяет память (виртуальную, естественно) для адресного пространства процесса. Если выделение памяти прошло без ошибок, в адресное пространство процесса загружается код исполняемой программы и используемых программой динамических библиотек. Только после этого создается главный поток процесса. Если функции удастся произвести все эти действия без ошибок, то возвращаемое значение будет равно TRUE. FALSE явится индикатором того, что по каким-то причинам процесс не создан.
Параметры.
Первый аргумент - lpApplicationName - определяет имя исполняемого файла, для которого создается процесс. Если имя файла приводится без расширения, предполагается расширение *.exe, которое присоединяется к имени файла. Если же имя файла завершается точкой (.), тогда расширение *.exe к нему не присоединяется. Поиск файла исполняемой программы осуществляется Windows в следующем порядке.
1. В каталоге, в который загружено приложение.
2. В текущем каталоге.
3. В системном каталоге Windows.
4. В каталоге Windows, который возвращает функция GetWindowDirectory().
5. В каталогах, перечисленных в переменной окружения PATH, которая определяет порядок поиска в них.
Второй аргумент - lpCommandLine определяет передаваемую этому файлу командную строку. Если lpApplicationName равен NULL, то первый (до первого пробела) элемент lpCommandLine считается именем исполняемого файла.
Третий и четвертый аргументы - lpProcessAttributes, lpThreadAttributes - определяют атрибуты защиты к процессу и потоку соответственно. В Windows 9х эти значения равны NULL.
Пятое поле - bInheritHandles - устанавливает разрешение/запрет наследования хэндлов вызывающего процесса, если установлено значение TRUE. При этом новый процесс наследует каждый наследуемый хэндл, открытый в вызывающем процессе. У наследуемых хэндлах имеются те же значения и привилегии, что и у исходных дискрипторов.
Шестое поле - dwCreationFlag - является комбинацией битовых флагов, управляющих созданием процесса и назначением для него приоритета. Этот параметр позволяет установить класс приоритета для объекта процесса наряду с режимами его выполнения. Существует две группы флагов:
- флаги создания процесса;
- флаги установки уровня приоритета.
Седьмой аргумент - lpEnvironment - указатель на настройки окружения нового процесса. Это перечень выражений присвоения в виде переменная=значение, завершающихся нулевым символом. Обычно равен NULL. Это означает, что порождаемый процесс наследует переменные окружения родительского процесса. Если этот аргумент не равен NULL, то он должен содержать указатель на блок памяти, содержащий те переменные окружения, которыми будет пользоваться порождаемый процесс.
Восьмой аргумент функции - lpCurrentDirectory - указатель на строку, содержащую текущие диск и директорию для порождаемого процесса. Если этот аргумент равен NULL, порождаемый процесс наследует текущие диск и директорию родительского процесса. В противном случае этот аргумент должен указывать на строку, в которой указан полный путь к устанавливаемой текущей директории, включающий и букву дисковода.
Девятый аргумент - lpStartupInfo - указатель на структуру типа STARTUPINFO, которая описывает способ отображения основного окна приложения.
Десятый аргумент функции CreateProcess() - lpProcessInformation - указывающий на структуру типа PROCESS_INFORMATION, в которую записывается информация о порожденном процессе после его создания. Эта структура описана содержит хэндл созданного процесса, хэндл потока, уникальные идентификаторы процесса и потока.
Следует особое внимание на последние два поля. Дело в том, что Win32, если идентификатор освобожден, может повторно использовать его. К примеру, пусть процессу присвоен идентификатор 0x00001111. После завершения процесса идентификатор освобождается и какому-нибудь новому процессу может опять быть присвоен тот же идентификатор 0x00001111. Это необходимо учитывать при написании программ.
Завершение процесса
Четыре события, приводящие к завершению процесса:
? Плановое завершение (окончание выполнения)
? Плановый выход по известной ошибке (например, отсутствие файла)
? Выход по неисправимой ошибке (ошибка в программе)
? Уничтожение другим процессом
Процесс может быть завершен вызовом одной из двух функций -ExitProcess() или TerminateProcess().
Подобные документы
Структура ядра операционной системы. Основные компоненты подсистемы управления процессами и памятью. Характеристика системных и прикладных процессов в Unix. Идентификация процесса Linux, его атрибуты и вызовы. Средства межпроцессного взаимодействия.
лекция [170,1 K], добавлен 29.07.2012Управление процессами - часть операционной системы, влияющая на функционирование вычислительной машины. Контекст дескриптор процесса и алгоритм его планирования. Средства синхронизации и взаимодействия процессов. Критическая секция, тупики и нити.
лекция [166,6 K], добавлен 05.02.2009Подсистема управления процессами как часть операционной системы, непосредственно влияющая на функционирование вычислительной машины. Алгоритмы планирования процессов. Общие сведения о матричных принтерах, проектирование для них символов с помощью матриц.
курсовая работа [117,1 K], добавлен 22.06.2011Основные функции и процессы подсистемы управления процессами. Диспетчеризация процессов (потоков). Алгоритмы планирования выполнения потоков. Назначение и разновидности приоритетов в операционных системах. Функции подсистемы управления основной памятью.
презентация [117,7 K], добавлен 20.12.2013Хабовая архитектура системных плат. Интерфейс командной строки Unix System V. Структура командной строки интерпретаторов sh и ksh. Системные, процессы-демоны и прикладные процессы. Способы порождения и запуска "демонов". Работа с сигналами UNIX.
реферат [149,5 K], добавлен 11.05.2012Взаимодействие модулей, использование системных вызовов и библиотечных функций управления процессами и файлами современных операционных систем. Примеры создания системных и пользовательских программ, процедур и функций на примере ОС семейства UNIX/Linux.
контрольная работа [150,8 K], добавлен 18.09.2010Права доступа к файлам и управление ими и другими атрибутами. Значения прав доступа для файлов и директорий. Набор файловых флагов. Команды управления процессами в операционной системе UNIX. Опции и значения программ архивации и сжатия - tar и gzip.
контрольная работа [234,4 K], добавлен 16.01.2014Понятие "архитектура ЭВМ". Принципы построения ЭВМ, которые относятся к архитектуре. Архитектура электронной вычислительной машины, построенной на принципах Фон Неймана. Совершенствование и развитие внутренней структуры ЭВМ. Шинная архитектура ЭВМ.
контрольная работа [133,5 K], добавлен 02.12.2010Изучение основных аспектов моделирования операционной системы. Исследование принципов организации псевдопараллельной работы процессов. Анализ алгоритмов диспетчеризации процессов. Проектирование подсистемы управления памятью и запоминающими устройствами.
курсовая работа [1,7 M], добавлен 12.01.2014Программирование в операционной системе Windows. Работа с потоками и процессами ОС. Методы их создания. Основы вызова API-функций. Пример создания диалогового окна без использования файла ресурсов. Разработка программы с помощью 32-битного ассемблера.
курсовая работа [107,6 K], добавлен 18.05.2014