WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     || 2 | 3 | 4 | 5 |   ...   | 8 |

«А. В.Гордеев ОПЕРАЦИОННЫЕ СИСТЕМЫ 2-е издание Допущено Министерством образования Российской Федерации в качестве учебника для студентов высших учебных заведений, обучающихся по направлению подготовки бакалавров и ...»

-- [ Страница 1 ] --

А. В. Гордеев

ОПЕРАЦИОННЫЕ

СИСТЕМЫ

2-е издание

УЧЕБНИК

А. В.Гордеев

ОПЕРАЦИОННЫЕ

СИСТЕМЫ

2-е издание

Допущено Министерством образования Российской Федерации

в качестве учебника для студентов высших учебных заведений, обучающихся

по направлению подготовки бакалавров и магистров «Информатика и вычислительная техника» и направлению подготовки дипломированных специалистов «Информатика и вычислительная техника»

300.piter.com Издательская п р о г р а м м а 300 лучших учебников для высшей школы в честь 300-летия Санкт-Петербурга, Г осуществляется при # Щ И в Д д а ^ ф!нанс1в, жформац!йних систем, менеджменту i б)знесу Москва • Санкт-Петербург • Нижний Новгород • Воронеж Ростов-на-Дону • Екатеринбург • Самара • Новосибирск Киев • Харьков • Минск Краткое содержание Введение Глава 1. Основные понятия Глава 2. Управление задачами Глава 3. Управление памятью в операционных системах.... Глава 4. Особенности архитектуры микропроцессоров i80x86 для организации мультипрограммных операционных систем Глава 5. Управление вводом-выводом в операционных системах Глава 6. Файловые системы Глава 7. Организация параллельных взаимодействующих вычислений Глава 8. Проблема тупиков и методы борьбы с ними Глава 9. Архитектура операционных систем Глава 10. Краткий обзор современных операционных систем Глава 1 1. Операционные системы Windows Список терминов Список литературы Алфавитный указатель Содержание _^_ ^ Сегментная, страничная и сегментно-страничная организация памяти Сегментный способ организации виртуальной памяти Страничный способ организации виртуальной памяти Сегментно-страничный способ организации виртуальной памяти Контрольные вопросы и задачи Глава 4. Особенности архитектуры микропроцессоров i80x86 для организации мультипрограммных операционных систем реальный и защищенный режимы работы процессора Новые системные регистры микропроцессоров i80x86 Адресация в 32-разрядных микропроцессорах i80x86 при работе в защищенном режиме Поддержка сегментного способа организации виртуальной памяти Поддержка страничного способа организации виртуальной памяти Режим виртуальных машин для исполнения приложений реального режима Защита адресного пространства задач Уровни привилегий для защиты адресного пространства задач Механизм шлюзов для передачи управления на сегменты кода с другими уровнями привилегий Система прерываний 32-разрядных микропроцессоров i80x86 Работа системы прерываний в реальном режиме Работа системы прерываний в защищенном режиме Контрольные вопросы и задачи Глава 5. Управление вводом-выводом в операционных системах Основные концепции организации ввода-вывода в операционных системах Режимы управления вводом-выводом Закрепление устройств, общие устройства ввода-вывода Основные системные таблицы ввода-вывода Синхронный и асинхронный ввод-вывод Организация внешней памяти на магнитных дисках Основные понятия Логическая структура магнитного диска Системный загрузчик Windows NT/2000/XP Кэширование операций ввода-вывода при работе с накопителями '.

на магнитных дисках Контрольные вопросы и задачи Содержание Мультипрограммирование, многопользовательский режим работы Реализация понятия последовательного процесса в операционных системах Планирование вычислительных процессов и стратегии планирования Диспетчеризация задач с использованием динамических приоритетов Глава 3. Управление памятью в операционных Простое непрерывное распределение и распределение с перекрытием Общие принципы управления памятью в однопрограммных операционных системах Распределение памяти статическими и динамическими разделами Глава 7. Организация параллельных Средства синхронизации и связи взаимодействующих вычислительных процессов Использование блокировки памяти при синхронизации параллельных процессов.... Использование семафоров при проектировании взаимодействующих Глава 8. Проблема тупиков и методы борьбы с ними.. Понятие тупиковой ситуации при выполнении параллельных Реализация функций API на уровне модулей операционной системы Реализация функций API на уровне системы программирования Реализация функций API с помощью внешних библиотек Примеры программирования для разных интерфейсов API Глава 10. Краткий обзор современных Сетевая операционная система реального времени QNX Основные механизмы организации распределенных вычислений Семейство операционных систем OS/2 Warp компании IBM Введение ствий, предлагаемых системой, взаимодействуют с компьютером и своими про­ граммами. Такое взаимодействие осуществляется исключительно через операци­ онную систему. Помимо выполнения этой важнейшей функции операционные системы отвечают за эффективное распределение вычислительных ресурсов и орга­ низацию надежных вычислений.

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

';

Дисциплина «Операционные системы» является одной из важнейших. Она вклю­ чена в Государственный образовательный стандарт по направлению 654600 — «Информатика и вычислительная техника» и отнесена к блоку общепрофессио­ нальных дисциплин. В рамках этого направления имеется несколько специально­ стей, в том числе 220100 — «Вычислительные машины, комплексы, системы и сети», 220200 — «Автоматизированные системы обработки информации и управления», 220300 — «Системы автоматизированного проектирования», 220400 — «Программ­ ное обеспечение вычислительной техники и автоматизированных систем». Имен­ но для студентов вузов, обучающихся по этим специальностям, и предназначается настоящая книга. Однако она может быть востребована и студентами других спе­ циальностей, изучающих информатику и вычислительную технику, а также обыч­ ными подготовленными пользователями, желающими углубить свои познания в области операционных систем, ибо сегодня уже мало просто уметь работать на компьютере, а желательно понимать, как он работает, как организуются в нем вы­ числения. Знания основных принципов организации вычислительных процессов, понимание проблем, которые при этом возникают, и методов их решения позволя­ ют обдуманно подходить к использованию компьютера, предусмотреть и предотв­ ратить нежелательные явления. Помимо общетеоретических в книге рассмотрены и отдельные практические вопросы, описаны конкретные реализации отдельных модулей и подсистем.

Учебный материал, ставший основой для настоящей книги, уже в течение несколь­ ких лет читается студентам специальности 220100 в Санкт-Петербургском госу­ дарственном университете аэрокосмического приборостроения. Материал пост­ роен с учетом упомянутого Государственного образовательного стандарта по направлению «Информатика и вычислительная техника», регламентирующего содержание дисциплины «Операционные системы». В основу издания легла пере­ работанная первая часть учебника «Системное программное обеспечение», вышед­ шего в издательстве «Питер» в 2001 году и используемого в учебном процессе во Введение Как известно, процесс проникновения информационных технологий практически во все сферы человеческой деятельности продолжает развиваться и углубляться.

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

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

Напоследок хочется высказать самые теплые слова благодарности всем тем, кто принял участие в подготовке этой книги к изданию. Это и Андрей Васильев, кото­ рого, к сожалению, уже больше нет среди нас, и его замечательные коллеги — со­ трудники издательства «Питер». Своим кропотливым трудом, вниманием и доб­ рожелательным отношением они помогли преодолеть возникшие трудности. Работа над книгой — длительный процесс: хочется улучшить то одно, то другое, перепи­ сать или добавить, а времени свободного, да еще в достаточном количестве, как всегда, нет. В связи с этим хочется также поблагодарить своих родных и близких за долготерпение, доброжелательность и сердечную заботу в течение всего вре­ мени работы над рукописью. Без их поддержки эта книга, скорее всего, не состоя­ лась бы.

От издательства Ваши замечания, предложения, вопросы отправляйте по адресу электронной по­ чты [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

Подробную информацию о наших книгах вы найдете на web-сайте издательства http://www. piter.com.

лава 1. Основные понятия Эта глава является вводной и, пожалуй, самой главной. Любой предмет имеет свои основные понятия и положения. Не является исключением и дисциплина «Опе­ рационные системы». К основным понятиям, без которых практически невозмож­ но по-настоящему изучить эту дисциплину, понять основные принципы организа­ ции вычислений, взаимодействия прикладных программ с операционной системой и пользователей с компьютерами, следует, прежде всего, отнести понятия вычис­ лительных процессов и ресурсов, системной программы, супервизора, операцион­ ной среды, прерываний. Мы также рассмотрим относительно новые понятия, к которым относятся поток выполнения и задача; они дополняют понятие вычисли­ тельного процесса и позволяют более эффективно организовать работу компьюте­ ра. Поскольку абсолютное большинство операционных систем обеспечивают воз­ можность параллельного выполнения нескольких программ, мы познакомимся с понятием мультипрограммирования. Завершается глава обзором основных обще­ принятых классификаций.

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

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

Действительно, если мы не будем иметь возможности изменять исходные данные и получать результаты вычислений, то зачем вообще эти вычисления? Очевидно, что исходные данные могут вводиться различными способами. На практике ис­ пользуются самые разнообразные устройства и методы. Например, мы можем ввоГлава 1. Основные понятия дить исходные значения с клавиатуры, задавать нужные действия или функции с помощью указателя мыши» считывать записи из файла, снимать оцифрованные значения с датчиков и т. д. Часть исходных данных может быть передана в про­ грамму через область памяти, в которую предварительно другая программа занес­ ла свои результаты вычислений. Способов много. Главное — выполнить в програм­ ме некоторые действия, связанные с получением исходных данных.

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

Программирование операций ввода-вывода относится к одной из самых трудоем­ ких областей создания программного обеспечения. Здесь речь идет не об исполь­ зовании операторов типа READ или WRITE в языках высокого уровня. Речь идет о необходимости создать подпрограмму в машинном виде, уже готовую к выполне­ нию на компьютере, а не написанную с помощью некоторой системы программи­ рования (систем программирования тогда еще не было), подпрограмму, вместо обычных вычислений управляющую тем устройством, которое должно участво­ вать в операциях ввода исходных данных или вывода результатов. При наличии такой подпрограммы программист может обращаться к ней столько раз, сколько операций ввода-вывода с этим устройством ему требуется. Для выполнения этой работы программисту недостаточно хорошо знать архитектуру вычислительного комплекса и уметь создавать программы на языке ассемблера. Он должен отлично знать и интерфейс, с помощью которого устройство подключено к центральной части компьютера, и алгоритм функционирования устройства управления устрой­ ства ввода-вывода.

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

В 50-е годы взаимодействие пользователей с вычислительным комплексом было совершенно иным, чем нынче, Программист-кодер (от англ. coder — кодировщик) — специально подготовленный специалист, знающий архитектуру компьютера и язык(и) программирования, — по заказу составлял текст программы, часто по уже готово­ му алгоритму, разработанному программистом-алгоритмистом. Текст этой програм­ мы затем отдавался оператору, который набирал его на специальных устройствах и переносил на соответствующие носители. Чаще всего в качестве носителей ис­ пользовались перфокарты или перфолента. Далее колода с перфокартами (перфо­ лента) передавалась в вычислительный зал, где для вычислений по этой програм­ ме требовалось выполнить следующие действия.

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

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

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

В случае обнаружения ошибок на одном из этих этапов или после анализа полу­ ченных результатов весь цикл необходимо было повторить.

Для автоматизации труда программиста (кодера) стали разрабатывать специаль­ ные алгоритмические языки высокого уровня, а для автоматизации труда опера­ тора вычислительного комплекса была разработана специальная управляющая программа, загрузив которую в память один раз оператор мог ее далее использо­ вать неоднократно и более не обращаться к процедуре программирования ЭВМ через пульт оператора. Именно эту управляющую программу и стали называть операционной системой. Со временем на нее стали возлагать все больше и больше задач, она стала расти в объеме. Прежде всего разработчики стремились к тому, чтобы операционная система как можно более эффективно распределяла вычис­ лительные ресурсы компьютера, ведь в 60-е годы операционные системы уже по­ зволяли организовать параллельное выполнение нескольких программ. Помимо задач распределения ресурсов появились задачи обеспечения надежности вычис­ лений. К началу 70-х годов диалоговый режим работы с компьютером стал преоб­ ладающим, и у операционных систем стремительно начали развиваться интерфейс­ ные возможности. Напомним, что термином интерфейс (interface) обозначают целый комплекс спецификаций, определяющих конкретный способ взаимодей­ ствия пользователя с компьютером.

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

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

Можно попробовать перечислить основные функции операционных систем.

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

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

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

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

Q Запуск программы (передача ей управления, в результате чего процессор ис­ полняет программу).

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

Q Прием и исполнение различных запросов от выполняющихся приложений.

Операционная система умеет выполнять очень большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся про­ граммы. Обращение к этим сервисам осуществляется по соответствующим пра­ вилам, которые и определяют интерфейс прикладного программирования (Ap­ plication Program Interface, API) этой операционной системы.

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

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

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

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

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

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

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

Q Аутентификация и авторизация пользователей (для большинства диалоговых операционных систем). Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хра­ нятся в его учетной записи 1. Очевидно, что если входное имя (login 2 ) пользовате­ ля и его пароль совпадают, то, скорее всего, это и будет тот самый пользователь.

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

О Удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для операционных систем реального времени).

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

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

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

Рис. 1.1. Взаимодействие пользователя и его программ с компьютером Если операционная система не поддерживает механизм учетных записей, как это имеет место, на­ пример, в семействе операционных систем Windows 9x компании Microsoft, то пароль сверяется по специальному файлу, где он хранится в зашифрованном виде.

В 70-е годы пользователи за терминалом писали tog in, и это означало процедуру регистрации. Были системы, в которых требовалось набрать команду log on, что означало то же самое.

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

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

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

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

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

Если такая программа все функции, связанные с операциями ввода-вывода и с за­ просами памяти, выполняет не сама, а за счет обращения к системным функциям DOS, то она будет (в абсолютном большинстве случаев) успешно выполняться и в MS DOS, и в PC DOS, и в Windows 9x, и в Windows 2000, и в OS/2, и даже в Linux.

Итак, параллельное существование терминов «операционная система» и «опера­ ционная среда» вызвано тем, что операционная система (в общем случае) может поддерживать несколько операционных сред. Почти все современные 32-разряд­ ные операционные системы, созданные для персональных компьютеров, поддер­ живают по нескольку операционных сред. Так, операционная система OS/2 Warp, которая в свое время была одной из лучших в этом отношении, может выполнять Цл следующие программы:

основные программы, созданные с учетом соответствующего «родного» 32-разct Q ^ ряднго программного интерфейса этой операционной системы;

Q 16-разрядные программы, созданные для систем OS/2 первого поколения;

Q 16-разрядные приложения, разработанные для выполнения в операционной Q 16-разрядные приложения, созданные для операционной среды Windows 3.x;

Q саму операционную оболочку Windows 3.x и уже в ней — созданные для нее А операционная система Windows XP позволяет выполнять помимо основных приложений, созданных с использованием Win32API, 16-разрядные приложения для Windows 3.x, 16-разрядные DOS-приложения, 16-разрядные приложения для первой версии OS/2.

Операционная среда может включать несколько интерфейсов: пользовательские и программные. Если говорить о пользовательских, то, например, система Linux имеет для пользователя как интерфейсы командной строки (можно использовать различные «оболочки» — shell), наподобие Norton Commander, например Midnight Commander, так и графические интерфейсы, например X-Window с различными менеджерами окон — KDE, Gnome и др. Если же говорить о программных интер­ фейсах, то в тех же операционных системах с общим названием Linux программы могут обращаться как к операционной системе за соответствующими сервисами и функциями, так и к графической подсистеме (если она используется). С точки зре­ ния архитектуры процессора (и персонального компьютера в целом) двоичная программа, созданная для работы в среде Linux, использует те же команды и фор­ маты данных, что и программа, созданная для работы в среде Windows NT. Однако в первом случае мы имеем обращение к одной операционной среде, а во втором — к другой. И программа, созданная непосредственно для Windows, не будет выпол­ няться в Linux; однако если в операционной системе Linux организовать полно­ ценную операционную среду Windows, то наша Windows-программа может быть выполнена. Завершая этот раздел, можно еще раз сказать, что операционная сре­ да — это то системное программное окружение, в котором могут выполняться про­ граммы, созданные по правилам работы 1 о Прерывания Прерывания представляют собой механизм, позволяющий координировать парал­ лельное функционирование отдельных устройств вычислительной системы и реа­ гировать на особые состояния, возникающие при работе процессора, то есть пре­ рывание — это принудительная передача управления от выполняемой программы к системе (а через нее — к соответствующей программе обработки прерывания), происходящая при возникновении определенного события.

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

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

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

1. Установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания (в операционных системах идентификация пре­ рывания иногда осуществляется повторно, на шаге 4).

2. Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется, прежде всего, значением счетчика ко­ манд (адресом следующей команды, который, например, в i80x86 определяется регистрами CS и IP — указателем команды [1,8, 48]), содержимым регистров процессора, и может включать также спецификацию режима (например, режим пользовательский или привилегированный) и другую информацию.

3. Управление аппаратно передается на подпрограмму обработки прерывания.

В простейшем случае в счетчик команд заносится начальный адрес подпро­ граммы обработки прерываний, а в соответствующие регистры — информация из слова состояния. В более развитых процессорах, например в 32-разрядных микропроцессорах фирмы Intel (начиная с i80386 и включая последние про­ цессоры Pentium IV) и им подобных, осуществляются достаточно сложная про­ цедура определения начального адреса соответствующей подпрограммы обра­ ботки прерывания и не менее сложная процедура инициализации рабочих регистров процессора (подробно эти вопросы рассматриваются в разделе «Си­ стема прерываний 32-разрядных микропроцессоров i80x86» главы 4).

4. Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривает­ ся запоминание довольно большого объема информации о состоянии прерван­ ных вычислений.

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

6. Восстановление информации, относящейся к прерванному процессу (этап, об­ ратный шагу 4).

7. Возврат на прерванную программу.

Шаги 1-3 реализуются аппаратно, шаги 4-7 — программно.

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

Итак, главные функции механизма прерываний — это:

Q распознавание или классификация прерываний;

Q передача управления соответствующему обработчику прерываний;

Q корректное возвращение к прерванной программе.

Переход от прерываемой программы к обработчику и обратно должен выполнять­ ся как можно быстрей. Одним из самых простых и быстрых методов является ис­ пользование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответствующих обработчиков. Для корректного возвраще­ ния к прерванной программе перед передачей управления обработчику прерыва­ ний содержимое регистров процессора запоминается либо в памяти с прямым до­ ступом, либо в системном стеке (system stack).

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

Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например:

• прерывания от таймера;

• прерывания от внешних устройств (прерывания по вводу-выводу);

• прерывания по нарушению питания;

• прерывания с пульта оператора вычислительной системы;

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

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

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

• при наличии в поле кода операции незадействованной двоичной комбинации;

• при делении на ноль;

Q вследствие переполнения или исчезновения порядка;

Q от средств контроля (например, вследствие обнаружения ошибки четности, ошибок в работе различных устройств).

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

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

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

Внешние устройства < Сетевое оборудование Рис. 1.3. Распределение прерываний по уровням приоритета Наличие сигнала прерывания не обязательно должно вызывать прерывание ис­ полняющейся программы. Процессор может обладать средствами защиты от пре­ рываний: отключение системы прерываний, маскирование (запрет) отдельных сигГлава 1. Основные понятия налов прерывания. Программное управление этими средствами (существуют спе­ циальные команды для управления работой системы прерываний) позволяет опе­ рационной системе регулировать обработку сигналов прерывания, заставляя про­ цессор обрабатывать их сразу по приходу; откладывать обработку на некоторое время; полностью игнорировать прерывания. Обычно операция прерывания вы­ полняется только после завершения выполнения текущей команды. Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно. Чтобы обработать сигналы прерывания в разумном порядке, им (как уже отмечалось) присваиваются приоритеты. Сигнал с более высоким приоритетом обрабатывается в первую очередь, обработка осталь­ ных сигналов прерывания откладывается.

Программное управление специальными регистрами маски (маскирование сигна­ лов прерывания) позволяет реализовать различные дисциплины обслуживания.

• С относительными приоритетами, то есть обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. После окончания об­ служивания данного запроса обслуживается запрос с наивысшим приоритетом.

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

О С абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приорите­ том. При этом возможно многоуровневое прерывание, то есть прерывание про­ грамм обработки прерываний. Число уровней прерывания в этом режиме изме­ няется И зависит от приоритета запроса.

• По принципу стека, или, как иногда говорят, по дисциплине LCFS (Last Come First Served — последним пришел, первым обслужен), то есть запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Дли этого необходимо не накладывать маску ни на один из сиг­ налов прерывания и не выключать систему прерываний.

Следует особо отметить, что для правильной реализации последних двух дисцип­ лин нужно обеспечить полное маскирование системы прерываний при выполне­ нии шагов 1-4 и 6-7. Это необходимо для того, чтобы не потерять запрос и пра­ вильно его обслужить. Многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса вы­ числений на другой.

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

Как мы уже знаем, при появлении запроса на прерывание система прерываний идентифицирует сигнал и, если прерывания разрешены, то управление передает­ ся на соответствующую подпрограмму обработки. Из рис. 1.2 видно, что в под­ программе обработки прерывания имеется две служебные секции. Это — первая секция, в которой осуществляется сохранение контекста прерываемых вычисле­ ний, который не смог быть сохранен на шаге 2, и последняя, заключительная сек­ ция, в которой, наоборот, осуществляется восстановление контекста. Для того что­ бы система прерываний не среагировала повторно на сигнал запроса на прерывание, она обычно автоматически «закрывает» (отключает) прерывания, поэтому необ­ ходимо потом в подпрограмме обработки прерываний вновь включать систему пре­ рываний. В соответствии с рассмотренными режимами обработки прерываний (с относительными и абсолютными приоритетами и по правилу LCFS) установка этих режимов осуществляется в конце первой секции подпрограммы обработки.

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

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

После выполнения подпрограммы обработки прерывания управление вновь пере­ дается ядру операционной системы. На этот раз уже на тот модуль, который зани­ мается диспетчеризацией задач (см. раздел «Планирование и диспетчеризация процессов и задач» в главе 2). И уже диспетчер задач, в свою очередь, в соответ­ ствии с принятой дисциплиной распределения процессорного времени (между выполняющимися вычислительными процессами) восстановит контекст той за­ дачи, которой будет решено выделить процессор. Рассмотренную нами схему ил­ люстрирует рис. 1.4.

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

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

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

Этот вопрос более подробно рассмотрен в главе 4, посвященной архитектуре мик­ ропроцессоров i80x86.

Понятия вычислительного процесса и ресурса Понятие последовательного1 вычислительного процесса, или просто процесса, является одним из основных при рассмотрении операционных систем. Как поня­ тие процесс является определенным видом абстракции, и мы будем придерживаться следующего неформального определения, приведенного в [47]. Последовательный процесс, иногда называемый задачей2 (task), — это отдельная программа с ее дан­ ными, выполняющаяся на последовательном процессоре. Напомним, что под последовательным мы понимаем такой процессор, в котором текущая команда выполняется после завершения предыдущей. В современных процессорах мы стал­ киваемся с ситуациями, когда возможно параллельное выполнение нескольких команд. Это делается для повышения скорости вычислений. В этих процессорах параллелизм достигается двумя основными способами — организацией конвейер­ ного механизма выполнения команды и созданием нескольких конвейеров. Одна­ ко в подобных процессорах аппаратными решениями обязательно достигается ло­ гическая последовательность в выполнении команд, предусмотренная программой.

Необходимость этого объясняется в главе 7, посвященной организации параллель­ ных вычислительных процессов.

Концепция процесса предполагает два аспекта: во-первых, он является носителем данных и, во-вторых, он собственно и выполняет операции, связанные с обработ­ кой этих данных.

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

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

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

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

Ресурсы могут быть разделяемыми, когда несколько процессов используют их одно­ временно (в один и тот же момент времени) или параллельно (попеременно в тече­ ние некоторого интервала времени), а могут быть и неделимыми (рис. 1.5).

При разработке первых систем ресурсами считались процессорное время, память, каналы ввода-вывода и периферийные устройства [22, 53]. Однако очень скоро понятие ресурса стало гораздо более универсальным и общим. Различного рода программные и информационные ресурсы также могут быть определены для сис­ темы как объекты, которые могут разделяться и распределяться и доступ к кото­ рым необходимо соответствующим образом контролировать. В настоящее время понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и ее физическое представле­ ние в системе. Более того, помимо системных ресурсов, о которых мы сейчас гово­ рили, ресурсами стали называть и такие объекты, как сообщения и синхросигна­ лы, которыми обмениваются задачи.

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

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

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

Рис. 1.6. Пример выполнения двух программ в мультипрограммном режиме На рисунке в качестве примера изображена такая гипотетическая ситуация, при которой благодаря совмещению во времени двух вычислительных процессов обГлава 1. Основные понятия щее время их выполнения получается меньше, чем если бы их выполняли по оче­ реди (запуск одного начинался бы только после полного завершения другого). Из этого же рисунка видно, что время выполнения каждого процесса в общем случае больше, чем если бы мы выполняли каждый из них как единственный.

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

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

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

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

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

Очевидно, что диалоговый режим работы может быть реализован и без мульти­ программирования. Наглядное тому доказательство — многочисленные дисковые операционные системы, начиная от СР-М и кончая PC-DOS 7.0, которые долгие годы устанавливались на персональные компьютеры и обеспечивали только однопрограммный режим. Однако эти однопрограммные диалоговые системы появиПонятия вычислительного процесса и ресурса лись гораздо позже мультипрограммных. Как это ни кажется странным, им пред­ шествовали многочисленные и разнообразные операционные системы, позволяю­ щие одновременно работать с компьютером большому количеству пользователей и параллельно решать множество задач. Основная причина тому — стоимость ком­ пьютера. Только с удешевлением компьютеров появилась возможность иметь свой персональный компьютер, и первое время считалось, что однопрограммного ре­ жима работы вполне достаточно. Главным для персональных компьютеров до сих пор считается удобство работы, причем именно в диалоговом режиме, простота интерфейса и его интуитивная понятность.

Совмещение диалогового режима работы с компьютером и режима мультипрог­ раммирования привело к появлению мулътитерминалъных, или многопользова­ тельских, систем. Организовать параллельное выполнение нескольких задач можно разными способами (более подробно об этом см. в главе 2). Если это осуществля­ ется таким образом, что на каждую задачу поочередно выделяется некий квант времени, после чего процессор передается другой задаче, готовой к продолжению вычислений, то такой режим принято называть режимом разделения времени (time sharing). Системы разделения времени активно развивались в 60-70 годы, и сам термин означал именно мультитерминальную и мультипрограммную систему.

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

Общая схема выделения ресурсов такова. При необходимости использовать ка­ кой-либо ресурс (оперативную память, устройство ввода-вывода, массив данных и т. п.) вычислительный процесс (задача) путем обращения к супервизору1 (su­ pervisor) операционной системы посредством специальных вызовов (команд, ди­ ректив) сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем. Например, при запросе оперативной памяти указывается количе­ ство адресуемых ячеек, необходимое для дальнейшей работы.

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

Супервизор — центральный (главный) управляющий модуль операционной системы. Может состо­ ять из нескольких модулей, например супервизора ввода-вывода, супервизора прерываний, супер­ визора программ, диспетчера задач и т. д. В последние годы термин «супервизор» применяется все реже и реже.

Ресурс может быть выделен вычислительному процессу (задаче), обратившемуся к операционной системе с соответствующим запросом, если:

Q ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;

Q текущий запрос и ранее выданные запросы допускают совместное использова­ ние ресурсов;

Q ресурс используется задачей низшего приоритета и может быть временно ото­ бран (разделяемый ресурс).

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

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

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

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

При организации управления ресурсами всегда требуется принять решение о том, что в данной ситуации выгоднее: быстро обслуживать отдельные наиболее важные запро­ сы, предоставлять всем процессам равные возможности или обслуживать максималь­ но возможное количество процессов и наиболее полно использовать ресурсы [46].

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

Понятия вычислительного процесса и ресурса лением и управлением ресурсов, от всех других процессов: задач пользователей и системных обрабатывающих процессов. Последние, хоть и относятся к операци­ онной системе, но не входят в ядро операционной системы и требуют общих ре­ сурсов для своей работы, которые получают от супервизора. Для системных управ­ ляющих процессов, в отличие от обрабатывающих, в большинстве операционных систем ресурсы распределяются изначально и однозначно. Эти вычислительные процессы сами управляют ресурсами системы, в борьбе за которые конкурируют все остальные процессы. Поэтому исполнение системных управляющих программ не принято называть процессами, и термин «задача» следует употреблять только по отношению к процессам пользователей и к системным обрабатывающим про­ цессам. Однако это справедливо не для всех операционных систем. Например, в так называемых «микроядерных» операционных системах (см. главу 9) большинство управляющих программных модулей самой операционной системы и даже драй­ веры имеют статус высокоприоритетных процессов, для выполнения которых необходимо выделить соответствующие ресурсы. В качестве примера можно привести хорошо известную операционную систему реального времени QNX фирмы Quantum Software Systems. Аналогично и в UNIX-системах, которые хоть и не относятся к микроядерным, выполнение системных программных модулей тоже имеет статус системных процессов, получающих ресурсы для своего испол­ нения.

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

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

Q выполнения — все затребованные процессом ресурсы выделены (в этом состоя­ нии в каждый момент времени может находиться только один процесс, если речь идет об однопроцессорной вычислительной системе);

Q готовности к выполнению — ресурсы могут быть предоставлены, тогда процесс перейдет в состояние выполнения;

Q блокирования, или ожидания, — затребованные ресурсы не могут быть предо­ ставлены, или не завершена операция ввода-вывода.

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

В обычных операционных системах, как правило, процесс появляется при запуске какой-нибудь программы. Операционная система организует (порождает, или выделяет) для нового процесса уже упомянутую выше информационную структу­ ру — так называемый дескриптор процесса, и процесс (задача) начинает выпол­ няться. Поэтому пассивного состояния в большинстве систем не существует. В опе­ рационных системах реального времени (ОСРВ) ситуация иная. Обычно при проектировании системы реального времени состав выполняемых ею программ (задач) известен заранее. Известны и многие их параметры, которые необходимо учитывать при распределении ресурсов (например, объем памяти, приоритет, сред­ няя длительность выполнения, открываемые файлы, используемые устройства и проч.). Поэтому для них заранее заводят дескрипторы задач с тем, чтобы впослед­ ствии не тратить драгоценное время на организацию дескриптора и поиски для него необходимых ресурсов. Таким образом, в ОСРВ многие процессы (задачи) могут находиться в состоянии бездействия, что мы и отобразили на рис. 1.7, отде­ лив это состояние от остальных состояний пунктиром.

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

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

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

Q При выборе из очереди планировщиком (характерно для операционных сис­ тем, работающих в пакетном режиме).

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

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

При наступлении запланированного времени запуска программы.

[оследние два способа запуска задачи, при которых процесс из состояния бездей­ ствия переходит в состояние готовности, наиболее характерны для операционных истем реального времени.

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

Из состояния выполнения процесс может выйти по одной из следующих при­ чин.

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

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

Устройство называется инициативным, если по сигналу запроса на прерывание от него должна за­ пускаться некоторая задача.

О Процесс переводится супервизором операционной системы в состояние готов­ ности к исполнению в связй-с появлением более приоритетной задачи или в свя­ зи с окончанием выделенного ему кванта времени.

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

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

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

Q идентификатор процесса (Process Identifier, PID);

Q тип (или класс) процесса, который определяет для супервизора некоторые пра­ вила предоставления ресурсов;

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

О переменную состояния, которая определяет, в каком состоянии находится про­ цесс (готов к работе, выполняется, ожидает устройства ввода-вывода и т. д.);

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

• информацию о ресурсах, которыми процесс владеет и/или имеет право пользо­ ваться (указатели на открытые файлы, информация о незавершенных опера­ циях ввода-вывода и др.);

О место (или его адрес) для организации общения с другими процессами;

Понятия вычислительного процесса и ресурса • параметры времени запуска (момент времени, когда процесс должен активизи­ роваться, и периодичность этой процедуры);

р в случае отсутствия системы управления файлами адрес задачи на диске в ее исходном состоянии и адрес на диске, куда она выгружается из оперативной па­ мяти, если ее вытесняет другая задача (последнее справедливо для диск-резидент­ ных задач, которые постоянно находятся во внешней памяти на системном маг­ нитном диске и загружаются в оперативную память только на время выполнения).

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

В некоторых операционных системах количество описателей определяется жест­ ко и заранее (на этапе генерации варианта операционной системы или в конфигу­ рационном файле, который используется при загрузке ОС), в других по мере необходимости система может выделять участки памяти под новые описатели. На­ пример, в уже мало кому известной системе OS/2, которая несколько лет тому назад многими специалистами считалась одной из лучших ОС для персональных компьютеров, максимально возможное количество описателей задач указывается в конфигурационном файле CONFIG.SYS. Например, строка THREADS=1024 в файле CONFIG.SYS означает, что всего в системе может параллельно существовать и вы­ полняться до 1024 задач, включая вычислительные процессы и их потоки.

В ныне широко распространенных системах Windows NT/2000/XP количество описателей нигде в явном виде не задается. Это переменная величина, и она опре­ деляется самой операционной системой. Однако посмотреть на текущее количе­ ство таких описателей можно. Если, работая в Windows NT/2000/XP, нажать од­ новременно комбинацию клавиш Ctrl+Shift+Esc, появится окно Диспетчера задач.

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

В операционных системах реального времени чаще всего количество процессов фиксируется, и, следовательно, целесообразно заранее определять (на этапе гене­ рации или конфигурирования ОС) количество дескрипторов. Для использования таких операционных систем в качестве систем общего назначения (что нынче уже нехарактерно)1 обычно количество дескрипторов бралось с некоторым запасом, В недалеком прошлом достаточно часто в качестве вычислительных систем общего назначения при­ обретались мини-ЭВМ и устанавливали на них ОС реального времени.

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

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

Для аппаратной поддержки работы операционных систем с этими информацион­ ными структурами (дескрипторами задач) в процессорах могут быть реализованы соответствующие механизмы. Так, например, в микропроцессорах Intel 80x (см. главу 4) имеется специальный регистр TR (Task Register), указывающий мес­ тонахождение специальной информационной структуры — сегмента состояния задачи (Task State Segment, TSS), в котором при переключении с задачи на задачу автоматически сохраняется содержимое регистров процессора [1,8, 48].

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

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

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

Хотя могут выполняться и в разное время, и на разных компьютерах. Главное — это то, что мультипрограммный режим обеспечивает для этих процессов их неза­ висимость. Каждому процессу операционная система выделяет затребованные ре­ сурсы, он выполняется как бы на отдельной виртуальной машине. Средства защиты системы должны обеспечить невмешательство одного вычислительного процесса в другой вычислительный процесс. И если такую защиту обеспечить невозможно, Понятия вычислительного процесса и ресурса то система не может считаться надежной. Немало методов и конкретных способов было придумано разработчиками для обеспечения надежных вычислений и пре­ дотвращения возможности намеренно или по ошибке повлиять на результаты вы­ числений в другом процессе.

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

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

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

Термин задача тоже, к сожалению, в большинстве случаев применялся для того же. В свое время различали термины «мультизадачность» и «мультипрограмми­ рование», но потом они стали заменять друг друга, и это вносило немалую путани­ цу. Таким образом, для реализации мультизадачности в ее исходном толковании необходимо было ввести соответствующую сущность. Такой сущностью стали лег­ ковесные (thin) процессы, или, как их теперь преимущественно называют, потоки выполнения1, нити, или треды (threads).

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

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

Поток выполнения (thread) не следует путать с потоком данных (stream).

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

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

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

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

Понятия вычислительного процесса и ресурса Особенно эффективно можно использовать многопоточнослъ для выполнения рас­ пределенных приложений. Например, многопоточный сервер может параллельно выполнять запросы сразу нескольких клиентов. Как известно, операционная сис­ тема OS/2 была одной из первых систем, используемых в персональных компью­ терах, которая поддерживала многопоточность. В середине 90-х годов для этой опе­ рационной системы было создано большое количество приложений, в которых наличие механизмов многопоточной обработки реально приводило к существен­ ному повышению скорости вычислений. Для систем Windows, с которыми мы все имеем дело, ярко выраженной многопоточностыо обладают такие продукты, как SQL Server, Oracle. И хотя те же Word, Excel, Internet Explorer также при своей работе образуют потоки, явного параллелизма в этих программах почти не под­ держивается. Поэтому при увеличении числа процессоров в компьютере такие программы не начинают выполняться быстрее.

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

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

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

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

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

Для того чтобы можно было эффективно организовать параллельное выполнение рассмотренных сущностей (процессов и потоков), в архитектуру современных про­ цессоров включены средства для работы со специальной информационной струк­ турой, описывающей ту или иную сущность. Для этого уже на уровне архитектуры микропроцессора используется понятие задача (task). Оно как бы объединяет в себе и обычный процесс, и поток выполнения (тред). Это понятие и поддерживаемая для него на уровне аппаратуры информационная структура позволяют в дальней­ шем при разработке операционной системы строить соответствующие дескрипто­ ры как для задач, так и для процессов. И отличаться эти дескрипторы будут прежде всего тем, что дескриптор задачи может хранить только контекст приостановлен­ ного вычислительного процесса, тогда как дескриптор процесса должен содержать поля, описывающие тем или иным способом ресурсы, выделенные этому процес­ су. Для хранения контекста задачи в микропроцессорах с архитектурой i32 имеет­ ся специальный сегмент состояния задачи (Task State Segment, TSS). А для отобра­ жения информации о процессе используется уже иная информационная структура, однако она включает в себя TSS. Другими словами, сегмент состояния задачи, по­ дробно рассматриваемый в разделе «Адресация в 32-разрядных микропроцессо­ рах i80x86 при работе в защищенном режиме» главы 4, используется как основа для дескриптора процесса. Таким образом, дескриптор процесса больше по разме­ ру, чем TSS, и включает в себя такие традиционные поля, как идентификатор про­ цесса, его имя, тип, приоритет и проч.

Каждый поток (в случае использования так называемой «плоской» модели памя­ ти — см. раздел «Сегментная, страничная и сегментно-страничная организация памяти» в главе 3) может быть оформлен в виде самостоятельного сегмента, что приводит к тому, что простая (не многопоточная) программа будет иметь всего один сегмент кода в виртуальном адресном пространстве.

Понятия вычислительного процесса и ресурса Теперь, если вернуться к уже упомянутому файлу CONFIG.SYS, в котором для опера­ ционной системы OS/2 указываются наиболее важные параметры, определяющие ее работу, стоит заметить, что в этом файле строка THREADS=1024 указывает на ко­ личество не процессов, а именно задач. И под задачей в данном случае понимается как процесс, так и поток этого процесса.

К большому сожалению, практически невозможно использовать термины «зада­ ча» и «процесс» с однозначным толкованием, чтобы под задачей обязательно по­ нимать поток, в то время как термин «процесс» означал бы множество потоков.

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

В завершение можно привести несколько советов по использованию потоков вы­ полнения при создании приложений, заимствованных из [28].

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



Pages:     || 2 | 3 | 4 | 5 |   ...   | 8 |
Похожие работы:

«МИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ УТВЕРЖДАЮ Первый проректор университета профессор С.Д.Денисов 28 мая 2010 г. Рег. № ВНУТРЕННИЕ БОЛЕЗНИ Учебная программа для специальности 1-79 01 01 Лечебное дело (специализации 1-79 01 01 01 Военно-медицинское дело) Факультет военно-медицинский Кафедра военно-полевой терапии Курсы 4, 5, 6 Семестры 7, 8, 9, 10, 11, 12 Лекций 68 час. Формы аттестации: Семестр Практических занятий 450 час....»

«7-я Всероссийская конференция Химия фтора, посвященная 100-летию со дня рождения академика И. Л. Кнунянца, 5-9 июня 2006 г., Москва, Россия Р-101 N-ГЕТЕРИЛИМИНЫ МЕТИЛТРИФТОРПИРУВАТА В. Б. Соколов, А. Ю. Аксиненко, И. В. Мартынов Институт физиологически активных веществ Российской академии наук 142432 Московская обл. Черноголовка, Россия E-mail: [email protected] Синтез ранее неизвестных N-гетерилиминов метилтрифторпирувата (МТФП) 1, а именно 2-тиазолил-, 2-бензотиазолил-, 2-пиридил-,...»

«Министерство здравоохранения и социального развития Российской Федерации Государственное бюджетное образовательное учреждение высшего профессионального образования ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ (ГБОУ ВПО ИГМУ Минздравсоцразвития России) Кафедра онкологии и лучевой терапии УТВЕРЖДАЮ Проректор, профессор по учебной работе ГБОУ ВПО ИГМУ, профессор А.В. Щербатых _ 20_ года РАБОЧАЯ ПРОГРАММА по дисциплине ОНКОЛОГИЯ Для специальностей: 06.01.03. - Педиатрия РАЗРАБОТЧИК Заведующий...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Ярославский государственный университет им. П.Г. Демидова Факультет информатики и вычислительной техники УТВЕРЖДАЮ Проректор по развитию образования Е.В. Сапир _2012 г. Рабочая программа дисциплины послевузовского профессионального образования (аспирантура) История и философия науки по специальности научных работников 05.13.11 Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей Ярославль 2012 Цели...»

«Министерство образования и науки Российской Федерации ГОУ ВПО Волгоградский государственный университет Факультет математики и информационных технологий ПРОГРАММА вступительного экзамена в магистратуру по направлению подготовки 010400 Прикладная математика и информатика Волгоград 2011 Вопросы вступительного экзамена в магистратуру направления Прикладная математика и информатика в 2011 году. 1. Определение линейного пространства и его базиса. Теорема о количестве векторов в различных базисах....»

«Министерство образования и науки Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования Северо-Восточный федеральный университет имени М.К. Аммосова (СВФУ) УТВЕРЖДАЮ: Ректор СВФУ Е.И. Михайлова 20 г. Номер внутривузовской регистрации ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ВЫСШЕГО ОБРАЗОВАНИЯ Направление подготовки 010400 Прикладная математика и информатика Профиль Математическое моделирование и вычислительная математика...»

«Федеральное государственное образовательное учреждение высшего профессионального образования Северо-Западная академия государственной службы Рекомендовано для использования в учебном процессе Регулирование внешнеэкономической деятельности [Электронный ресурс]: учебно-методический комплекс / ФГОУ ВПО Северо-Западная академия государственной службы; авт. Е. В. Жиряева. — Электронные текстовые данные (1 файл: 640 Кб = 1,3 уч.-изд. л.). — СПб.: Изд-во СЗАГС, 2010. — Режим доступа:...»

«РАБОЧАЯ ПРОГРАММА ПО МАТЕМАТИКЕ 1-4 классы Составители: учителя математики нач.кл. СКАЧКОВА М. В. ХОДИНА Г. Л. СИКАЧ И. Б ПАНИНА Е.М. РЕПИНА Н.Н. ЧЕУСОВА З. Д МОСКВА 2013 год Программа принята в 2001 году. Второе издание исправлено и дополнено в 2005 году. Третье издание исправлено и дополнено в 2011 году. (ФГОС 1кл) Четвертое издание исправлено и дополнено в 2012 году. (ФГОС 2) Пятое издание исправлено и дополнено в 2013 году (ФГОС 3) Пояснительная записка к программе по математике I-IV...»

«2-й Международный книжный форум Москва ПРЕДВАРИТЕЛЬНАЯ ПРОГРАММА ДЕЛОВЫХ МЕРОПРИЯТИЙ ФОРУМА День 1 • пятница • 7 сентября День 2 • суббота • 8 сентября Книжный рынок. Проблемы и решения Books & Digital. Новые технологии для издателей Publishing market. Problems and solutions Books & Digital. New technologies in Publishing Вопросы для обсуждения: Вопросы для обсуждения: КНИЖНЫЙ РЫНОК В 2012-2013 ПЕРЕВОД КОНТЕНТА В НОВЫЕ ФОРМАТЫ И НА БИБЛИОТЕКИ И ИЗДАТЕЛЬСТВА НОВЫЕ ПЛАТФОРМЫ ПРОДВИЖЕНИЕ В...»

«Муниципальное бюджетное образовательное учреждение дополнительного образования детей Детская школа искусств им. С.И.Налимова с.Выльгорт Выльгорт сиктса челядьлы С.И.Налимов нима искусство шко ла челядьлы со дт д т дмлун сетан муниципальнй вел дан сьмкуд учреждение УТВЕРЖДАЮ: Директор МБОУДОД ДШИ им. С.И.Налимова с.Выльгорт Козак О.П. _ Предметная область ПО.02. ТЕОРИЯ И ИСТОРИЯ МУЗЫКИ Программа по учебному предмету ПО.02.УП.03.МУЗЫКАЛЬНАЯ ЛИТЕРАТУРА Выльгорт, 2013 Одобрено Методическим советом...»

«Приложение 5Б: Рабочая программа специальной дисциплины Современный русский литературный язык ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ПЯТИГОРСКИЙ ГОСУДАРСТВЕННЫЙ ЛИНГВИСТИЧЕСКИЙ УНИВЕРСИТЕТ Утверждаю Проректор по научной работе и развитию интеллектуального потенциала университета профессор З.А. Заврумов _2012 г. Аспирантура по специальности 10.02.01 Русский язык отрасль науки: 10.00.00 Филологические науки Кафедра русской...»

«C M Y CM MY CY CMY K ХУДЕЕМ! 1 Composite C M Y CM MY CY CMY K 2 По многочисленным просьбам, я собрала все материалы, связанные со снижением веса в одну брошюру. Хочу вам сказать, дорогие друзья, что любая программа, которую вы выберите для снижения веса, будет актуальна. Но учтите, что только беспрекословное выполнение всех моих рекомендаций принесет вам желаемый результат. Борьба с лишним весом, при склонности к полноте должна длиться всю жизнь. Пробуйте, экспериментируйте, подберите свою...»

«Источник: ИС ПАРАГРАФ-WWW http://online.zakon.kz УКАЗ ПРЕЗИДЕНТА РЕСПУБЛИКИ КАЗАХСТАН Об утверждении Государственной программы развития образования Республики Казахстан на 2011-2020 годы (с изменениями и дополнениями по состоянию на 02.11.2012 г.) В целях реализации Указа Президента Республики Казахстан от 1 февраля 2010 года № 922 О Стратегическом плане развития Республики Казахстан до 2020 года ПОСТАНОВЛЯЮ: 1. Утвердить прилагаемую Государственную программу развития образования Республики...»

«Пояснительная записка Рабочая программа по физкультуре для учащихся 8а класса разработана на основе федерального компонента государственного образовательного стандарта основного общего образования и комплексной программы физического воспитания учащихся 1 -11 классов под редакцией В.И. Ляха. Данная учебная программа конкретизирует содержание предметных тем образовательного стандарта, дает распределение учебных часов по разделам курса и последовательность изучения разделов физической культуры в 8...»

«Федеральное агентство по образованию ГОУ ВПО Алтайский государственный университет УТВЕРЖДАЮ декан исторического факультета Демчик Е.В. _ 2010 г. РАБОЧАЯ ПРОГРАММА по дисциплине Памятники мирового культурного наследия для специальности 031502.65 Музеология факультет исторический кафедра археологии, этнографии и музеологии курс 5 семестр 9 лекции 22 (час.) Практические (семинарские) занятия 22 (час.) Экзамен в 9 семестре Всего часов 44 Самостоятельная работа 44 (час.) Итого часов трудозатрат на...»

«Государственное бюджетное образовательное учреждение высшего профессионального образования Ставропольская государственная медицинская академия Министерства здравоохранения и социального развития РФ Институт последипломного и дополнительного образования Факультета последипломного и дополнительного образования Кафедра акушерства и гинекологии Утверждаю Директор ИПДО, Доц.А.Я. Сохач _2011г. Согласовано Декан ИПДО, Проф.Н.В. Агранович _2011г. Рабочая учебная программа Цикла последипломного обучения...»

«Федеральное агентство по образованию Российский государственный гуманитарный университет Управление аспирантурой и докторантурой Историко-архивный институт Факультет архивного дела Факультет технотронных архивов и документов АРХИВОВЕДЕНИЕ Программа вступительного экзамена в аспирантуру по специальности 05.25.02 “Документалистика, документоведение, архивоведение” Москва Архивоведение. Программа для сдачи кандидатского экзамена в аспирантуру РГГУ по специальности 05.25.02/ Сост. Старостин Е.В.,...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Саратовский государственный аграрный университет имени Н.И. Вавилова СОГЛАСОВАНО УТВЕРЖДАЮ Заведующий кафедрой Декан факультета /Карпунина Л.В./ _ /Молчанов А.В./ _ _ 2013 г. _ 2013 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ БИОЛОГИЧЕСКАЯ БЕЗОПАСНОСТЬ Дисциплина БИОТЕХНОЛОГИЧЕСКИХ ПРОИЗВОДСТВ Направление подготовки 240700.68 Биотехнология Магистерская...»

«ЮГО-ЗАПАДНОЕ ОКРУЖНОЕ УПРАВЛЕНИЕ ОБРАЗОВАНИЯ ДЕПАРТАМЕНТА ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ГОРОДА МОСКВЫ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА С УГЛУБЛЕННЫМ ИЗУЧЕНИЕМ ОБЛАСТИ ЗНАНИЙ ИСКУССТВО № 1372 РАБОЧАЯ ПРОГРАММА по биологии 10 класс на 2013-2014 учебный год Ушаковой Елены Владимировны учителя первой квалификационной категории Курс Общая биология. (34 часа. 1 час в неделю) Авторы: Д. К. Беляев, П. М. Бородин, Н. Н. Воронцов Москва. 2013г....»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФГАОУ БАЛТИЙСКИЙ ФЕДЕРАЛЬНЫЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ИММАНУИЛА КАНТА Утверждаю: Ректор Ректор БФУ им.И.Канта А.П.Клемешев _20г. _ 201_ г. _ Номер внутривузовской Номер внутривузовской регистрации_ регистрации Основная образовательная программа высшего профессионального образования Направление подготовки 010500.68 Математическое обеспечение и администрирование информационных систем Магистерская программа Многомерные информационные...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.