- •Операционные системы. Структура вычислительной системы
- •Историческая справка.
- •1945–1955 Гг.Ламповые машины. Операционных систем нет
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •Понятие процесса
- •Контекст процесса содержит следующую информацию для данного процесса:
- •Некоторые сведения об архитектуре компьютера
- •Взаимодействие с периферийными устройствами
- •Физическая организация памяти компьютера
- •Локальность
- •Логическая память
- •Связывание адресов
- •Одна из основных функций ос - управление памятью. Функции системы управления памятью
- •Process Control Block и контекст процесса
- •Одноразовые операции
- •Многоразовые операции
- •Переключение контекста
- •Размер блока
- •Директории в ос Unix
- •Вопросы для самоконтроля.
Process Control Block и контекст процесса
Для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных. Эта структура (контекст процесса) содержит информацию, специфическую для данного процесса:
состояние, в котором находится процесс;
программный счетчик процесса или, другими словами, адрес команды, которая должна быть выполнена для него следующей;
содержимое регистров процессора;
данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д.);
учетные данные (идентификационный номер процесса, какой пользователь инициировал его работу, общее время использования процессора данным процессом и т. д.);
сведения об устройствах ввода-вывода, связанных с процессом (например, какие устройства закреплены за процессом, таблицу открытых файлов).
Ее состав и строение зависят, конечно, от конкретной ОС. Во многих ОС информация, характеризующая процесс, хранится не в одной, а в нескольких связанных структурах данных. Эти структуры могут иметь различные наименования, содержать дополнительную информацию или, наоборот, лишь часть описанной информации. Для любого процесса, находящегося в вычислительной системе, вся информация, необходимая для совершения операций над ним, доступна ОС. Для простоты будем считать, что она хранится в одной структуре данных. Мы будем называть ее PCB (Process Control Block) или блоком управления процессом. Блок управления процессом является моделью процесса для ОС. Любая операция, производимая ОС над процессом, вызывает определенные изменения в PCB. В рамках принятой модели состояний процессов содержимое PCB между операциями остается постоянным.
Информацию, для хранения которой предназначен блок управления процессом, удобно для дальнейшего изложения разделить на две части. Содержимое всех регистров процессора (включая значение программного счетчика) будем называть регистровым контекстом процесса, а все остальное – системным контекстом процесса. Знания регистрового и системного контекстов процесса достаточно для того, чтобы управлять его работой в ОС, совершая над ним операции. Однако этого недостаточно для того, чтобы полностью охарактеризовать процесс. ОС не интересует, какими именно вычислениями занимается процесс, т. е. какой код и какие данные находятся в его адресном пространстве. С точки зрения пользователя, наоборот, наибольший интерес представляет содержимое адресного пространства процесса, возможно, наряду с регистровым контекстом определяющее последовательность преобразования данных и полученные результаты. Код и данные, находящиеся в адресном пространстве процесса, будем называть его пользовательским контекстом. Совокупность регистрового, системного и пользовательского контекстов процесса для краткости принято называть просто контекстом процесса. В любой момент времени процесс полностью характеризуется своим контекстом.
Таким образом, контекст процесса содержит менее оперативную, но более объемную информацию о процессе, необходимую для возобновления выполнения процесса с прерванного места: содержимое регистров процессора, коды ошибок, информацию о всех открытых данным процессом файлов, и не завершенных операций ввода, а так же других данные, характеризующие состояние вычислительной среды в момент прерывания. Контекст, как и дескриптор, доступны только программе ядра.
Порождение процессов в системе Unix происходит в результате выполнения системного вызова «fork». ОС строит образ порожденного процесса, являющийся точной копией образа родительского процесса: т.е. дублируется дескриптор, контекст и образ процесса. После выполнения системного вызова «fork» оба процесса продолжают выполнение с одной и той же точки. Чтобы процесс мог опознать, является ли он родительским или процессом-потомком, системный вызов fork возвращает в родительский процесс идентификатор процесса-потомка, а в процесс-потомок - значение NULL. Типичное разветвление на языке С выглядит так:
if (fork())
{ действие родительского процесса}
else
{действие процесса-потомка}
С помощью системного вызова exec процесс может перейти к выполнению другой программы.