Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по информатике.docx
Скачиваний:
11
Добавлен:
14.04.2019
Размер:
806.14 Кб
Скачать

38 Операционные системы. Процессы и потоки.

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

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

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

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

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

Рис. 3.3. Модель процессов

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

  • о состоянии процесса;

  • счетчик команд;

  • распределение памяти;

  • состояние открытых файлов;

  • указатель стека;

  • об использовании и распределении ресурсов.

Модель процесса базируется на двух независимых концепциях: группировании ресурсов и выполнении программы. Когда эти концепции разделяют, появляется понятие потока.

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

Прежде всего, каждый процесс рассматривается как способ объединения родственных ресурсов в одну группу. У процесса есть адресное пространство, содержащее программу, данные, открытые файлы, дочерние процессы, аварийные необработанные события, обработчики сигналов, учетная информация и п. п. Это ресурсы процесса.

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

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

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