Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТОС_2013 / ТОС_6_процессы_слайды.doc
Скачиваний:
7
Добавлен:
03.03.2016
Размер:
899.58 Кб
Скачать

Процессы

Программой называют совокупность файлов.

Для того, чтобы запустить программу на выполнение, ОС должна создать окружение или среду выполнения задачи, куда относятся ресурсы памяти, возможность доступа к устройствам ввода-вывода, различным системным ресурсам, включая услуги ядра.

Процесс – это окружение (среда выполнения задачи).

Процесс состоит из:

  • инструкций, выполняемых процессором,

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

  • статус процесса.

Программа может породить несколько процессов.

Многозадачность ОС говорит о том, что в ОС одновременно могут выполняться несколько процессов.

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

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

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

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

  1. Инициализация системы.

  2. Выполнение изданного работающим процессом системного запроса на создание процесса.

  3. Запрос пользователя на создание процесса.

  4. Инициирование пакетного задания.

Фоновые процессы, связанные с обработкой почты, обработкой запросов к web-страницам, обеспечивающие вывод на печать, называются демонами.

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

С технической точки зрения процесс формируется одинаково: текущий процесс выполняет системный запрос на создание нового процесса.

В роли текущего процесса может выступать:

  • процесс, запущенный пользователем;

  • системный процесс, инициированный клавиатурой или мышью;

  • или процесс, управляющий пакетами.

В Unix существует только один системный запрос, направленный на создание нового процесса – fork (ветвление).

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

Начальные установки дочернего процесса называют контекстом процесса.

Обычно дочерний процесс выполняет системный вызов exec для изменения своего образа памяти и запуска новой программы.

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

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

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

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

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

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

В основном процессы завершают свою работу, по мере выполнения. В Unix это системный процесс exit().

Для уничтожения процесса другим процессом используется вызов kill.

Иерархия процессов.

Все процессы в системе принадлежат к единому дереву, которое начинается с процесса init.

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

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

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

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

Т.о. в Unix процессы иерархически создаются.

В ОС Windows понятия иерархии процессов не существует, все процессы равноправны.

Типы процессов:

  • Системные процессы – например init. Системные процессы не имеют соответсвующих им программ в виде исполняемых файлов

Инструкции и данные для системных процессов находятся в ядре ОС.

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

  • Прикладные

все остальные процессы.

Атрибуты процесса позволяют ОС эффективно управлять его работой:

  • Идентификатор процесса Process ID (PID) – уникален, присваивается ядром ОС. Когда процесс завершает работу, ядро освобождает занятый им идентификатор.

  • Идентификатор родительского процесса Parent Process ID (PPID) – ID родительского процесса.

  • Приоритет процесса (Nice Number) – относительный приоритет процесса. Относительный приоритет не изменяется системой на всем протяжении жизни процесса (но м.б. изменен пользователем или администратором).

  • Терминальная линия (TTY) – терминал или псевдотерминал, с которого запущен процесс. Процессы демоны не имеют ассоциированного терминала.

  • Реальный (RID) и эффективный (EUID) идентификаторы пользователя. Реальным ИП данного процесса является идентификатор пользователя, запустившего процесс. Эффективный идентификатор служит для определения прав доступа процесса к системным ресурсам. Обычно они равны, но существует возможность задать процессу более широкие права, чем права пользователя, путем установки флага SUID, когда эффективному ID присваивается значение идентификатора администратора.

  • Реальный (RGID) и эффективный (EGID) идентификаторы группы. (флаг SGID).