Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
41
Добавлен:
30.04.2013
Размер:
16.33 Mб
Скачать

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

Единственный способ создания пользователем нового процесса в операционной системе UNIX является выполнение системной функции fork(). Процесс, вызывающий функцию fork(), называется родительским (процесс-родитель), вновь создаваемый процесс называется порожденным (процесс-потомок). Синтаксис функции fork:

int pid = fork ();

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

  • Идентификатор процесса (PID, PPID);

  • Израсходованное время CPU (оно обнуляется);

  • Сигналы процесса-родителя, требующие ответа;

  • Блокированные файлы (record locking)

В ходе выполнения функции fork() ядро производит следующую после­довательность действий:

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

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

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

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

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

/Анализ состояний процессов

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

Теорема:

Эффективность ОС может быть неявно измерена или определена в ре­зультате наблюдения распределения процессов по состояниям.

Из этой теоремы вытекают следствия:

Следствие 1.

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

Следствие 2.

Система называется ограниченной по быстродействию, если большая часть процессов находится в очереди на выполнение, а меньшая часть — в очереди к устройствам I/О.

Таким образом, сбалансированная система обладает равномерным рас­пределением процессов по состояниям. Наблюдая состояния процессов,

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

/Уровневое представление ос unix

Ядро операционной системы UNIX не является изолированным. На рис. 1.5 видно место ядра в операционной системе UNIX, представленной в ви­де уровней. Обычно выделяют четыре главных уровня в системе:

Уровень пользователя (User Applications) — набор программных прило­жений, используемый клиентом для обеспечения взаимодействия с систе­мой и ее управлением.

Сервисы ОС (System Са11 Interface) —виды услуг, которые ОС предос­тавляет пользователю через интерфейсы (например, типа SHELL или window, виды компиляторов и т.п.).

User Applications

System Саll 1nteface

OS Kernel

Hardware Controllers

Рис. 1.5.

Ядро системы (OS Кегпе1)- основная часть, обеспечивающая работу всей системы. В том числе планирование и управление задачами, поддержка многопользовательского режима, синхронизация работы системы, управ­ление устройствами на уровне управления объектами без конкретно выделенного вида устройств.

Управление устройствами (Hardware Controllers) – подсистема управле­ния возможными физическими устройствами на уровне устройств.

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