Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOS.doc
Скачиваний:
12
Добавлен:
21.12.2018
Размер:
1.25 Mб
Скачать

Вопрос 51. Ос unix. Понятие процесса. Взаимодействие между процессами. Сигналы.

Полный набор состояний процесса:

  • выполняется в режиме задачи.

  • выполняется в режиме ядра.

  • готов к запуску под управлением ядра.

  • процесс приостановлен и находится в ОП.

  • процесс готов к запуску, но программа подкачки еще должна загрузить в АЗУ.

  • процесс приостановлен, и программа выгрузила его во внешнюю память.

  • процесс возвращен из режима ядра в режим задачи.

  • процесс вновь создан и находится в переходном состоянии.

  • процесс вызывает функцию …. и прекращает свое существование.

После выполнения в режиме задачи может производиться прерывание по таймеру, обрабатываем прерывание по таймеру и возврат в ядро, либо переход в состояние резер­вирования.

Процесс описывает две структуры:

  • запись таблицы процессов (содержит поля, доступные ядру)

  • пространство процессов (содержит поля, доступные процессу)

Запись таблицы процессов:

  • поле состояния, которое идентифицирует состояние

  • поля, используемые ядром для размещения процесса в основную или внешнюю память

  • пользовательский идентификатор, устанавливающий привилегии пользователя.

  • идентификаторы процесса.

  • параметры планирования (порядок перехода из состояния ядра в состояние за­дачи).

  • различные таймеры (время выполнения в режиме ядра или задачи, количество ре­сурсов).

  • сигнал тревоги, который процесс может послать (устанавливается пользовате­лем).

  • поле сигналов, которые отправлены, но еще не обработаны.

  • вектора, описывающие реакцию на сигнал.

  • поля ошибок, в которые записываются ошибки при выполнении системных функ­ций.

  • поля значений, хранящие результат при выполнении системных функций.

  • параметры ввода – вывода.

  • имена текущих и корневых каталогов.

  • таблицы дескрипторов открытых файлов.

  • поля прав доступа (хранятся маски доступа).

Контекст процесса включает: •пользовательский контекст •регистровый контекст •системный контекст

Пользовательский контекст из программ и данных стека, содержимое в совместное использование простран­ства памяти.

Регистровый контекст включает счетчик команд, стек, регистры общего назначе­ния и т.д.

Системный контекст имеет статическую и динамическую часть:

Статическая часть:

запись в таблицу процессов, описывающих состояние процессов.

часть адресного пространства, выданного процессу, где хранится управляющая информация о процессе.

запись частной таблицы области процесса, общая таблицы, таблица страниц для преобразования виртуаль­ного адреса в физический.

Динамическая часть:

стек ядра (каждый процесс должен иметь свою копию стека)

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

Действия по прерыванию:

при возникновении прерывания в стеке сохраняется текущий контекст и созда­ется новый.

определяется источник прерывания и адрес программы обработки.

завершается прерывание, управление возвращается ядру.

ядро выполняет набор команд по сохранению контекста и стека предыдущего уровня.

продолжается выполнение прерванного текущего уровня.

Взаимодействие с ОС: Приложение считает, что выполняет свою функцию, для пользователя незаметно, что происходит переход.

Записи в таблицу областей

Указатель на индекс файла, содержание которого первоначально загружено в об­ласть

Тип области (команды, частные области)

Раздел области

Местонахождение в физической памяти

Статус (состояние, которое может принимать) состояния области (блокировано и т.д.)

Счетчик ссылок, в котором счетчик процессов, которые ссылаются на данную об­ласть. Пока счетчик не 0, ос­вободить область нельзя

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

PID = Fork ()

Порожденный процесс – потомок.

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

Для порожденного, PID будет иметь нулевое значение.

Fork делает:

-отводит место в таблице под новый процесс.

-присваивает порожденному процессу уникальный код идентификации.

-делает логическую копию контекста родительского процесса.

-увеличивает значение счетчика числа файлов, связанное с процессом.

-возвращаем родительскому процессу код идентификатора дочернего, а дочернему присваивается 0.

Пользовательскому процессу не разрешается создать процесс, занимающий по­следнее место в таблице про­цесса. Доступна эта привилегия лишь суперпользователю.

Завершение процессов При завершении дочернего процесса родительскому передается информация. Если родительский процесс завершился раньше, то дочерний удочеряется процессом Init (все сигналы и результаты работы). Если потомок завершился, а родительский процесс не го­тов получить сигнал об этом, то потомок не исчезает, данный процесс не занимает про­цессорное время, но строка в таблице процессов остается, структура ядра не освободится.

Программа, занимающаяся обслуживанием системных нужд, не имеющая интерфейс, для NT – сервис.

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

Для информации о процессах используется механизм особой файловой системы Proc FS. Она монтируется при запуске системы как каталог Prots. Данные о файле 1 в Proc / 1, данные о файле 2 в Proc / 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]