Важнейшей функцией операционной системы является организация рационального использования всех аппаратных и программных ресурсов компьютера. К основным ресурсам относятся процессор, память, внешние устройства, программы и сами данные, которые участвуют в вычислениях.
Как известно, основное понятие ОС – понятие процесса.Процесс, создается ОС, когда пользователь или сама ОС запускает программу на выполнение. Часть процессов порождаются пользовательскими приложениями и называются пользовательскими процессами.Вторая часть процессов, запускаются самой ОС и являются системными. Пользовательские и системные процессы имеют разный приоритет, от которого зависит очередность и интервал времени обслуживания процесса.
Для каждого вновь создаваемого процесса ОС создает информационные структуры (специальные таблицы), которые содержат данные о потребностях процесса в ресурсах, о фактически выделенных ему ресурсах, об адресах ОП в которых размещен процесс и т.д.
Функциями ОС по управлению процессами являются:
- Распределение оперативной памяти;
- Выделение процессорного времени конкретному процессу;
- Распределение ресурсов между процессами;
- разрешение конфликтов при распределении ресурсов
При планировании процессов,то есть определения порядка выполнения процессов, может применятся невытесняющий и вытесняющий алгоритм. В интерактивных ОС применяются вытесняющие алгоритмы.
Процесс – это крупная единица работы, которая потребляет все ресурсы, кроме процессорного времени. Процессорное время распределяется между потоками, которые представляют собой последовательность команд процесса.
Процесс | ||||
Поток 1 | Поток 2 | ….. | …… | Поток N |
Команды потока 1 | Команды потока 2 | …. | …… | Команды потока N |
При создании процесса ОС создает как минимум один поток выполнения. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти (одно и то же адресное пространство). Между потоками одного процесса нет полной защиты, так как это невозможно, да и не нужно. Для организации взаимодействия между потоками одного процесса не требуется обращения к ОС, достаточно использовать общую область памяти (стек). Потоки разных процессов изолированы друг от друга.
Понятие потока возникло, как средство распараллеливания вычислений, то есть такой программы, которая имеет независимые ветви выполнения. В настоящее время распараллеливание вычислений достигается за счет использования подпрограмм, модулей, динамических библиотек.
Современные интерактивные ОС универсального назначения имеют в своем составе подсистему управления процессами и потоками,в состав которой входит планировщик, диспетчер процессов (потоков) и другие модули.
На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено. Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации.
Планирование – это работа по определению того, в какой момент времени необходимо прервать выполнение текущего активного потока и какому потоку (процессу) предоставить возможность выполняться следующим. Решается две задачи:
1. Определение момента времени для смены активного текущего потока;
2. Выбор для выполнения потока из очереди готовых для выполнения потоков;
При планировании могут приниматься во внимание следующие факторы: приоритет потока (системный или пользовательский), время ожидания в очереди, общее время выполнения процесса, которому принадлежит поток, интенсивность обращений к вводу – выводу.
В ОС универсального назначения планирование осуществляется динамически, то есть решение принимается на основе анализа текущего состояния системы. ОС работает в условиях неопределенности – процессы и потоки возникают в случайный момент времени и завершаются случайно. Планирование потоков выполняется модулями ядра ОС.
Поток может находится в трех состояниях:
Выполнения– активное состояние, когда поток выполняется процессором;
Ожидания– пассивное состояние, процесс ждет окончание операции ввода – вывода или освобождения ресурса;
Готовность – пассивное состояние, процесс стоит в очереди для получения кванта процессорного времени.
Состояние потока может быть отражено в виде графа состояний потока
Поток завершен или произошла ошибка | ||||
выполнение | ||||
Поток выбран на выполнение | Поток ожидает завершение операции ввода – вывода или освобождения ресурса | |||
Поток прерван | ||||
готовность | ожидание | |||
Ввод – вывод завершен (событие произошло) | ||||
Только что созданный поток |
Диспетчеризация – заключается в реализации найденного решения в результате планирования. Диспетчеризация сводиться к следующему:
1. Сохранение состояния текущего потока, который требуется сменить, с тем чтобы затем начать его выполнение с момента прерывания. С этой целью создается контекст процесса, запоминается состояние регистров, адреса памяти и т.д.
2. Загрузку нового потока по его предыдущему состоянию, для этого восстанавливается состояние регистров процессора
3. Запуск нового процесса на выполнение
При выполнении диспетчеризации управление передается – диспетчеру потоков.