Мультипрограммирование в системах разделения времени
Мультипрограммирование
Мультипрограммирование — способ организации выполнения нескольких программ на одном компьютере.
Разделяют мультипрограммирование в пакетных системах, системах реального времени и мультипрограммирование в системах разделения времени.
Содержание
Пакетная обработка
Пакетная обработка используется для достижения максимальной эффективности использования ресурсов вычислительной машины при выполнении вычислительных задач путём сбалансированной загрузки её компонентов, как например, АЛУ и УВВ. Задачи, планируемые к выполнению, называются пакетом. Переключение между задачами в пакетном режиме инициируется выполняющейся в данный момент задачей, поэтому промежутки времени выполнения той или иной задачи неопределены.
Системы разделения времени
Системы разделения времени используются для «одновременного» выполнения нескольких программ в интерактивном режиме. В отличие от пакетного режима, все программы получают определённые временные промежутки времени для выполнения, затем система инициирует переключение. Выделяемые временные интервалы могут быть равными для всех задач, а могут определяться их приоритетами
См. также
Ссылки
- Современное программирование. Мультипрограммирование и разделение времени, Пашкеев С. Д.
- Основы мультипрограммирования для специализированных вычислительных систем, Поспелов Д. А.
- Введение в теорию вычислительных систем, Бертэн Ж., Риту М., Ружие Ж.
Wikimedia Foundation . 2010 .
Смотреть что такое «Мультипрограммирование» в других словарях:
мультипрограммирование — мультипрограммирование … Орфографический словарь-справочник
МУЛЬТИПРОГРАММИРОВАНИЕ — метод одновременного выполнения на одной ЭВМ нескольких программ, относящихся к различным задачам или различным ветвям одной и той же задачи. Работа отдельного устройства ЭВМ при этом координируется диспетчер программой … Большой Энциклопедический словарь
мультипрограммирование — сущ., кол во синонимов: 1 • программирование (9) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
Мультипрограммирование — многопрограммная работа, метод одновременного выполнения на ЦВМ нескольких программ (См. Программа), относящихся к различным задачам. Повышение быстродействия процессоров, увеличение объёмов памяти и состава разнообразных устройств ввода… … Большая советская энциклопедия
мультипрограммирование — метод одновременного выполнения на одной ЭВМ нескольких программ, относящихся к различным задачам или различным ветвям одной и той же задачи. Работа отдельного устройства ЭВМ при этом координируется диспетчер программой. * * *… … Энциклопедический словарь
Мультипрограммирование — 40. Мультипрограммирование Multiprogramming Режим обработки информации, при котором ресурсы вычислительной машины или системы обработки информации используются более чем одним процессом обработки информации Источник: ГОСТ 15971 90: Системы… … Словарь-справочник терминов нормативно-технической документации
МУЛЬТИПРОГРАММИРОВАНИЕ — способ орг ции выполнения на одной ЭВМ двух или более программ одновременно. Обеспечивается за счёт разделения времени работы процессора между выполняемыми программами; при этом либо остальные устройства ЭВМ закрепляются за отд. программами, либо … Большой энциклопедический политехнический словарь
МУЛЬТИПРОГРАММИРОВАНИЕ — метод одноврем. выполнения на одной ЭВМ неск. программ, относящихся к разл. задачам или разл. ветвям одной и той же задачи. Работа отд. устройства ЭВМ при этом координируется диспетчер программой … Естествознание. Энциклопедический словарь
мультипрограммирование — (см. мульти. ) способ организации работы электронных цифровых вычислительных машин, обеспечивающий одновременное выполнение нескольких программ. Новый словарь иностранных слов. by EdwART, , 2009 … Словарь иностранных слов русского языка
мультипрограммирование — мультипрограмм ирование, я … Русский орфографический словарь
История ОС. Отечественные ОС. Диалекты UNIX. Режимы пакетной обработки, мультипрограммирования, разделения времени
Презентацию к данной лекции Вы можете скачать здесь.
Введение
Операционные системы имеют долгую (более 50 лет) и весьма насыщенную историю. Не следует полагать, что в России и в СССР использовались и используются лишь зарубежные ОС. Известны также выдающиеся, оригинальные отечественные работы в данной области, их мы также рассмотрим. По мере эволюции ОС были реализованы все более гибкие и удобные режимы их использования.
История ОС
В ранних mainframe -компьютерах (1940-1950 гг.), первым из которых был компьютер ENIAC (1947 г., США), операционные системы отсутствовали. Обращение к памяти в этих компьютерах осуществлялось по реальным ( физическим) адресам , а обращение к внешним устройствам (например, к устройству ввода с перфокарт или накопителю на магнитной ленте) осуществлялось специальными командами, также по физическим адресам. Подобные компьютеры были весьма громоздкими, каждый из них занимал большой зал, в котором пользователи по очереди работали на компьютере, используя столь неудобный интерфейс , как инженерный пульт. Каждый пользователь перед уходом «с машины» (как тогда говорили) останавливал и «обнулял» ее нажатием кнопок на пульте и уступал место следующему пользователю, который вводил свою программу и данные с перфокарт или перфоленты, набирал ее начальный адрес тумблерами на пульте и запускал ее с помощью специальной кнопки. При любом сбое или ошибке в программе, в ситуации приходилось разбираться, изучая комбинации лампочек на пульте, воспроизводящие в двоичном виде содержимое регистров.
Разумеется, подобный способ взаимодействия с компьютером был очень неудобен. Требовалась хотя бы минимальная автоматизация . Для этого в 1950-х – 1960-х гг. – были созданы диспетчеры (dispatchers) — предшественники ОС, системные программы , управлявшие прохождением пакета задач, вводимых с перфокарт. Например, такой диспетчер (названный ДМ-222) использовался на ЭВМ М-222 в середине 1970-х гг., на котором студенты мат-меха, в том числе и автор курса, пропускали свои студенческие задания. Выглядело это следующим образом. Студент писал свою программу (или исправления к ней – так называемую «добивку») на специальных бланках и сдавал в перфорацию, затем получал перфокарты и отдавал колоду перфокарт с программой оператору машинного зала. Через несколько часов он мог рассчитывать получить результаты своей программы – колоду перфокарт обратно и распечатку результатов. В машинном зале оператор вводил очередное задание с перфокарт. Программа — диспетчер копировала образ введенной колоды перфокарт с заданием на ленту ввода, на которой хранились все образы заданий в хронологическом порядке их ввода, независимо от требуемых для них ресурсов – времени и объема памяти. Диспетчер осуществлял запуск заданий по очереди, по принципу FIFO (First-In-First-Out) – в порядке поступления. Выбирая из очереди некоторое задание, диспетчер размещал его в памяти и запускал. По окончании задания (или при его прерывании вследствие ошибки) на печатающее устройство выдавалась распечатка результатов. Затем управление передавалось следующему заданию. Такой режим доступа к компьютеру был, конечно, гораздо удобнее, чем работа с пульта. Недостатки его в том, что, во-первых, программы пропускались по очереди (отсутствовала одновременная обработка нескольких заданий), во-вторых, ресурсы, требуемые для выполнения задания, никак не учитывались, и программа , требующая для выполнения всего 1 мин., должна была ожидать завершения большой задачи, требовавшей для выполнения, например, пяти часов, — только потому, что последняя была раньше введена в систему.
В 1960-х – 1970-х гг. были разработаны классические операционные системы, которые все более и более усложнялись. Все более сложными становились их системы файлов и другие компоненты ОС. Наиболее известные из операционных систем этого периода: среди зарубежных — ATLAS , MULTICS , OS IBM /360, среди отечественных – ОС ДИСПАК для ЭВМ БЭСМ-6. Для классических операционных систем были характерны следующие основные возможности:
- мультипрограммирование (multi-programming) – одновременная обработка нескольких заданий;
- пакетная обработка ( batch mode ) – обработка пакета заданий , введенных с перфокарт или с терминалов, с учетом их приоритетов и требуемых ресурсов
- разделение времени ( time sharing ) – параллельная работа нескольких пользователей с терминалов (телетайпов или дисплеев), управлявших прохождением своих заданий, выполнявших их ввод в текстовых редакторах, компиляцию, выполнение и отладку;
- управление процессами – параллельное (или попеременное, если компьютер был однопроцессорным) выполнение пользовательских процессов ; возможность явного запуска параллельного процесса .
Разработка каждой операционной системы для каждой новой модели компьютера требовала многих лет напряженной высококвалифицированной работы. При этом каждая ОС первоначально разрабатывалась на низкоуровневом языке – языке ассемблера . Поэтому еще в 1960-х гг. возникла идея разработки мобильных (переносимых) ОС – операционных систем, которые могли бы использоваться на нескольких семействах компьютеров путем переноса их кода (возможно, с небольшими изменениями) с более старых моделей на более новые. Заметим, что термин мобильный используется здесь в ином понимании, отличном от того, к которому мы привыкли ныне ( мобильные телефоны и операционные системы для них).
Первая мобильная ОС была разработана в 1970 г. Брайаном Керниганом и Кеном Томпсоном в фирме AT & T и получила название UNIX . Даже в самом ее названии заложено своего рода противопоставление MULTICS (multi — много, uni – один) – последняя известна своей усложненностью. Этим названием авторы подчеркивали основную идею UNIX – унификацию и упрощение представления файлов и операций над ними (в UNIX файл – это последовательность байтов), пользовательских программ и процессов. Унифицированным, не зависимым от целевой аппаратной платформы, был также исходный код UNIX , который был полностью написан на специально разработанном новом языке Си (основными авторами Си , как и UNIX , являются Б. Керниган и Д. Ритчи). Использование языка высокого уровня для разработки UNIX было революционным шагом в истории ОС и позволило, во-первых, значительно ускорить и облегчить разработку, во-вторых – перенести UNIX на многие модели компьютеров (для которых при этом, разумеется, необходимо было разработать компилятор с языка Си ). Впервые система UNIX была использована в 1970 г. на миникомпьютере PDP -10. Компьютеры фирмы PDP образца начала 1970-х гг. принято относить к классу миникомпьютеров. Хотя данное название с современной точки зрения не вполне правомерно: такой компьютер занимал . два небольших шкафа, по сравнению с mainframe -компьютером образца 1960-х гг., занимавшим целый зал. Объем оперативной памяти миникомпьютеров составлял всего порядка 32 килобайт (!). Однако на них успешно работала ОС UNIX (были и другие ОС – например, RSX-11 ), был компилятор с языка Паскаль , была реализована удобная система файлов и программа для работы с ними, были доступны математические библиотеки программ.
В начале 1980-х годов появились персональные компьютеры. Операционные системы для них фактически повторили в своем развитии операционные системы для компьютеров общего назначения: в них были использованы аналогичные идеи и методы. Однако первые персональные компьютеры были менее мощными, чем mainframes , как по объему памяти, так и по быстродействию и разрядности микропроцессора. Первый распространенный микропроцессор фирмы Intel был 8-разрядным, и для него была разработана также 8-разрядная операционная система CP /M. В 1975 г. была создана фирма Microsoft, и одной из ее первых разработок была 16-разрядная операционная система MS DOS для персональных компьютеров с процессорами Intel 8086 (или, коротко, x86 ). В командном языке MS-DOS чувствуется явное влияние UNIX , однако MS-DOS предоставляет гораздо меньшие возможности командного языка.
В начале 1980-х гг. фирма Apple выпустила персональные компьютеры Lisa и Macintosh с операционной системой MacOS. Ее характерной чертой была реализация удобного графического пользовательского интерфейса (GUI) в виде окон, меню , «иконок» и многих других элементов GUI , к которым мы с Вами ныне так привыкли. MacOS стала первой ОС с развитой поддержкой GUI (для сравнения, MS-DOS предоставляла возможности работы непосредственно на командном языке ).
В конце 1980-х — начале 1990-х гг., под влиянием MacOS, Microsoft разработала графическую оболочку Windows над операционной системой MS-DOS . Первая версия Windows , таким образом,еще не была операционной системой; она запускалась командой win из командного языка MS-DOS . Однако многие современные черты GUI , характерного для Windows , ставшие «родными» для пользователей Windows , в ней уже присутствовали. Затем были выпущены Windows 3.x и Windows for Workgroups (уже операционные системы), в 1995 г. – Windows 95 (с развитыми мультимедийными возможностями, большим набором встроенных драйверов для различных устройств и поддержкой механизма Plug -and-Play подключения нового устройства без остановки компьютера) и Windows NT с развитыми сетевыми возможностями и повышенной надежностью. Именно Windows NT стала основой для последующего развития Windows . В настоящее время наиболее популярными моделями Windows являются Windows XP ( поддержка которой фирмой Microsoft уже завершается – система выпущена в 2001 г.), Windows 2003 Server , Windows Vista , Windows 2008 Server и Windows 7.
В начале 1990-х гг. появилась первая версия ОС Linux (ОС типа UNIX с открытыми исходными кодами ядра), которая постепенно приобрела значительную популярность, но, главным образом, используется на серверах. Большинство клиентов (пользователей) в мире предпочитают на своих компьютерах Windows или MacOS (заметим, что, например, в США и Канаде компьютеры Macintosh более популярны, чем Windows -машины с процессорами Intel или их аналогами).
Не будем также забывать, что в ответ на такой, на первый взгляд, простой вопрос: «Какая ОС самая популярная в мире?» даже сотрудники Microsoft не отвечают » Windows «. Дело в том, что наиболее популярными в мире компьютерными устройствами являются не настольные или портативные компьютеры, а более дешевые и компактные мобильные телефоны, для которых пока первенство удерживает специализированная ОС семейства Symbian, которая, в частности, используется в большинстве мобильных телефонов крупнейшей фирмы Nokia. Операционную систему Symbian активно догоняет на рынке ОС для мобильных устройств новая ОС Google Android . Так что, операционные системы семейства Windows по своей распространенности оказываются лишь на втором месте.
Диалекты UNIX
Одним из наиболее широко используемых семейств операционных систем с 1970-х гг. является UNIX . Существуют сотни диалектов UNIX . Все они имеют ряд общих возможностей, в том числе – мощные командные языки и развитые системные библиотеки. Однако все они несколько отличаются друг от друга. Фактически большинство крупных фирм в области ИТ разработали или разрабатывают собственные диалекты UNIX . Среди них наиболее известны следующие.
Мультипрограммирование
Следующий важный период развития операционных систем относится к 1965–75 годам. В это время в технической базе вычислительных машин произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что открыло путь к появлению следующего поколения компьютеров, представителем которого является, например, IBM/360.
В этот период были реализованы практически все основные механизмы, присущие современным ОС: мультипрограммирование, мультипроцессирование, поддержка многотерминального многопользовательского режима, виртуальная память, файловые системы, разграничение доступа и сетевая работа. Начинается расцвет системного программирования. Из направления прикладной математики, представляющего интерес для узкого круга специалистов, системное программирование превращается в отрасль индустрии, оказывающую влияние на практическую деятельность миллионов людей.
В условиях резко возросших возможностей компьютера, связанных с обработкой и хранением данных, выполнение только одной программы в каждый момент времени оказалось крайне неэффективным. Начались разработки в области мультипрограммирования.
Мультипрограммирование — это способ организации вычислительного процесса, при котором в памяти компьютера находится одновременно несколько программ, попеременно выполняющихся на одном процессоре. Мультипрограммирование было реализовано в двух вариантах: пакетная обработка и разделение времени.
Системы пакетной обработки предназначались для решения задач вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности таких систем является максимальная пропускная способность, т.е. решение максимального числа задач в единицу времени.
Для достижения этой цели в системах пакетной обработки используется следующая схема функционирования (рис.1.2): в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета формируется мультипрограммный набор, то есть множество одновременно выполняемых задач, предъявляющих к ресурсам различные требования, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины. Например, в мультипрограммном наборе желательно присутствие и вычислительных задач, и задач с интенсивным вводом-выводом. Следовательно, в вычислительных системах, работающих под управлением пакетных ОС, невозможно гарантировать выполнение того или иного задания в течение определенного периода времени.
Рис. 1.2 Централизованный характер вычислений в системах пакетной обработки
В системах пакетной обработки переключение процессора с одной задачи на другую происходит по инициативе самой активной задачи, например, когда она «отказывается» от процессора из-за необходимости выполнить операцию ввода-вывода. Поэтому существует высокая вероятность того, что одна задача может надолго занять процессор, а выполнение интерактивных задач станет невозможным. Взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что пользователь приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Такой порядок повышает эффективность функционирования аппаратуры, но снижает эффективность работы пользователя. К тому же в пакетных системах возможности диалога пользователя с приложением ограничены.
В системах разделения времени пользователям (или одному пользователю) предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно взаимодействовать с пользователем. ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они сами освободят процессор. Всем приложениям попеременно выделяется квант процессорного времени, поэтому пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки — изоляцию пользователя-программиста от процесса выполнения задач. Каждому пользователю в этом случае предоставляется терминал, с которого он может вести диалог со своей программой. Так как каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант небольшой, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них использует машину единолично.
Системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая «выгодна» системе. Кроме того, производительность системы снижается из-за дополнительного расходования вычислительной мощности на более частое переключение процессора с задачи на задачу. Поэтому критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя. Вместе с тем, мультипрограммное выполнение интерактивных приложений повышает и пропускную способность компьютера (пусть и не в такой степени, как пакетные системы). Аппаратура загружается лучше, поскольку пока одно приложение ждет сообщения пользователя, другие приложения могут обрабатываться процессором.
Дата добавления: 2016-01-03 ; просмотров: 735 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Мультипрограммирование. Режим разделения времени
В современных ОС для повышения производительности и скорости выполнения пользовательских задач применяют режимы мультипрограммирования и разделения времени.
Режим мультипрограммирования – способ организации вычислительного процесса, при котором в памяти компьютера находилось одновременно несколько программ, попеременно выполняющихся на одном процессоре. Можно так же определить мультипрограммирование как режим работы вычислительной системы, когда один процесс ожидает освобождения необходимого для него ресурса, а другой процесс в это же время занимает ресурсы процессора. Суть этого режима можно проиллюстрировать на следующем примере.
В системе работающей на последовательном процессоре имеются два процесса готовых к выполнению: процесс А и процесс В.
В тот момент, когда процессу А необходимо осуществить операцию ввода/вывода, процесс В занимает ресурс центрального процессора CPU.(см.рис3)
Рис.3 Диаграмма выполнения процессов А и В в многозадачном режиме работы операционной системы.
Режим разделения времени, как вариант многозадачного режима работы вычислительной системы сводится к следующему:
— каждый процесс имеется свое пространство ресурсов;
— CPU обменивается короткими командами с запущенными процессами;
— операционная система осуществляет передачу команд между CPU и процессами и управляет очередностью этого обмена.
Многопользовательский режим работы. Режимы реального времени.
Многопользовательский режим работы вычислительных систем характеризуется, так же как и мультипрограммный наличием своего пространства ресурсов у каждого процесса, наличием способов обмена сообщениями и управления таковым на уровне операционной системы. Дополнительные возможности предоставляются за счет распределения всех ресурсов вычислительной системы не только между процессами одного пользователя, но и между сеансами управления разных одновременно присутствующих в системе пользователей.
В современных операционных системах, для улучшения качества и скорости выполнения некоторых типов процессов управление производится в режиме реального времени. Сущность данного способа управления вычислительной системой в обеспечении обработки поступающих заданий в течение заданных интервалов времени, которые нельзя превышать.
Контрольные задания для СРС (тема 1) [(2;13-27,30-32),(1;21-33,60-63)(4;87-97,)]
1. Эволюция операционных систем
2. Виртуальная машина ее основные функции, и способы реализации
Рекомендуемая литература
1. Таненбаум Э, Вудхал А Операционные системы: разработка и реализация.
2. Олифер В.Г.,Олифер Н.А. Сетевые ОС
3. Гордеев А.В, Молчанов А.Ю. Системное программное обеспечение.
4. Столингс Операционные системы
м2-лекция
1. Тема лекции: Универсальные операционные системы и ОС специального назначения. Классификация операционных систем. Модульная структура построения ОС и их переносимость Управление процессором.
План лекции
1. Универсальные операционные системы и ОС специального назначения.
2. Классификация операционных систем.
3. Модульная структура построения ОС и их переносимость.
4. Управление процессором.
3. Цель лекции: Ознакомить студентов с ууниверсальными операционными системами и ОС специального назначения. Классификация операционных систем. Модульная структура построения ОС и их переносимость Управление процессором.
П.Н. Афонин. «Информационные таможенные технологии»
• пропускная способность;
• удобство работы пользователей;
• реактивность системы (заданные интервалы времени).
В зависимости от критерия различают:
• системы пакетной обработки;
• разделения времени;
• системы реального времени.
Мультипрограммирование в системах пакетной обработки. Главная цель мультипрограммирования такого вида — минимизация простоев всех устройств компьютера. Это, как правило, задачи вычислительного характера. Оператор формирует пакет заданий и вводит его тем или иным способом во внешнюю память. ОС выбирает из пакета мультипрограммную смесь из программ таким образом, чтобы максимально загрузить систему.
В этом режиме невозможно гарантировать выполнение задачи в течение определенного времени. Мультипрограммирование организовано за счет параллельной работы канала или контроллера и процессора.
Переключение процессора с одной задачи на другую — инициатива самой задачи. В подобных системах пользователь отстраняется от вычислительного процесса.
Мультипрограммирование в системах разделения времени. Основной критерий систем разделения времени — организация интерактивной работы пользователей с несколькими приложениями.
Мультипрограммирование организуется путем выделения каждой задаче некоторого, достаточно небольшого, отрезка времени — кванта. По завершении кванта задача принудительно приостанавливается и в соответствии с заложенным алгоритмом выбирается на выполнение новая задача.
Системы разделения времени имеют меньшую пропускную способность по сравнению с системами пакетной обработки при прочих равных условиях. Это обусловлено потерей времени на переключение процессора с задачи на задачу.
ОС MS Windows, Unix являются примерами систем разделения времени.
Мультипрограммирование в системах реального времени. ОС реального времени используются при управлении техническими объектами или технологическими процессами. Их особенностью является наличие предельного времени, в течение которого должна быть выполнена та или иная задача.
Мультипрограммная смесь (набор одновременно выполняемых задач) представляет собой фиксированный набор заранее разработанных программ, переключение которых осуществляется по прерываниям или по расписанию.
Для систем реального времени важна скорость обработки прерываний. Задача максимальной загрузки устройств — не актуальна.
Мультипрограммирование на основе прерываний. Прерывание — это способ переключения процессора на выполнение потока команд, отличного от того, который выполнялся, с последующим возвратом.
Различают внешние (аппаратные), внутренние и программные прерывания.
Внешние прерывания происходят асинхронно, т. е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств), внутренние — синхронно, т. е. возникают по конкретной причине и можно предугадать возникновение такого прерывания (например, при делении на ноль).
Программные прерывания не являются «истинными» прерываниями. Они возникают при выполнении определенной команды процессора и применяются в том случае, когда необходимо выполнить некоторые привилегированные действия (например, обратиться к порту компьютера). Прерываниям равного значения приписываются уровни приоритетов (уровни — IRQ). Каждое из прерываний обслуживается обработчиком прерываний (Interrupt Service Routine).
Внешние прерывания обрабатываются драйверами, внутренние — модулями ядра, а программные — процедурами из API.
1.3.4. Мультипроцессорная обработка
Мультипроцессорная обработка — это способ организации вычислительного процесса в системах с несколькими процессорами. В отличие от организации мультипрограммирования на одном процессоре мультипроцессорная обработка предполагает действительно одновременное выполнение нескольких процессов. Это приводит к усложнению всех алгоритмов ОС.
Симметричная архитектура предполагает однородность всех процессоров и единообразное их включение в общую схему. Традиционно все процессоры при этом разделяют одну память и как следствие находятся в одном корпусе.
При асимметричной архитектуре процессоры могут отличаться своими техническими характеристиками и функциональной ролью. Требование единого корпуса отсутствует. Система может состоять из нескольких корпусов (в каждом может быть один или несколько процессоров). Такие устройства называются кластерами.
Для симметричной архитектуры вычислительный процесс может строиться симметричным образом (все процессоры равноправны) или асимметричным (процессоры различаются функционально). Для асимметричной архитектуры возможен только асимметричный способ организации.
В мультипроцессорных компьютерах имеется несколько процессоров, каждый из которых может относительно независимо от остальных выполнять свою программу. В мультипроцессоре существует общая для всех процессоров операционная система, которая оперативно распределяет вычислительную нагрузку между процессорами. Взаимодействие между отдельными процессорами организуется наиболее простым способом — через общую оперативную память.
Основное достоинство мультипроцессора — высокая производительность, которая достигается за счет параллельной или конвейерной работы нескольких процессоров. Так как при наличии общей памяти взаимодействие процессоров происходит очень быстро, мультипроцессоры могут эффективно выполнять даже приложения с высокой степенью связи по данным.
Еще одним важным свойством мультипроцессорных систем является отказоустойчивость, т. е. способность к продолжению работы при отказах некоторых элементов, например процессоров или блоков памяти. При этом производительность, естественно, снижается, но не до нуля, как в обычных системах, в которых отсутствует избыточность.
Параллельная обработка. Необходимость параллельной обработки может возникнуть, когда требуется уменьшить время решения данной задачи, увеличить пропускную способность, улучшить использование системы.
Для распараллеливания необходимо соответствующим образом организовать вычисления. Сюда входит следующее:
• составление параллельных программ, т. е. отображение в явной форме параллельной обработки с помощью надлежащих конструкций языка, ориентированного на параллельные вычисления;
• автоматическое обнаружение параллелизма. Последовательная программа автоматически анализируется, и в результате может быть выявлена явная или скрытая параллельная обработка. Последняя должна быть преобразована в явную.
Рассмотрим граф, описывающий последовательность процессов большой программы, представленный на рис. 3. Видно, что выполнение процесса P5 не может начаться до завершения процессов P2 и Р3 и, в свою очередь, выполнение процессов P2 и P3 не может начаться до завершения процесса P1. В данном случае для выполнения программы достаточно трех процессоров.
Ускорение обработки на мультипроцессоре определяется отношением времени однопроцессорной обработки к времени многопроцессорной обработки:
Конвейерная обработка улучшает использование аппаратных ресурсов для заданного набора процессов, каждый из которых применяет эти ресурсы заранее предусмотренным способом. Хорошим примером конвейерной организации является сборочный транспортер на производстве, на котором изделие последовательно проходит все стадии вплоть до готового продукта. Преимущество этого способа состоит в том, что каждое изделие вдоль своего пути использует одни и те же ресурсы, и как только некоторый ресурс освобождается данным изделием, он сразу же может быть использован следующим изделием, не ожидая, пока предыдущее изделие достигнет конца сборочной линии. Если транспортер несет аналогичные, но не тождественные изделия, то это последовательный конвейер; если же все изделия одинаковы, это векторный конвейер.
Рис. 3. Граф выполнения большой программы
Последовательные конвейеры. На рис. 4, а показано устройство обработки команд, в котором имеется четыре ступени: выборка команды из памяти, декодирование, определение адреса и выборка операнда, исполнение.
Ускорение обработки в данном устройстве измеряется отношением времени Ts, необходимого для последовательного выполнения L заданий (т. е. выполнения L циклов на одной обрабатывающей ступени), ко времени Tp выполнения той же обработки на конвейере. Обозначим через ti время обработки на 1-й ступени, а через ti — соответствующее время для самой медленной ступени (рис. 4, б). Тогда если L заданий (команд) проходят через конвейер с n ступенями, то эффективность конвейера определяется следующим выражением:
Рис. 4. Четырехступенное устройство обработки команд: а — ступени конвейера; б — временная диаграмма работы
Классификация архитектур многопроцессорных систем. Мультипроцессоры, ориентированные на достижение сверхбольших скоростей работы, могут содержать по нескольку сравнительно простых процессоров с упрощенными блоками управления. Удачной для различных мультипроцессоров является классификация Флина, которая строится по признаку одинарности или множественности потоков команд и данных.