- •Глава 4. Процессы и потоки
- •4.1. Планирование процессов и потоков
- •4.1.1. Понятия «процесс» и «поток»
- •4.1.2. Назначение подсистемы управления процессами и потоками
- •4.1.3. Создание процессов и потоков
- •4.1.4. Планирование и диспетчеризация потоков
- •4.1.5. Состояния потока
- •4.1.6. Вытесняющие и невытесняющие алгоритмы планирования
- •4.1.8. Алгоритмы планирования, основанные на приоритетах
- •4.1.7. Алгоритмы планирования, основанные на квантовании
- •4.1.9. Смешанные алгоритмы планирования
- •4.1.10. Планирование в системах реального времени
- •4.1.11. Моменты перепланировки
- •4.2. Мультипрограммирование на основе прерываний
- •4.2.1. Назначение и типы прерываний
- •4.2.2. Механизм прерываний
- •4.2.3. Программные прерывания
- •4.2.4. Диспетчеризация и приоритезация прерываний в ос
- •4.2.5. Системные вызовы
- •4.3. Синхронизация процессов и потоков
- •4.3.1. Цели и средства синхронизации
- •4.3.2. Необходимость синхронизации и гонки
- •4.3.3. Критическая секция и блокирующие переменные
- •4.3.4. Семафоры
- •4.3.5. Тупики
- •Вопросы для самоконтроля
4.1.2. Назначение подсистемы управления процессами и потоками
Подсистема управления процессами и потоками является одной из основных подсистем мультипрограммной ОС, непосредственно влияющей на функционирование компьютера. Подсистема занимается созданием и уничтожением процессов и потоков, поддерживает взаимодействие между ними, а также распределяет процессорное время между несколькими одновременно существующими в системе процессами и потоками.
Подсистема ответственна за обеспечение процессов необходимыми ресурсами, для этого ОС поддерживает в памяти специальные информационные структуры, в которые записывает, какие ресурсы выделены каждому процессу. Она может назначить процессу ресурсы в единоличное пользование или в совместное пользование с другими процессами. Некоторые из ресурсов выделяются процессу при его создании, а некоторые — динамически по запросам во время выполнения. Ресурсы могут быть приписаны процессу на все время его жизни или только на определенный период. При выполнении этих функций подсистема управления процессами взаимодействует с другими подсистемами ОС, ответственными за управление ресурсами, такими как подсистема управления памятью, подсистема ввода-вывода, файловая система.
На компьютере при одновременном выполнении нескольких независимых процессов может возникать ряд дополнительных проблем. А именно, потоки возникают и выполняются асинхронно, но у них может возникнуть необходимость во взаимодействии, например, при обмене данными. Кроме этого, также очень важно согласовывать скорости потоков, это необходимо для предотвращения эффекта «гонок» (например, когда несколько потоков пытаются изменить один и тот же файл), взаимных блокировок или других коллизий, которые возникают при совместном использовании ресурсов. Синхронизация потоков является одной из важных функций подсистемы управления процессами и потоками.
Каждый раз, когда процесс завершается, ОС предпринимает шаги, чтобы удалить из системы следы его пребывания. Для этого, подсистема управления процессами закрывает все файлы, с которыми работал процесс, освобождает области оперативной памяти, отведенные под коды, данные и системные информационные структуры процесса, а также выполняется коррекция всевозможных очередей ОС и списков ресурсов, в которых имелись ссылки на завершаемый процесс.
4.1.3. Создание процессов и потоков
Создать процесс — это, прежде всего, означает создать описатель процесса, в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п. Создание описателя процесса знаменует собой появление в системе еще одного процесса. Начиная с этого момента при распределении ресурсов ОС должна принимать во внимание потребности нового претендента на ресурсы компьютера.
Создание процесса также включает в себя загрузку кодов и данных исполняемой программы данного процесса с диска в оперативную память. Для этого ОС должна найти программу на диске, перераспределить оперативную память, если это необходимо, и выделить память исполняемой программе нового процесса. Затем ОС считывает программу с диска и записывает её в выделенные для нее участки памяти. В системах с виртуальной памятью, в начальный момент, может загружаться только часть кодов и данных процесса, с тем чтобы «подкачивать» остальные по мере необходимости.
В многопоточной системе при создании процесса ОС создает для каждого процесса, как минимум, один поток выполнения. При создании потока так же, как и при создании процесса, операционная система генерирует специальную информационную структуру — описатель потока, который содержит необходимую для его выполнения системную информацию. В исходном состоянии поток или процесс (если речь идёт о ОС не поддерживающих многопоточную работу) находится в приостановленном состоянии. Момент выборки потока или процесса на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в данный момент потоков и процессов.
