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

Процессы и потоки. Реализация многопоточности.

Читайте также:
  1. ZTPI и процессы личности
  2. Автоволновые процессы в современных и вымерших популяциях организмов.
  3. Активные процессы в лексике и фразеологии
  4. Активные процессы в морфологии
  5. Активные процессы в области ударения
  6. Активные процессы в синтаксисе
  7. Апартеид: сущность доктрины, ее реализация в ЮАР. Современные концепции расового противостояния.

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

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

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

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

При запуске многопоточного процесса в системе с одним процессором потоки работают поочередно. Иллюзия параллельной работы нескольких различных последовательных процессов создается путем постоянного переключения системы между процессами. Многопоточность реализуется примерно так же. В многопоточном режиме процессы, как правило, запускаются с одним потоком. Этот поток может создавать новые потоки, вызывая библиотечную процедуру, например thread_create. Параметром обычно является имя процедуры, которую необходимо запустить для создания нового потока. Указание какой-либо информации, касающейся адресного пространства нового потока, не является необходимым (или даже возможным), поскольку новый поток создается в адресном пространстве существующего потока. Иногда возникает иерархия потоков с отношениями типа «родительский — дочерний поток», но чаще всего иерархия отсутствует и все потоки считаются равнозначными. Независимо от иерархических отношений, создающему потоку чаще всего возвращается идентификатор потока, который дает имя новому потоку.

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

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

Планирование и диспетчеризация

Планирование процессов включает в себя решение следующих задач:

· определение момента времени для смены выполняемого процесса;

· выбор процесса на выполнение из очереди готовых процессов.

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

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

Статический тип планирования используется в специализированных системах, где набор одновременно выполняемых задач определен заранее (например, в системах реального времени). Здесь решение о планировании принимается заранее (off-line).

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

· сохранение контекста текущего процесса;

· загрузка контекста нового процесса;

· запуск нового процесса.

В отличие от планирования, осуществляемого программными средствами ОС, диспетчеризация реализуется совместно с аппаратными средствами процессора.

Примечание. В различных ОС компоненты, занимающиеся планированием, могут называться по-разному: scheduler – распорядитель, или планировщик, – в Unix; dispatcher – в Windows.

5. Файловая система: Надежность и непротиворечивость, производительность.

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

1. Устройства должны позволять хранить очень большие объемы данных.

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

3. Несколько процессов должны иметь возможность получения одновременного доступа к информации.

Данные требования реализуются за счет хранения информации на дисках и других внешних хранителях в модулях, называемых файлами.

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

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

Часть операционной системы, работающая с файлами, называется файловой системой.


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



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