Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемСтепан Бедняков
1 Системы реального времени Лекция 4: процессы
2 Понятие процесса Процесс - фундаментальное понятие любой операционной системы С помощью процессов происходит управление ресурсами компьютера, которые используются для выполнения программы
3 Процессы – взгляд изнутри В каждый момент времени может выполняться только одна (или более, если процессоров в системе несколько) команда Поддержка «параллельного» выполнения осуществляется с помощью метода «квантования времени», когда система через определенные промежутки времени меняет текущий выполняемый процесс
4 Процессы – реализация Процесс – это прежде всего данные! Каждый процесс состоит из адресного пространства и набора структур данных, содержащихся в ядре системы
5 Процесс: адресное пространство Адресное пространство может быть отдельным для каждого процесса (HardHat, BlueCat, LynxOS, eCOS), а может быть общим для всех процессов (VxWorks, uClinux, RTEMS). Общее адресное пространство упрощает реализацию системы и многих сервисов… …но потенциально уменьшает ее устойчивость
6 Важнейшие структуры данных процесса таблица распределения памяти процесса текущий статус процесса приоритет выполнения процесса информация о ресурсах системы, используемых процессом владелец процесса
7 Структуры данных процесса: важное примечание На самом деле выше описан «идеальный» случай В реальных системах те или иные структуры могут отсутствовать
8 Таблица распределения памяти процесса Содержит указатели на стек, кучу, статическую область и код процесса Эти указатели указывают в адресное пространство процесса или общее адресное пространство системы
9 Текущий статус процесса Running (работает) Stopped (остановлен) Waiting (ожидающий) Zombie (процесс-«зомби»: завершен, ждет завершения родительского процесса) Состояние zombie есть не во всех системах
10 Приоритет выполнения процесса Характеризует «важность» процесса для системы Математически представляется по-разному, в зависимости от системы Процессы с более высоким приоритетом БЛОКИРУЮТ процессы с более низким приоритетом (т. е. последние не получают управления, пока первые активны) Поэтому высокоприоритетные процессы должны иногда «засыпать»
11 Процессы: высокоприоритетные и низкоприоритетные Наиболее высокий приоритет обычно у системных процессов («демонов» - daemons), которые большую часть времени «спят», но должны моментально реагировать на адресованные им события Наиболее низкий – у «фоновых» процессов, типа системного журнала (syslogd) Пользовательские процессы занимают промежуточное положение
12 Информация о ресурсах системы, используемых процессом Содержит адреса занятых процессом портов, каналов DMA, прерываний и пр.
13 Владелец процесса Каждый процесс имеет UID - идентификационный номер пользователя, создавшего данный процесс В однопользовательских системах (VxWorks, RTEMS) этого параметра у процесса нет
14 Владелец процесса: многопользовательские системы Каждый процесс имеет UID - идентификационный номер пользователя, создавшего данный процесс Вносить изменения в процесс может только его создатель и привилегированный пользователь (root).
15 Идентификатор процесса Каждому новому процессу присваивается уникальный номер – PID Новый процесс в POSIX.1a системах создается путем клонирования одного из существующих процессов – функция fork() после чего текст (т.е. набор инструкций для процессора) нового процесса заменяется текстом программы, которую процесс должен выполнить – семейство функций exec()
16 Контекст процесса Контекст процесса - совокупность данных ОС о процессе (внешние данные процесса) Контекст определяет, где находятся связанные с процессом структуры (см. выше)
17 Переключение контекстов Система через определенные промежутки времени меняет текущий выполняемый процесс, т. е. начинает выполнять команды кода другого процесса При этом текущее состояние первого процесса сохраняется в его контексте, а он приостанавливается Т. о. контексты и переключение контекстов – основное средство поддержки многозадачности
18 Создание процессов в POSIX- системах #include pid_t fork(void); Создает полную копию вызывающего процесса, отличающуюся только PID Порожденному процессу возвращается значение 0 …Родительскому - PID порожденного
19 Что делать с дочерним процессом? Как правило, прежде всего закрывают все дескрипторы, относящиеся к родительскому процессу После этого часто вызывают команду семейства exec (см. ниже) Или делают что-то еще
20 Команды семейства exec #include extern char **environ; int execl(const char *path, const char *arg,...); int execlp(const char *file, const char *arg,...); int execle(const char *path, const char *arg,..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); Замещают данные и код текущего процесса данными и кодом исполнимого файла Новый процесс начинает немедленно выполняться
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.