КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Операции над процессами
Процесс самостоятельно не переходит из одного состояния в другое. Изменением состояния процессов занимается операционная система. Операции над процессами производимые операционной системой удобно объединить в пары: - создание процесса – завершение процесса; - приостановка процесса – запуск процесса; - блокирование процесса – разблокирование процесса; - изменение приоритета процесса. Операции создание и завершение процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Остальные операции, связанные с изменением состояния процессов, являются многоразовыми. Одноразовые операции приводят к изменению количества процессов, находящихся под управлением операционной системы и всегда связаны с выделением или освобождением определенных ресурсов. Многоразовые операции не приводят к изменению количества процессов и не обязаны быть связанными с выделением или освобождением ресурсов. Одноразовая операция создание процесса. Сложный жизненный путь процесса начинается с его рождения. В простых системах все процессы могут порождаться на этапе старта системы, в более сложных системах – создаваться динамически по мере необходимости. Инициатором рождения процесса после старта операционной системы может быть процесс пользователя, совершивший специальный системный вызов, либо процесс созданный самой операционной системой. Процесс, создавший новый процесс, называют процессом родителем, а созданный процесс – потомком (дочерним процессом или ребенком). Выделяют четыре основных события, которые приводят к созданию новых процессов: - загрузка (инициализация) системы; - выполнение изданного работающим процессом системного запроса на создание процесса; - запрос пользователя на создание процесса; - инициирование пакетного задания. При загрузке операционной системы создаются несколько процессов, одни – высокоприоритетные, обеспечивающие взаимодействие с пользователем и выполняющие заданную работу, другие – фоновые, выполняющие особые функции. Например, один фоновый процесс обрабатывает приходящую электронную почту, активизируясь только при появлении писем, другой – обрабатывает запросы к web -страницам, активизируясь для обслуживания полученного запроса. Фоновые процессы, связанные с электронной почтой, web- страницами, новостями, выводом на печать и т.п. называются демонами. В больших системах насчитываются десятки демонов. В UNIX для вывода списка запущенных процессов используется программа ps, в Windows 95/98/Ме – комбинация клавиш CTRL-ALT-DEL, в Windows 2000 – диспетчер задач (рис.3.4). Процессы могут создаваться и в процессе работы системы, например, по просьбе текущего процесса или при запуске пользователем программы. С технической точки зрения новый процесс формируется одинаково: текущий процесс выполняет системный запрос на создание нового процесса. Системный запрос заставляет операционную систему создать новый процесс и содержит информацию о программе, которую нужно запустить в этом процессе. В роли текущего процесса могут выступать: процесс, запущенный пользователем; системный процесс; процесс, инициированный клавиатурой или мышью; процесс, управляющий пакетами.
Рис.3.4. Вывод списка запущенных процессов
UNIX содержит один системный запрос, направленный на создание нового процесса: fork (ветвление, вилка), который создает дубликат вызываемого процесса. После выполнения запроса fork двум процессам, родительскому и потомку, соответствуют одинаковые образы памяти, строки окружений и одни и те же открытые файлы. Процесс потомок выполняет системный вызов для изменения своего образа памяти и запуска новой программы. В Windows вызов одной функции CreateProcess интерфейса Win32 управляет созданием процесса и запуском в нем нужной программы. Функция содержит следующие параметры: - программу, которую нужно запустить; - параметры командной строки программы; - различные атрибуты защиты; - биты, управляющие наследованием открытых файлов; - приоритеты; - спецификацию окна, которое следует открыть для процесса; - указатель на структуру, в которой информация о созданном процессе возвращается вызывающей программе. Для управления процессами и их синхронизации в Win32 содержится около 100 функций. И в UNIX и в Windows после создания нового процесса родительский и дочерний процессы имеют собственные различные адресные пространства. В UNIX начальное адресное пространство дочернего процесса является копией родительского, но сами адресные пространства различны, и перезаписываемая память совместно не используется. В то же время созданный процесс может использовать совместно с родительским процессом некоторые ресурсы, например открытые файлы. В Windows адресные пространства родительского и дочернего процессов отличаются с самого начала. При рождении процесса система заводит новый блок управления процессом (РСВ, Process Control Block, табл. 3.1.) с состоянием процесса рождение и начинает его заполнять. Новый процесс получает собственный уникальный идентификационный номер. Поскольку для хранения идентификационного номера процесса в операционной системе отводится ограниченное количество битов, для соблюдения уникальности номеров количество одновременно присутствующих в ней процессов должно быть ограничено. После завершения какого-либо процесса его освободившийся идентификационный номер может быть повторно использован для другого процесса. Обычно для выполнения своих функций процесс потомок требует определенных ресурсов: памяти, файлов, устройств ввода-вывода и т.д. Существует два подхода к выделению ресурсов для процесса-потомка: - получение некоторой части родительских ресурсов, возможно разделяя с процессом предком и другими процессами потомками права на них; - получение ресурсов непосредственно от операционной системы. Информация о выделенных ресурсах заносится в РСВ. После наделения процесса потомка ресурсами необходимо в его адресное пространство занести программный код, значения данных, установить программный счетчик. Существуют два решения: - процесс потомок становится дубликатом процесса родителя по регистровому и пользовательскому контекстам, при этом должен существовать способ определения, кто из процессов-двойников является родителем; - во втором случае процесс потомок загружается новой программой из какого-либо файла. Операционная система Unix разрешает порождение процесса только первым способом; для запуска новой программы необходимо сначала создать копию процесса родителя, а затем процесс потомок должен заменить свой пользовательский контекст с помощью специального системного вызова. Операционная система VAX/VMS допускает только второе решение. В Windows NT возможны оба варианта. Порождение нового процесса как дубликата процесса родителя приводит к возможности существования программ (исполняемых файлов) для работы которых организуется более одного процесса. Возможность замены пользовательского контекста процесса по ходу его работы (загрузки для исполнения новой программы) приводит к тому, что в рамках одного и того же процесса может последовательно выполняться несколько различных программ. После наделения процесса содержанием в РСВ дописывается оставшаяся информация, и состояние нового процесса изменяется на готовность. Процесс родитель может продолжать свое выполнение одновременно с процессом потомком, а может ожидать завершения работы некоторых или всех своих процессов потомков. Одноразовая операция завершение процесса. После создания процесс начинает выполнять свою работу и завершается по одному из ниже перечисленных событий: - обычный выход (преднамеренно); - выход по ошибке (преднамеренно); - выход по неисправимой ошибке (непреднамеренно); - уничтожение другим процессом (непреднамеренно). В основном процессы завершаются по мере выполнения своей работы. После окончания компиляции программы компилятор выполняет системный запрос, чтобы сообщить операционной системе об окончании работы. В UNIX этот системный запрос exit, в Windows – ExitProcess. Программы, рассчитанные на работу с экраном, также поддерживают преднамеренное завершение. В текстовых редакторах, браузерах и других программах имеется кнопка или пункт меню, выбрав который можно удалить все временные файлы, открытые процессом, и затем завершить процесс. Другой причиной завершения процесса может стать неустранимая Ошибка, например, если пользователь набрал на клавиатуре команду компиляции файла, который не существует, то компилятор просто закончит работу. Интерактивные процессы, рассчитанные на работу с экраном, обычно не завершают работу при получении неверных параметров, а выводят на экран диалоговое окно и предлагают пользователю ввести правильные параметры. Третьей причиной завершения процесса является ошибка, вызванная самим процессом, чаще всего связанной с ошибкой в программе. Например, выполнение недопустимой команды, обращение к несуществующей области памяти, деление на ноль. В некоторых системах (например, в UNIX) процесс может информировать операционную систему о том, что он сам обработает некоторые ошибки, в этом случае процессу посылается сигнал при появлении ошибки и процесс прерывается, а не завершается. Четвертой причиной может быть выполнение другим процессом системного запроса на уничтожение процесса. В UNIX такой системный запрос kill, соответствующая функция в Windows – TerminateProcess в Win32. В обоих случаях киллер должен обладать соответствующими полномочиями по отношению к уничтожаемому процессу. В ряде операционных систем (например, VAX/VMS) гибель процесса родителя приводит к завершению работы всех его потомков. В других (например, Unix) – процессы потомки продолжают свое существование, но возникает необходимость изменения информации в их РСВ о породившем их процессе для того, чтобы иерархическое дерево процессов оставался целостным. После того как процесс завершил свою работу, операционная система переводит его в состояние: закончил исполнение и освобождает все ассоциированные с ним ресурсы, делая соответствующие записи в блоке управления процессом. При этом сам РСВ не уничтожается, а остается в системе еще некоторое время, так как процесс родитель может запросить операционную систему о причине завершения работы потомка и/или статистическую информацию о его работе. Информация об отработавшем процессе сохраняется в РСВ до запроса процесса родителя или до конца его деятельности, после чего она удаляется из системы. В операционной системе Unix процессы, находящиеся в состоянии закончил исполнение, принято называть процессами-зомби. Многоразовые операции. За время функционирования операционной системы один и тот же процесс может выполняться многократно. Это обусловлено: обращениями к операционной системе процессов с запросами ресурсов; выполнением системных функций; взаимодействием с другими процессами; появлением сигналов прерывания от таймера, каналов и устройств ввода/вывода и других устройств. Основных состояний процесса два: - активное состояние процесса – состояние процесса, когда он участвует в конкуренции с другими процессами за ресурсы компьютера; - пассивное состояние процесса – состояние процесса, когда он известен операционной системе, но в отношении ресурсов не проявляет никаких действий. Существует комплекс правил перехода между стадиями выполнения процессов, связанных либо с системными событиями, либо с действиями пользователя. При выполнении многоразовых операций над процессами операционная система производит ниже перечисленные действия. 1. Запуск процесса. Из числа процессов, находящихся в состоянии готовность, операционная система выбирает один процесс для последующего исполнения. Для избранного процесса операционная система обеспечивает наличие в оперативной памяти информации, необходимой для его дальнейшего выполнения. Далее состояние процесса изменяется на исполнение, восстанавливаются значения регистров для данного процесса и управление передается команде, на которую указывает счетчик команд процесса. Все данные, необходимые для восстановления контекста, извлекаются из РСВ процесса. 2. Приостановка процесса. Из стадии исполнение процесс может быть приостановлен в результате прерывания по следующим причинам: - процесс переводится супервизором операционной системы в состояние готовность в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему времени; - процесс блокируется из-за невозможности предоставить ему ресурс или вследствие запроса ввода/вывода, а также по команде оператора на приостановку задачи. После приостановки процесса процессор сохраняет счетчик команд и регистры в стеке исполняемого процесса, затем передает управление по специальному адресу обработки данного прерывания. По указанному адресу обычно располагается одна из частей операционной системы. Она сохраняет динамическую часть системного и регистрового контекстов процесса в его РСВ, переводит процесс в состояние готовность и приступает к обработке прерывания. 3. Блокирование процесса. Процесс блокируется, когда он не может продолжать работу, не дождавшись возникновения какого-либо события в вычислительной системе. Для этого он обращается к операционной системе при помощи специального системного вызова. Операционная система обрабатывает системный вызов, при необходимости сохраняет нужную часть контекста процесса в его PCB и переводит процесс из состояния исполнения в состояние ожидание. 4. Разблокирование процесса. После возникновения определенного события и его определения операционной системой производится проверка нахождения процесса в состоянии ожидание для данного события. Если такой процесс обнаружен, то операционная система переводит его в состояние готовность, выполняя действия, связанные с наступлением события (инициализация операции ввода-вывода для очередного ожидающего процесса и т.п.). Процесс из стадии блокирования в стадию готовность переходит в следующих случаях: - по команде оператора (пользователя); - при выборе из очереди супервизором; - по вызову из другой задачи (посредством обращения к супервизору один процесс может создавать, инициировать, приостановить, остановить или уничтожить другой процесс); - по прерыванию от внешнего «инициативного» устройства; - при наступлении запланированного времени запуска программы. Операция разблокирования процесса ожидающего ввода-вывода протекает следующим образом. При исполнении процессором некоторого процесса возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над исполняемым процессом производится операция приостановки, затем операционная система производит разблокирование процесса, инициировавшего запрос на ввод-вывод, и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования. Для корректного переключения процессора с одного процесса на другой необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, представляет собой накладные расходы, снижающие производительность системы. Это время зависит от вычислительной системы и колеблется в диапазоне от 1 до 1000 микросекунд. Сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения).
Дата добавления: 2014-01-07; Просмотров: 12808; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |