Управление процессами и потоками
Рейтинг пользователей: / 7
ХудшийЛучший 

Основные функции этой подсистемы:

  • создание процессов и потоков;
  • обеспечение процессов и потоков необходимыми ресурсами;
  • изоляция процессов;
  • планирование выполнения процессов и потоков (вообще, следует говорить и о

планировании заданий);

  • диспетчеризация потоков;
  • организация межпроцессного взаимодействия;
  • синхронизация процессов и потоков;
  • завершение и уничтожение процессов и потоков.

Для того чтобы процессы не могли вмешаться в распределение ресурсов, а также не могли повредить коды и данные друг друга, важнейшей задачей ОС является изоляция одного процесса от другого. Для этого операционная система обеспечивает каждый процесс отдельным виртуальным адресным пространством, так что ни один процесс не может получить прямого доступа к командам и данным другого процесса.

В ОС, где существуют процессы и потоки, процесс рассматривается как заявка на потребление всех видов ресурсов, кроме одного – процессорного времени. Этот важнейший ресурс распределяется операционной системой между другими единицами работы – потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации. Работа по определению момента, в который необходимо прервать выполнение текущего потока, и потока, которому следует предоставить возможность выполняться, называется планированием. Планирование потоков осуществляется на основе информации, хранящейся в описателях процессов и потоков. При планировании принимается во внимание приоритет потоков, время их ожидания в очереди, накопленное время выполнения, интенсивность обращения к вводу-выводу и другие факторы.

Диспетчеризация заключается в реализации найденного в результате планирования решения, т.е. в переключении процессора с одного потока на другой. Диспетчеризация проходит в три этапа:

  • сохранение контекста текущего потока;
  • загрузка контекста потока, выбранного в результате планирования;
  • запуск нового потока на выполнение.

Когда в системе одновременно выполняется несколько независимых задач, возникают дополнительные проблемы. Хотя потоки возникают и выполняются синхронно, у них может возникнуть необходимость во взаимодействии, например, при обмене данными. Для общения друг с другом процессы и потоки могут использовать широкий спектр возможностей: каналы (в UNIX), почтовые ящики (Windows), вызов удаленной процедуры, сокеты (в Windows соединяют процессы на разных машинах). Согласование скоростей потоков также очень важно для предотвращения эффекта "гонок" (когда несколько потоков пытаются изменить один и тот же файл), взаимных блокировок и других коллизий, которые возникают при совместном использовании ресурсов.

Синхронизация потоков является одной из важнейших функций подсистемы управления процессами и потоками. Современные операционные системы предоставляют множество механизмов синхронизации, включая семафоры, мьютексы, критические области и события. Все эти механизмы работают с потоками, а не с процессами. Поэтому когда поток блокируется на семафоре, другие потоки этого процесса могут продолжать работу.

Каждый раз, когда процесс завершается, – а это происходит благодаря одному из следующих событий: обычный выход, выход по ошибке, выход по неисправимой ошибке, уничтожение другим процессом – ОС предпринимает шаги, чтобы "зачистить следы" его пребывания в системе. Подсистема управления процессами закрывает все файлы, с которыми работал процесс, освобождает области оперативной памяти, отведенные под коды, данные и системные информационные структуры процесса. Выполняется коррекция всевозможных очередей ОС и список ресурсов, в которых имелись ссылки на завершаемый процесс.

Механизм многопоточной обработки (multithreading).

Понятию "поток" соответствует последовательный переход процессора от одной команды к другой. Процессору ОС назначают адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. В отличие от процессов, которые принадлежат, вообще говоря, конкурирующим приложениям, все потоки одного процесса всегда принадлежат одному приложению, поэтому ОС изолирует потоки в гораздо меньшей степени, чем процессы в традиционной мультипрограммной системе. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти, одно и то же адресное пространство.

Это означает, что они разделяют одни и те же глобальные переменные. Поскольку каждый поток может иметь доступ к любому виртуальному адресу, один поток может задействовать стек другого потока. Между потоками одного процесса нет полной защиты, во-первых, потому что это невозможно, а во-вторых, потому что не нужно. Чтобы организовать взаимодействие и обмен данными, потокам не требуется обращаться к ОС, им достаточно использовать общую память – один поток записывает данные, а другой читает их. С другой стороны, потоки разных процессов по-прежнему хорошо защищены друг от друга.

При управлении процессами ОС использует два основных типа информационных структур: блок управления процессом (дескриптор процесса) и контекст процесса. Дескрипторы процессов объединяются в таблицу процессов, которая размещается в области ядра. На основании информации, содержащейся в таблице процессов, ОС осуществляет планирование и синхронизацию процессов.

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

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

Информация по состоянию и управлению процессом включает следующие основные данные:

(выполняющийся, готовый к выполнению, ожидающий какого-либо события, приостановленный);    

возможный);

позволит продолжить выполнение процесса;

оперативной памяти и на диске;

выполнение);

между двумя независимыми процессами;

области памяти или возможности выполнять определенные виды команд, использовать системные утилиты и службы;

открытых файлов);

зависит от алгоритма планирования. Сюда относятся, например, такие данные, как время ожидания или время, в течение которого процесс выполнялся при последнем запуске, количество выполненных операций ввода-вывода и др.

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

В контексте процесса содержится следующая основная информация:

арифметической или логической операции (например, знак равенства нулю, переполнения);

системных служб.

 

Не забивайте свои проблемы в дальний угол. В случае необходимости обратитесь за профессиональной психологической помощью.



Понравился контент? Посмотри рекламный блок:
Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.