Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

1. Планирование выполнения процессов (долгосрочная задача, касается способа постановки и выбора из очереди вновь поступивших на выполнение процессов).

2. Диспетчирование, переключение управления из одного готового процесса на другой (краткосрочная задача, касается непосредственно организации вычислительного процесса).

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

Основные способы создания процесса:

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

2. Выполнение системного запроса на создание процесса (например, в Windows – CreateProcess). Управляет созданием процесса и запуском в его рамках нужного модуля.

3. Запрос пользователя на создание процесса – выполняется из программы с передачей необходимых параметров в процесс, как правило, параметры передаются списком, адрес которого находится в одном из регистров или стеке при начале работы модуля (в ОС Windows порядка 100 функций по управлению процессами).

4. Инициирование пакетного задания – в этом случае в ОС такого типа существуют так называемые макрокоманды, по которым ос или пользователь может создать процессы следующих типов:

- Самостоятельный процесс (макрокоманда ATTACH) – выполняется как отдельная программа, не зависящая от программы-родительницы.

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

- Создать процесс, но не выполнять (макрокоманда LOAD). Например, загрузка каких-нибудь таблиц.

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

Как правило, процесс завершается в следующих случаях:

1) Штатный выход – после окончания выполнения модуля процесс сообщает ОС о том, что он закончил работу (в Windows ExitProcess).

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

3) Ошибка при выполнении процесса: деление на 0, недопустимая операция, обращение к недействительному адресу и т.п.

4) Уничтожение процесса другим процессом; как правило, осуществляется при выполнении системного вызова (в Windows – TerminateProcess) у процесса-киллера должны быть соответствующие полномочия.

Состояния процесса.

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

1) Выполняющийся – процессу передано управление и он выполняется (предоставлен процессор) – runing.

2) Готовый к выполнению – процесс временно приостановлен, находится в очереди за ресурсом, ждет предоставления процессора(находится в очереди к диспетчеру) – ready.

3) Заблокированный – ожидает завершения какого-то события – locked. Возможная схема реализации:

mov ECB, x'0'

read <файл>, ECB

wait ECB

...

...

...

ECB dc x'0'

(Чтение файла. В команде чтения файла указывается адрес флажка, который должен быть взведен после выполнения команды read. Wait с определенной периодичностью просматривает значения флажка, как только он взведен, значит read выполнился и можно работать дальше. В течение времени, за которое выполняется read процесс может быть заблокирован и процессор передан другому процессу.)

Для реализации модели процессов, как правило, в ОС имеется таблица, обновление которой происходит по мере выполнения процессов. Каждый элемент таблицы описывает один процесс (дескриптор процесса). Формат типовой таблицы описания процессов следующий

1 - данные о состоянии процесса

-регистры процесса

-счетчик команд

-слово состояния программы

-указатель стека

-приоритет

-идентификатор процесса

-принадлежность процесса (родительский, дочерний)

-время начала выполнения процесса

-использование процессорного времени

-адреса полученных сигналов

2 - данные о памяти процесса

-указатель на таблицу сегментов

-указатель на таблицу страниц

-адреса процесса

-размер выделенной оперативной памяти

-и др.

3 - состояние ввода-вывода процесса (файловой системы)

-текущий каталог

-дескрипторы открытых файлов

-и др.

Как правило, в любой ос поддерживается так называемая, основная управляющая таблица. Каждый элемент таблицы содержит некоторый адрес. Адреса заносятся в таблицу, как правило, на этапе NIP. Эти адреса, в свою очередь, являются ссылками на другие таблицы, кроме того, основная таблица, как правило, содержится в резидентной части ядра по фиксированному адресу для данной ОС и имеет название, например, MCT – main control table, CVT – control vector table и аналогично. Как правило, таблица не подвергается страничному обмену, то есть, она всегда в ОП. В ряде случаев, адрес таблицы могут определить умелые руки по контексту ее названия в дампе оперативной памяти.

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





Дата публикования: 2015-06-12; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...