Мультипроцессорная обработка

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

 

2. Функции операционных систем по управлению основными ресурсами ПК

 

 

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

1. Процессорное время. Наиболее важным ресурсом в ЭВМ являются процессорное время, т.е. доступ к ЦП и, следовательно, время счета. Без использования этого ресурса не могут быть произведены никакие вычисления. Наипростейшая стратегия состоит в том, чтобы дать возможность одному пользователю иметь доступ к машине до тех пор, пока не выполнится его задача. Но большинство задач при их вычислении тратит половину времени на ожидание завершения операции ввода-вывода. Экономическая необходимость вынуждает разделять ресурсы ЦП между многими одновременно работающими пользователями. Т.О., для эффективного использования процессорного времени требуется более сложный механизм разделения времени – механизм, использующий параллелизм с устройствами ввода-вывода (УВВ). Для чего используется разделение процесса на thread (поток, нить).

Процессы и треды

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

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

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

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

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

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

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



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

Собственностью потоков являются программные счетчик, стек, рабочие регистры процессора, потоки-потомки, состояние.

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

2. Управление памятью. Следующим самым дефицитным ресурсом ПК является оперативная память. Обычно в базовой конфигурации ПК ОЗУ составляет 128 … 256 МВ. Планирование доступа к оперативной памяти неотъемлемо от планирования доступа к процессору. Т.к. программа может выполняться, только если имеется оперативная память, она должна оказываться в ОЗУ только тогда, когда она готова к использованию процессора. Т.к. память дефицитна система должна использовать ее с максимальной эффективностью. Основная стратегия разделения ресурсов ОЗУ между различными пользователями состоит в том, чтобы уменьшить пустые пространства памяти, возникающие из-за того, что программы пользователей имеют различные особенности и объемы.

3. Периферийные устройства. С большинством периферийных устройств в каждый данный момент времени может работать только один пользователь. Для некоторых устройств общего пользования (например, принтер) такая работа может привести к неэффективному их использованию, если время счета программы довольно велико. Устройства с быстрым произвольным доступом разделяются между многими пользователями с помощью системы управления файлами. Задержки, возникающие при работе с этими устройствами, вполне удовлетворительны ввиду скорости этих устройств и ввиду интервалов времени между программными запросами ввода-вывода. Однако этот режим не приемлем для устройств ориентированных на работу с записями, потому что перед каждым новым пользователем они требуют физической загрузки и разгрузки. Надлежащее распределение устройств сильно влияет на эффективность работы всей системы. Поэтому в обслуживающие работу с вводом-выводом программы ОС обычно включается механизм, который называется СПУЛИНГОМ. Стратегии распределения устройств должны обеспечивать минимальную подверженность возникновению ситуации взаимоблокировок.

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

Основные функции операционных систем:

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

загрузка в оперативную память подлежащих исполнению программ;

распределение памяти, а в большинстве современных систем и организация виртуальной памяти;

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

идентификация всех программ и данных;

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

обслуживание всех операций ввода-вывода;

обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения;

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

планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания;

организация механизмов обмена сообщениями и данными между выполняющимися программами;

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

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

аутентификация и авторизация пользователей (для большинства диалоговых операционных систем);

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

предоставление услуг на случай частичного сбоя системы.

 

<== предыдущая лекция | следующая лекция ==>
Каналы ввода-вывода | Понятие вычислительного процесса


Дата добавления: 2017-11-04; просмотров: 12; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ


Поиск по сайту:

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

Поделитесь с друзьями:

Если вам понравился данный ресурс вы можете рассказать о нем друзьям. Сделать это можно через соц. кнопки выше.
helpiks.org - Хелпикс.Орг - 2014-2017 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.