русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание процессов


Дата добавления: 2013-12-23; просмотров: 1855; Нарушение авторских прав


Понятия о планировании и диспетчеризации процессов

Планирование процессов

2.

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

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

 

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

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



В UNIX существует только один системный запрос, направленный на создание нового процесса: fork (ветвление или вилка). Этот запрос создает дубликат вызы­ваемого процесса. После выполнения запроса fork двум процессам — родитель­скому и дочернему — соответствуют одинаковые образы памяти, строки окружения и одни и те же открытые файлы. Обычно дочерний процесс выполняет системный вызов execve (или похожий) для изменения своего образа памяти и запуска новой программы.

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

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

Во время создания нового процесса операционная система, как правило, выполняет целую последовательность операций. Во-первых, процессы не­обходимо каким-то образом различать между собой — для этого каждому процессу присваивается идентификационный номер процесса(process identification number, PID). Затем система создает блок управления про­цессом(process control block, PCB), называемый также дескриптором про­цесса(process descriptor), в который помещается информация, необходи­мая операционной системе для управления процессом. В блоке управления процессом обычно содержится следующая информация:

• PID;

• текущее состояние процесса (выполняется, готов или блокирован);

программный счетчик(program counter) или счетчик команд— оп­ределяющий, какую по счету команду программы процессор дол­жен будет выполнить следующей;

• приоритет процесса;

• полномочия (данные, определяющие перечень ресурсов, к которым может иметь доступ данный процесс);

• указатель на родительский процесс(parent process), то есть процесс, создавший данный;

• указатели на дочерние процессы(child processes), то есть процессы, созданные данным процессом, если таковые имеются;

• указатели данных и инструкций процесса в памяти;

• указатели выделенных процессу ресурсов (например, файлов).

Кроме того, в блоке управления процессом хранится контекст процесса(processes context), который формируется в момент выхода процесса из состояния выполнения.

 


Блок управления процессом (РСВ):

 

Программный счетчик

Регистры

Состояние

Приоритет

Адресное пространство

Родительский процесс

Дочерние процессы

Открытые файлы ...

Другие флаги

 
 


 

Рисунок 2.1 - Таблица процессов и блоки управления процессами

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

 

Завершение процесса

Процесс завершается в результате появления следующих событий:

1) обычный выход (преднамеренно);

2) выход по ошибке (преднамеренно);

3) выход по неисправимой ошибке (непреднамеренно);

4) уничтожение другим процессом (непреднамеренно).

В основном процессы завершаются по мере выполнения своей работы. После окончания программы выполняется системный запрос, чтобы сообщить операционной системе об окончании работы. В UNIX этот сис­темный запрос — exit, а в Windows — ExitProcess.

Второй причиной завершения процесса может стать неустранимая ошибка. Например, если пользователь набрал на клавиатуре команду неправильную команду.

Третьей причиной завершения процесса является ошибка, вызванная самим процессом, чаще всего связанная с ошибкой в программе.

Четвертой причиной завершения процесса может служить выполнение другим процессом системного запроса на уничтожение процесса. В UNIX такой системный запрос — kill, а соответствующая функция Win32 — TernminateProcess.

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

 



<== предыдущая лекция | следующая лекция ==>
Моделирование режима мультипрограммирования | Алгоритмы планирования


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.