Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

38. Планирование и диспетчеризация в unix системах

Анализ очередей при каждом переключении контекста. Связано с таймерными прерываниями.

Основные методы планирования

- метод карусели – кольцевой буфер. Ядро предоставляет ресурсы процессу на определённый квант времени. Далее выбирается та задача, которая дольше всего была в ожидании. После этого – запись в конец буфера (метод FIFO). Квант регулируется динамически в зависимости от загруженности системы. Очередность регулируется приоритетами. Процесс возобновляется из точки приостанова. Возобновлений может быть много.

Диспетчеризация – реализация решения, принятого на этапе планирования программами и аппаратными средствами.

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

Параметры диспетчеризации

Существует специальное поле структур, описывающих процессы. Они включают параметры планирования. Есть поле динам/стат приоритетов.

1) приоритет в режиме задачи (user mode)

2) приоритет в режиме ядра (kernel mode)

Приоритет в режиме задачи зависит от того, как этот процесс использовал ресурсы в ранее.

С каждым уровнем приоритетов ассоциируется своя очередь процессов. Приоритеты для (1) оценивается после возвращения процесса из режима ядра в режим задачи. Приоритеты для (2) вычисляются для процессов находящихся в режиме ожидания (останова). Для (1) существует верхнее пороговое значение, для (2) – нижнее пороговое значение

Ядро вычисляет приоритет в следующих случаях:

- непосредственно перед переходом процесса в состояние останова;

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

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

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

Приоритет процесса в очереди = полураспад + базовое значение.

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

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

39. Управление процессами в unix-подобных системах

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

Интерфейс системных вызовов – набор услуг ядра.

Подсистема управления процессами в ядре:

1) 2 типа объектов для использования (во всех ОС):

- файлы (все данные - файлы)

- процессы

2) доступ к ПУ через файлы

3) при запуске программы ядро запускает соответствующий файл, создает образ процесса и передает процессу управление

4) взаимодействие между файлами и процессами, возникающие при функционировании процессов

5) функциональность ОС определяется выполнением соответствующих процессов.

Программа – совокупность файлов, подвергнутых компоновке и выполнению. Чтобы запустить программу нужно создать среду выполнения программы (окружение), это: ресурсы памяти, доступ к системе к ПУ и тд. Это окружение процесс. Процесс – совокупность данных ядра системы, необходимых для описания образа программы в памяти и для управления ее выполнением.

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

Типы процессов в UNIX системах

1) системные процессы

2) демоны

3) прикладные процессы (прикладные)

Системные процессы – часть ядра всегда в ОЗУ (резидентные), не имеют исполняемых файлов, запускаются при инициализации ядра и выполняют функции ядра; доступ фактически ко всем данным (диспетчеры кэша, страничного замещения, swapping памяти ядра)/

init – прародитель всех остальных процессов, запускается (в etc/init ) первым (имеет свой исполнительный файл) (далее - loginshell)

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

Демоны - неинтерактивные процессы, запускаемые обычным способом (загрузка кода в ОЗУ исполняемого файла), как правило, выполняются в фоновом режиме. Большинство запускается при инициализации системы. Обеспечивает работу основных подсистем (терминальные доступ, сетевые сервисы). Не связаны напрямую ни с одним пользовательскими процессами. Воспользоваться напрямую ими нельзя. Большую часть времени находятся в режиме ожидания запросов. Время жизни ограничено временем пользовательского сеанса.

Все остальное - прикладные процессы.

Выполняются в режиме задачи. Это все программы, запускаемые через интерпретатор Shell. Имеют исполнительные файлы.

Shell – умолчание записано в файле passwd.

Может быть интерактивным (обязательно владение такими ресурсами, как терминал и консоль) либо фоновым (наоборот).