Алгоритм имеет два уровня: низкоуровневый выбирает следующий процесс из набора процессов в памяти, готовых к работе, а высокоуровневый перемещает процессы из памяти на диск и обратно, что позволяет всем процессам иметь возможность попасть в память и быть запущенными.
В низкоуровневом алгоритме используется несколько очередей. С каждой очередью связан диапазон непересекающихся значений приоритетов. Процесс, выполняющиеся в режиме пользователя (верхний уровень) имеют положительные значения приоритетов. У процессов, выполняющихся в режиме ядра (обращающихся к системным вызовам) значение приоритетов отрицательное. Отрицательные значения приоритетов считаются наивысшими, а положительные минимальными. В очередях располагаются только процессы находящиеся в памяти и готовые к работе. Существуют процессы в форме «ожидающий процесс в режиме пользователя», куда входит:
ожидание дискового ввода/вывода.
Ожидание дискового буфера.
Ожидание терминального ввода.
Ожидание терминального вывода.
Так же существуют процессы «ожидающий процесс в режиме ядра», к которым относится:
Ожидание завершения дочернего процесса.
Приоритет пользователя 0.
Приоритет пользователя 1.
Приоритет пользователя 2 и так далее.
Когда запускается низкоуровневый планировщик он ищет очередь начиная с наименьшего отрицательного значения (высший приоритет), пока не находит очередь, в которой есть хотя бы один такой процесс. Если процесс использует весь свой квант времени, то он помещается в конец очереди, а алгоритм планирования запускается вновь.
Примерно один раз в секунду приоритет каждого процесса пересчитывается по определенной формуле: Priority = CPU_Usage+ Nice+Base. на основе нового сосчитанного приоритета каждый процесс прикрепляется к новой очереди.
Параметр Nice имеет значение по умолчанию равное нулю, но допустимый диапазон его, как правило +/- 20. Процесс может установить значение Nice с помощью системного вызова. Только системный администратор может запросить обслуживание с более высоким приоритетом: то есть значение от -20 до -1.
Отрицательное значение приоритета для дискового ввода/вывода, терминального ввода/вывода жёстко прошиты в ОС и могут быть изменены только путём перекомпиляции самой системы. Эти отрицательные значения представлены параметром Base и их величина достаточно отличается от нуля их достаточно, что бы перезапущенный процесс попал в другую очередь.
Таким образом процессы, ограниченные производительностью (то есть находящиеся в положительных очередях) в основном обслуживаются после того как будут обслужены все процессоры, ограниченные вводом/выводом (то есть когда все эти процессы окажутся заблокированы в ожидании ввода/вывода).
28. Файловая система ОС ЮНИКС: понятие, возможности, структурные особенности.
Организационная структура в соответствии с которой файлы хранятся на запоминающих устройствах, называется файловой системой. Файловая система ОС UNIX разрабатывалась в первую очередь для удобства пользователей и упрощения доступа к данным. Это обусловило необходимость реализации логической группировки файлов. Такие группы в UNIX называются каталогами. Файловая структура имеет иерархическую структуру, что позволяет иметь несколько пользователей, каждый из которых обладает некоторым количеством каталогов.
В многопользовательских системах необходимо иметь ограничения на доступ к каталогам. Усложнения, связанные с реализацией различных режимов доступа к файлам является неизбежных злом для всех многопользовательских систем.
Одно из нововведений в UNIX в том что устройства ВВ ассоциируются в системе с понятием специального файла. Доступ к любому устройству реализуется как обслуживание запроса к дисковому файлу. Файл в UNIX это последовательность байтов произвольной длинны. Размер имён от 14 до 255 символов (в зависимости от версии). По соглашению многие программы ожидают, что имена файлов состоят из основного имени и расширения. Расширения могут иметь произвольную длину, а файлы могут иметь по нескольку расширений. Каждое устройство ВВ представлено в системе по меньшей мере одним специальным файлом. UNIX обеспечивает существование целой системы каталогов. Программы пользователей могут читать файлы этого типа, но не в состоянии изменить их и ОС гарантирует сохранность структуры этих каталогов. В другой тип каталогов входят обычные файлы, файлы каталогов, специальные файлы и в некоторых версиях FIFO-файлы, поименованные конвейером.
Имена файлов разделяются на две группы:
1. Абсолютные – описывают путь к файлу от корневого каталога.
2. Относительные – описывают путь, начинающийся с высшего текущего каталога.
Для удобства пользователя каталоги хранятся на диске в виде файлов и до определённого предела с ним можно работать как с файлом. Каталоги могут содержать подкаталоги и корневой каталог, как правило, содержит несколько подкаталогов.
Каталоги в UNIX .
Каталог | |
Bin | Двоичные (используемые программы) |
Dev | Специальные файлы УВВ |
Etc | Любые системные файлы |
Lib | Библиотеки |
Usr | Пользователи |
Одним из важнейших свойств файловой системы UNIX является возможность монтирования, то есть любая файловая система может быть прикреплена к общему дереву каталогов в любой его точке.