Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Взаимоблокировка

Процессы

Ключевое понятие операционной системы — процесс. Процессом, по существу, называют программу в момент выполнения. С каждым процессом связывается его адресное пространство — список адресов в памяти от некоторого минимума (обычно нуля) до некоторого максимума, которые процесс может прочесть и в которые он может писать. Адресное пространство содержит саму программу, данные к ней и ее стек. Со всяким процессом связывается некий набор регистров, включая счетчик команд, указатель стека и другие аппаратные регистры, плюс вся остальная информация, необходимая для запуска программы. Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице операционной системы. Эта таблица называется таблицей процессов и представляет собой массив (или связанный список) структур, по одной на каждый существующий в данный момент процесс. Если процесс может создавать несколько других процессов (называющихся дочерними процессами), а эти процессы, в свою очередь, тоже могут создать дочерние процессы, перед нами предстает дерево процессов. Связанные процессы — это те, которые объединены для выполнения некоторой задачи, и им нужно часто передавать данные от одного к другому и синхронизировать свою деятельность

Потоки

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

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

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

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

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

Взаимоблокировка

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

Тупиковую ситуацию легче всего представить с помощью примера из реального мира, с которым знаком каждый, — это пробки на дорогах. Обсудим ситуацию на рис. 1.13, а. Четыре автобуса приближаются к перекрестку. За каждым автобусом есть еще машины (они не показаны на рисунке). При определенном невезении первые четыре автобуса прибудут на перекресток одновременно, что приведет к ситуации, показанной на рис. 1.13, б. Все автобусы заблокировали друг друга, поскольку ни один автобус не может двигаться вперед. Каждый автобус блокирует остальные. При этом они не могут двигаться назад, потому что за ними есть еще автобусы. И нет простого способа выпутаться из этой ситуации.

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


Дата добавления: 2015-12-08; просмотров: 66 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)