WWW.DISS.SELUK.RU

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

 

Pages:     || 2 | 3 |

«В.А. Прытков Конспект лекций по дисциплине Системное программное обеспечение ЭВМ для студентов специальности I-40 02 01 Вычислительные машины, системы и сети Минск 2007 Семестр 1. Операционные системы Введение Предмет ...»

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

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет

информатики и радиоэлектроники»

Кафедра электронных вычислительных машин

В.А. Прытков

Конспект лекций

по дисциплине «Системное программное обеспечение ЭВМ»

для студентов специальности I-40 02 01

«Вычислительные машины, системы и сети»

Минск 2007 Семестр 1. Операционные системы Введение Предмет курса, его цели и задачи. Методическое обеспечение. История развития системного ПО. Классификация системного ПО. ОС, системы управления файлами, интерфейсы, системы программирования, утилиты. Понятие ресурса в ОС.

Концепция виртуализации ресурса Учебники 1. Гордеев А.В. Операционные системы. Учебник для ВУЗов. 2-е изд. Спб., Питер, 2005.

2. Таненбаум Э. Современные операционные системы. Спб, Питер, 2004.

3. Карпов В.Е., Коньков К.А. Основы операционных систем. Курс лекций. Учебное пособие. М., Интернет-университет информационных технологий, 2004.

4. Столлингс В. Операционные системы, 4-е изд. М., изд. дом “Вильямс”, 2004.

Литература по UNIX 5. Вахалия Ю. UNIX изнутри. СПб, Питер, 2003.

6. Рочкинд М. Программирование для UNIX, 2-е изд. СПб, БХВ-Петербург, 2005.

7. Робачевский А.М., Немнюгин С.А., Стесик О.Л. Операционная система UNIX. СПб, БХВ-Петербург, 2005.

Литература по Windows 8. Руссинович М., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000. Мастер-класс. М., изд.-торг. дом “Русская редакция”, СПб., Питер, 2005.

9. Харт Д. Системное программирование в среде Windows, 3-е изд. М., изд. дом “Вильямс”, 2005.

Литература по другим ОС 10. Минаси М., Камарда Б. И др. OS/2 Warp изнутри. Т.2. СПб., Питер, 1996.

11. Кёртен Р. Введение в QNX Neutrino2. Руководство для разработчиков приложения реального времени. СПб., БХВПетербург, 2005.

12. Практика работы с QNX. Алексеев Д., Ведревич Е., Волков А. и др. М., изд. дом “КомБук”, 2004.

Учебники по всему курсу 13. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. Учебник для ВУЗов. Спб., Питер, 2003.

Учебно-методические пособия 14. Лосич В.А., Радишевский В.А., Отвагин А.В. Основы теории компиляторов. Учебное пособие. Мн., БГУИР, 2000.

15. Глецевич И.И., Лосич В.А., Радишевский В.А. Лабораторный практикум по курсу “Системное программное обеспечение” для студентов специальности Т 10.03.00 “Вычислительные машины, системы и сети”. Мн., БГУИР, 2001.

16. Лосич В.А., Радишевский В.А. Основы теории операционных систем. Учебное пособие. Мн., БГУИР, 2001.

17. Прытков В.А., Уваров А.А., Супонев В.А. Типовые механизмы синхронизации процессов : учеб.-метод. пособие по дисц.

«Системное программное обеспечение ЭВМ» для студ. спец. I-40 02 01 «Вычислительные машины, системы и сети» – Мн. : БГУИР, Общая структура программного обеспечения вычислительной системы К системному ПО относят ПО самого низкого уровня. Таким ПО являются:

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

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

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

- прием и исполнение запросов на запуск, приостановку, остановку программ;

- загрузка в ОЗУ исполняемых программ;

- передача управления программе (инициализация);

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

- обеспечение работы систем управления файлами и иных систем управления низкого уровня, например СУБД;

- обеспечение мультипрограммного режима;

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

- функционирование в режиме реального времени;

- распределение памяти и организация виртуальной памяти;

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

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

- защита данных программы от воздействия других программ;

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



- обеспечение работ систем программирования.

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

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

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

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

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

История развития ОС и системного ПО тесно связана с историей развития вычислительной техники в целом. Первый цифровой компьютер был изобретен Чарльзом Беббиджем в конце XIX века. Это была чисто механическая машина. В то же время он ясно сознавал, что для аналитической машины требуется программное обеспечение, для чего нанял Аду Лавлейс (Ada Lovelace), дочь знаменитого Байрона. Она стала первым в мире программистом, а язык Ада назван в ее честь. Традиционно историю развития ВТ разделяют на 4 периода.

1. 1945-1955. Первые вычислительные машины на электронных лампах использовали механические реле, длительность такта составляла несколько секунд. Все ПО разрабатывалось непосредственно в машинных кодах. Не существовало ни языков программирования, ни операционных систем. Фактически, на компьютерах занимались прямыми числовыми вычислениями:

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

2. 1955-нач. 60. В конце 50-х – начале 60-х появились компьютеры на транзисторах. Программы набивались уже на перфокартах, для ввода данных в компьютер использовалась промежуточная запись на магнитофонную ленту. Программы обрабатывались в пакетном режиме. Появились языки программирования (Ассемблер, Фортран). ОС в этот период разрабатывались для ускорения и модификации кода перехода с задачи на задачу. Компьютеры использовались главным образом для научных и технических вычислений. Считается, что первую ОС для IBM 701 в начале 50-х создали в лаборатории GM. Следующая ОС была разработана в 1955 для IBM 704. В первых ОС появилась концепция имён системных файлов как средств достижения независимости программ от аппаратуры. Типичными операционными системами были FSM (Fortran Monitor System) и IBSYS (создана IBM). К концу 50-х годов ОС обладали следующими характеристиками:

1. Пакетная обработка одного пакета задач.

2. Наличие стандартных подпрограмм ввода-вывода.

3. Возможность перехода от программы к программе.

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

5. Наличие языков управления заданиями, позволяющих описывать задания и ресурсы для их выполнения.

Происходит разделение обслуживающего персонала на программистов, операторов и т.д.

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

1. Реализация защитных механизмов, т.е. наличие привилегированных (используемых только ОС) и непривилегированных команд а также защиты памяти;

2. Наличие прерываний.

3. Развитие параллелизма в архитектуре, т.е. прямой доступ к памяти и каналы ввода-вывода.

ОС этого периода отвечают за :

- организацию интерфейса между прикладной программой и ОС при помощи системных вызовов:

- Организацию очереди заданий и планирование использования процессора:

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

В конце 60х начале 70х годов у производителей существовали две совершенно независимые линейки компьютеров: большие компьютеры с пословной обработкой текста для научных и технических вычислений, и коммерческие компьютеры с посимвольной обработкой для банков и страховых компаний для сортировки и печати данных. Ниша между этими линиями была весьма существенной. IBM заполняет ее, выпустив серию машин на ИС IBM/360. Модели в серии различались только ценой и производительностью, являясь совместимыми по структуре и набору команд, и использовали ОС OS/360. Идею совместимости быстро приняли и другие производители. OS/360 на 2-3 порядка превышала по объемам FSM, была написана на ассемблере, имела большое количество ошибок. Важным достижением этой системы явилась многозадачность. Стала обеспечиваться подкачка, т.е. дозагрузка новых задач по мере выполнения предыдущих. Был разработан режим разделения времени, когда у каждого пользователя имелся свой терминал, а машина обслуживала запросы поочередно. Первая серьезная подобного рода система была разработана в Массачусетском технологическом институте – CTSS (Compatible Tme Sharing System – совместимая система разделения времени). Большое внимание стало уделяться разработке систем программирования. Существовала проблема совместимости отдельных машин, для решения которой стали разрабатываться эмуляторы и имитаторы.

К этому времени относится и разработка “компьютерного предприятия общественного пользования” – машины, поддерживающей одновременно сотни пользователей в режиме разделения времени. Система была названа MULTICS (MULTiplex Information and Computing Service - мультиплексная информационная и вычислительная служба). Система была написана на языке PL/1, компилятор же этого языка появился только через несколько лет. Проект с трудом был завершен, но в итоге система была установлена примерно в 80 крупных компаниях и университетах мира. Некоторые их них прекратили использовать ее только через 30 лет, в конце 90х годов.

В этот же период с появлением PDP-1 растет рынок мини-компьютеров. Память PDP-1 составляла всего 4К 18-битовых слов при цене 120 тыс. $ за штуку, однако это составляло порядка 5% от цены IBM7094, хотя на некоторых задачах их производительность была практически равной. Кульминацией их стало появление PDP-11. Впоследствии Кен Томпсон, работавший над проектом MULTICS, нашел PDP-7 и написал усеченную однопользовательскую версию MULTICS. К нему присоединился Деннис Ритчи, система получила название UNIX и была перенесена на PDP-11/20 и ряд других, более совершенных машин. Чтобы не переписывать исходный код каждый раз заново, Томпсон решил переписать его на языке высокого уровня, разработал его, назвал язык В. Попытка оказалась неудачной. Тогда Ритчи разработал следующий язык, назвав его С, и написал к нему хороший компилятор. Вскоре UNIX была переписана на С, разработчики опубликовали статью, получив за нее престижную премию Тьюринга, что принесло UNIX известность. Благодаря широкому распространению в университетских кругах PDP-11 и слабой ОС на них, UNIX быстро приобрела популярность. Для переноса на другие платформы Стивом Джонсоном был написан переносимый компилятор С, позволяющий настраивать его на создание объектного кода для практически любой машины. Вскоре появилась первая переносимая версия UNIX. В конце концов появилось два ведущих клона UNIX – System V и BSD. Для того, чтобы ПО могло функционировать в любой версии UNIX, IEEE разработал стандарт POSIX, определяющий минимальный интерфейс системного вызова.

4. 1980 и далее. Появление БИС дало новый толчок к развитию. В 1974 году Intel выпускает Intel 8080. Для его тестирования была необходима ОС. Гари Килдэлл сконструировал контроллер гибкого диска, подключив его к процессору. Так появился первый микрокомпьютер с диском. Для него была написана система CP/M (Control Programm for Microcomputers). В течении 5 лет CP/M занимала на рынке доминирующее положение. В начале 80х IBM разработала первый персональный компьютер и стала искать для него ОС. Контактируя с Биллом Гейтсом для получения лицензии на его интерпретатор языка BASIC, они поинтересовались и по поводу ОС. Он рекомендовал Килдэлла. Однако тот отказался от личной встречи, более того, его адвокат отказался подписывать соглашение о неразглашении по поводу еще не выпущенного персонального компьютера. В итоге IBM вновь обратилась к Гейтсу. Он нашел у местного производителя компьютеров подходящую ОС (DOS) и выкупил ее. После ряда доработок совместно с Тимом Патерсоном, разработчиком системы, она была переименована в MS-DOS (Microsoft Disc Operation System), и заняла доминирующее положение на рынке ОС для ПК. Важную роль сыграла ориентация Гейтса на продажу системы не конечным пользователям, а, в отличие от Килдэлла, производителям ПК для оснащения ею их машин.

Еще в 60е годы Даг Энгельбарт изобрел графический интерфейс пользователя (GUI). Стив Джобс однажды увидел его в Xerox PERC, и приступил к созданию Apple с графическим интерфейсом. Со второй попытки затея удалась, и ПК приобрел дружественный пользователю интерфейс. Microsoft переняла идею и на основе GUI создала надстройку над MS-DOS (Windows 3.11). В 1995 году вышла первая независимая ОС Windows 95 от Microsoft. На настоящий момент UNIX токже обзавелась графическим интерфейсом X Windows. С середины 80х годов с ростом сетей ПК, стали развиваться сетевые и распределенные ОС. Сетевые ОС мало отличаются от однопроцессорных систем, нуждаясь, по большому счету в сетевом интерфейсе, что не изменяет структуру ОС. Распределенная ОС только представляется пользователю традиционной системой, она на деле состоит из множества процессоров, при распределение задач осуществляется средствами самой ОС, освобождая от этого пользователя. Задержки при передаче данных в сетях означают, что распределенная ОС должна уметь работать с неполной, устаревшей или даже неверной информацией, что в корне отличается от однопроцессорных ОС, где система имеет полную информацию относительно состояния системы.

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

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

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

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

ЦП - активный ресурс, область памяти, выделяемая по требованию - пассивный ресурс.

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

По степени важности: главный и второстепенный. Ресурс является главным по отношению к конкретному процессу, если без его выделения процесс принципиально не может развиваться. К таким ресурсам относятся прежде всего ЦП и ОП. Ресурсы, которые допускают некоторую альтернативу развития процесса, если они не будут выделены, называются второстепенными. (Например МЛ, МД).

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

По структуре: простой и составной. Структурный признак устанавливает наличие или отсутствие у ресурса некой структуры.

Ресурс является простым, если не содержит составных элементов и рассматривается при распределении как единое целое.

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

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

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

Предполагаются, что в отношении каждого ресурса процесс-пользователь выполняет три типа действий: ЗАПРОС, ИСПОЛЬЗОВАНИЕ, ОСВОБОЖДЕНИЕ. Если при распределении системой ресурса допускается многократное выполнение действий в последовательности запрос-использование-освобождение, то такой ресурс называют воспроизводимым. После возвращения он доступен для использования его другим процессом. Поэтому, если не учитывать вид изменений ресурса при каждом разовом использовании, можно считать время жизни ресурса бесконечно большим или достаточно большим, пока он не потеряет своих функциональных свойств. В отношении определенной категории ресурсов правомочно использование действий в следующем порядке: освобождение-запрос-использование, после чего ресурс, который в данном случае называют потребительным, изымается из сферы потребления (например, отношение производитель-потребитель). Срок жизни потребляемого ресурса, определяемый периодом между выполнением действий освобождение и использование, конечен. В отношении процесса производителя и процесса-потребителя потребляемые ресурсы ведут себя как временные.

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

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

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

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

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

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

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

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

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

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

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

Операционная система. Классификация ОС. ОС реального времени. Микроядерные и монолитные ОС. Структура ОС. Ядро, командный процессор, подсистема ввода-вывода, система управления памятью, файловая система. Принципы построения ОС. Понятие виртуальной машины. Безопасность операционных систем. Понятие системных вызовов. Системные вызовы стандарта POSIX. Интерфейс Win32 API.

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

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

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

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

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

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

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

Системный вызов mount позволяет монтировать (присоединять) файловую систему гибкого диска к корневой файловой системе в указанное место. Еще одно понятие UNIX – специальные файлы. На самом деле это устройства ввода-вывода, которые выглядят как файлы.

Классификация ОС:

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

Мэйнфреймы отличаются от ПК по возможностям ввода-вывода, позволяя зачастую обрабатывать терабайты данных. ОС мэйнфреймов ориентированы на обработку множества одновременных заданий с большим количеством операций вводавывода. Как правило, предлагают три вида обслуживания: пакетная обработка, обработка транзакций (групповых операций) и разделение времени. В случае пакетной обработки задачи обрабатываются без участия пользователей. Например, составление разнообразных отчетов может быть выполнено в пакетном режиме. В случае обработки транзакций выполняется большое число маленьких запросов, таких как бронирование билетов, операции с кредитными карточками и т.д. Запросы невелики, но система одновременно обрабатывает сотни и тысячи таких запросов в секунду. В режиме разделения времени система позволяет множеству удаленных пользователей одновременно выполнять задачи на одной машине. Типичным примером является многопользовательская база данных. Пример ОС для мэйнфрейма – OS/390.

Серверы одновременно обслуживают множество пользователей, позволяя им делить между собой программные и аппаратные ресурсы. Серверы предоставляют возможность работы с печатающими устройствами, файлами, Интернетом. На серверах хранятся Web-страницы и обрабатываются входящие запросы. UNIX, Windows 2000, Linux – примеры серверных ОС.

Для работы с системами, в которых объединены несколько процессоров, требуются специальные ОС, часто многопроцессорные ОС представляют собой серверные ОС со специальными возможностями связи. Основная задача ОС для ПК – предоставление удобного интерфейса пользователю. Эти ОС используются для доступа к Интернету, работы с текстом, электронными таблицами и т.д. Все клоны ОС Windows, Linux.

ОС реального времени используются, когда процессы, которыми управляет машина, например, сборочной линией на производстве, должны удовлетворять жестким временным требованиям. Если действия должны происходить строго в указанный диапазон времени – это жесткая СРВ, если же время от времени возможны пропуски сроков выполнения операции, например, цифровое аудио и мультимедийные системы, то это гибкая СРВ. Примерами СРВ являются VxWorks и QNX. Для карманных компьютеров, а также встроенных систем, управляющих широким спектром бытовых и прочих устройств (телевизоры, микроволновые печи, мобильные телефоны) используются встроенные ОС. Они могут обладать характеристиками ОС реального времени, но имеют меньший размер, память, ограниченную мощность. Примерами являются PalmOS и Windows CE. Смарт-карта – устройство размером с кредитную карту, содержащее центральный процессор. Часто ОС для смарт-карт являются патентованными системами. Часть смарт-карт являются Java-ориентированными, у них ПЗУ содержит интерпретатор виртуальной Java-машины (JVM). Некоторые из смарт-карт позволяют управлять несколькими апплетами одновременно, что приводит к многозадачности и необходимости планирования, требуется управление ресурсами и защитой. Все эти задачи выполняет, как правило, примитивная ОС, находящаяся на смарт-карте.

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

Многоуровневые системы имеют организацию в виде иерархии уровней. Первой подобной системой была система THE, созданная Дейкстрой в 1968 году. Она содержала 6 уровней. 0 – распределение процессора и многозадачность, 1 – управление памятью, 2 – связь оператор-процесс, 3 – управление ВВ, 4 – программы пользователя, 5 – оператор. Уровень 0 занимался распределением времени процессора, переключая процессы при возникновении прерывания или срабатывании таймера.

Выше этого уровня система состояла из последовательных процессов, каждый из которых можно было программировать не беспокоясь о том, что на одном процессоре запущено несколько процессов. Т.е. уровень 0 обеспечивал базовую многозадачность процессора. Уровень 1 управлял памятью. Он выделял процессам память в ОЗУ и на магнитном барабане, если ОЗУ не хватало. По мере необходимости страницы с барабана попадали в ОЗУ. Выше этого уровня процессам не было необходимости заботиться о том, где они находятся – в ОЗУ или на барабане. Уровень 2 управлял связью между консолью оператора и процессами. Все процессы выше этого уровня имели свою собственную консоль оператора. Уровень 3 управлял устройствами ВВ и буферизацией данных. Любой процесс выше 3 уровня работал уже не с конкретными устройствами ВВ, а с абстрактными УВВ с удобными для пользователя характеристиками. Дальнейшее обобщение концепции многоуровневых систем было сделано в системе MULTICS. Уровни представляли серию концентрических колец, внутренние кольца являлись более привилегированными, чем внешние. Если внешнее кольцо хотело вызвать процедуру из кольца внутреннего, выполнялся эквивалент системного вызова с тщательной проверкой параметров и возможности доступа. Многоуровневые системы просты в реализации. При разработке каждого из уровней нет необходимости знать устройство более низкого уровня, достаточно знать, как к обратиться к функциям этого уровня. Упрощается тестирование. Поскольку отладка идет снизу вверх послойно, то можно быть уверенным, что возникшая ошибка находится именно в тестируемом слое. Упрощается модификация систем. При необходимости достаточно изменить функциональность одного из уровней, не меняя остальных. Недостаток подобных систем в том, что запрос от пользователя вынужден проходить все слои поочередно, аналогично и результат запроса передается от уровня к уровню. Кроме того весьма непросто разделить систему на нужное количество уровней, определить их иерархию и разграничить возможности каждого слоя.

Виртуальные машины развились на основе проработки двух принципов: 1. система с разделением времени обеспечивает многозадачность, 2. расширенную машину с более удобным интерфейсом, чем предоставляемый непосредственно оборудованием. Первая ОС такого рода VM/370. Монитор виртуальной машины работает с оборудованием и обеспечивает многозадачность, предоставляя верхнему слою не одну, а несколько виртуальных машин. В отличие от других ОС, эти ВМ не являются расширенными, а представляют собой точную копию аппаратуры, включая режимы ядра и пользователя, ВВ, прерывания и т.д. В итоге на каждой из таких ВМ может быть запущена любая ОС. Когда программа выполняет системный вызов, он прерывает ОС на виртуальной машине, а не на VM/370. В случае ВМ многозадачность реализуется на уровне ядра, и она отделена от ОС пользователя. Недостаток в том, что снижается эффективность, кроме того, подобные системы очень громоздки. Однако имеется возможность использования на одной машине программ, написанных для разных ОС. Сейчас ВМ используются несколько в ином контексте. Например, для организации нескольких операционных сред. Примером этого является VDM-машина (Virtual DOS machine) – защищенная подсистема, предоставляющая полную среду MS-DOS и консоль для выполнения ее приложений. Одновременно может выполняться практически произвольное число VDM-сессий. Однако здесь пользователю предоставляется виртуальный процессор 8086, не обладающий функциональностью реальной системы на уровне Pentium. Понятие виртуальной машины используется и при построении Java-апплетов. Компилятор Java строит код для JVM. Этот код может быть выполнен на любой платформе, для которой существует интерпретатор JVM.

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

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

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

Большинство структур имеют как достоинства, так и недостатки. Как правило, современные ОС комбинируют несколько подходов. Например, ядро Linux является монолитным с элементами микроядерной архитектуры. При компиляции ядра можно разрешить динамическую загрузку/выгрузку многих модулей ядра. Монолитное ядро с микроядерными элементами имеет и Windows NT. Компоненты системы располагаются в вытесняемой памяти и взаимодействуют путем передачи сообщений, что характерно для микроядерных ОС, однако они работают в едином адресном пространстве и используют общие структуры данных, что является признаком монолитных ОС.

Еще один пример смешанной архитектуры – возможность запуска ОС с монолитным ядром под управлением микроядра.

Например, 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов, а все остальные функции обеспечиваются монолитным ядром.

Основные принципы построения ОС:

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

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

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

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

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

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

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

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

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

- единообразную по логике работы виртуальную память практически неограниченного объема;

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

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

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

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

1. На каждом уровне ничего не известно о свойствах и о существовании более высоких уровней.

2. На каждом уровне ничего не известно о внутреннем строении других уровней. Связь между ними осуществляется только через жесткие, заранее определенные сопряжения.

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

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

5. Каждый уровень может обеспечивать некоторую абстракцию данных в системе.

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

7. Связь между уровнями ограничена явными аргументами, передаваемыми с одного уровня на другой.

8. Недопустимо совместное использование несколькими уровнями глобальных данных.

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

10. Всякая функция, выполняемая уровнем абстракции должна иметь единственный вход.

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

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

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

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

Принцип безопасности. Подразумевает защиту ресурсов одного пользователя от другого, а также предотвращения захвата всех системных ресурсов одним пользователем, включая и защиту от несанкционированного доступа. Безопасная система должна обладать конфиденциальностью, доступностью и целостностью. Конфиденциальность – это возможность доступа к данным только тем пользователям, которым этот доступ разрешен. Доступность – это гарантия того, что авторизованные пользователи всегда получат информацию, которая им необходима. Целостность – это невозможность модификации данных неавторизованными пользователями. При защите использую механизмы идентификации, аутентификации и авторизации.

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

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

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

Наиболее известна Оранжевая книга безопасности (стандарт Министерства обороны США). Все системы делятся на 4 уровня безопасности: A, B, C, D. Уровень С делится на классы С1 и С2, уровень В – на классы В1, В2, В3. А является уровнем с максимальной защитой. Большинство современных ОС отвечают требованиям уровня С2. Он обеспечивает:

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

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

- защита памяти, подразумевающая инициализацию перед повторным использованием.

На этом уровне система не защищена от ошибок пользователя, но его действия легко отслеживаются по журналу. Системы уровня В распределяют пользователей по категориям, присваивая определенный рейтинг защиты, и предоставляя доступ к данным только в соответствии с этим рейтингом. Уровень А требует выполнения формального, математически обоснованного доказательства соответствия системы определенным критериям безопасности. На уровне А управляющие безопасностью механизмы занимают до 90% процессорного времени. Сейчас используется и новый стандарт Common Criteria, а набор критериев Controlled Access Protection Profile примерно соответствует классу С2.

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

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

Интерфейс прикладного программирования (API - Application Program Interface) является более широким понятием, чем системные вызовы. Он представляет собой средства для использования прикладными программами системных ресурсов ОС и реализуемых ею функций. Соответственно, API может реализовываться на уровне ОС, представляя собой системные вызовы, на уровне систем программирования, как правило в виде библиотеки RTL. Кроме того, API могут реализовываться в виде внешних библиотек, например, MFC, VCL.

Платформенно независимый системный интерфейс для компьютерных сред, описываемый стандартом POSIX (Portable Operating System Interface for Computer Environments) – определяет минимальный набор системных вызовов для открытых ОС, базируясь на UNIX системах. Как правило, каждая UNIX система имеет и дополнительные, присущие только ей вызовы.

POSIX описывает более 100 вызовов.

В отличие от UNIX, в Windows системные вызовы и запускающиеся для их выполнения библиотечные вызовы полностью разделены. Для вызова служб ОС используется набор процедур Win32 API. Количество вызовов в WinAPI составляет несколько тысяч, причем многие из них целиком работают в пространстве пользователя, а не ядра. Далее, в UNIX графический интерфейс пользователя GUI запускается в пространстве пользователя, тогда как WinAPI имеет огромное количество процедур для работы с графической оболочкой – управление окнами, меню, шрифтами и т.д. В большинстве версий Windows графическая система запускается в режиме ядра, и в этом случае соответствующие вызовы являются системными, в противном случае только библиотечными. В Win32API не существует понятия связанных файлов, монтирования файловой системы, сигналов. WinAPI для Windows систем на основе ядра NT 5.x (Windows 2000, Windows XP, Windows Server 2003) поддерживает вызовы POSIX, определенные стандартом POSIX.1, и имеет возможность монтирования файловой системы.

Основные системные вызовы:

fork создать дочерний процесс, идентичный родительскому CreateProcess (fork+execve) waitpid ожидать завершение дочернего процесса WaitForSingleObject link создать новый элемент каталога, ссылающийся на другой unlink удалить элемент каталога DeleteFile Концепция процесса. Диаграмма состояний процесса. Операции над процессами. Создание и завершение процесса. Иерархия процессов. Структуры управления процессами. Процессы-зомби. Системные вызовы для управления процессами. Процессы в Windows и UNIX. Процессы и потоки. Понятия мультизадачности и многопоточности. Потоки в пространстве пользователя. Потоки в ядре. Облегченные потоки. Потоки в Windows и UNIX. Всплывающие потоки. Понятие о прерываниях. Параллельные процессы. Независимые и взаимодействующие процессы. Сигналы UNIX. Сообщения Windows В первых системах программа могла выполняться только после завершения предыдущей. В полном соответствии с принципами, разработанными фон Нейманом, все подсистемы и устройства, в т.ч. управление памятью и в/в с внешними устройствами управлялись центральным процессором. Введение в состав системы специальных контроллеров позволило распараллелить эти процессы и непосредственно обработку данных. Был предложен мультипрограммный режим работы: пока одна программа (процесс) ожидает завершения операций ввода-вывода, другой может быть поставлен на обработку данных.

Процесс – это выполняемая программа, включая текущие значения счетчика команд, регистров и переменных. С этой точки зрения, у каждого процесса есть собственный виртуальный процессор. При необходимости использования ресурса, процесс обращается с запросом на ресурс к супервизору ОС (центральному управляющему модулю), который может состоять из нескольких, например, супервизор в/в, супервизор прерываний и т.д. При этом указывается вид ресурса и при необходимости, параметры (объем памяти, например, или необходимость в монопольном использовании ресурса). Управление передается ОС, переводя процессор в привилегированный режим работы. Ресурс может быть выделен процессу, если:

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

Диаграмма состояний процесса.

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

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

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

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

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

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

Понятие последовательного процесса в ОС.

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

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

Фоновые процессы, связанные с электронной почтой, web-страницами, новостями, выводом на печать, называют демонами.

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

На каждый процесс выделяется специальная информационная структура – дескриптор процесса. В общем случае он содержит:

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

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

Дескрипторы, как правило, постоянно находятся в оперативной памяти с целью ускорения работы супервизора. Для каждого состояния ОС ведет соответствующий список процессов, находящихся в этом состоянии. При изменении состояния процесса, супервизор перемещает дескриптор из одного списка в другой. Для состояния ожидания может быть не один список, а несколько – по количеству соответствующих видов ресурсов. Часто в ОС заранее определяется максимальное количество дескрипторов задач. Существует и аппаратная поддержка дескрипторов задач. Так в процессорах i80x86 начиная с имеется регистр TR (task register), указывающий местонахождение сегмента состояния задачи TSS, где при переключении задач сохраняется содержание регистров.

В UNIX используются 2 структуры: u и proc. Ядро имеет массив структур proc, который называется таблицей процессов.

Поскольку таблица находится в системном пространстве, она всегда доступна ядру. Область u является часть пространства процесса, т.е. видна только в момент выполнения процесса, и содержит данные, необходимые только в период выполнения процесса.

В UNIX существует только один системный запрос для создания процесса: fork. Этот запрос создает дубликат существующего, т.е. дочерний процесс полностью повторяет родительский процесс. Адресное пространство полностью повторяет адресное пространство родительского процесса, аналогичны и строки окружения, эти процессы имеют одни и те же открытые файлы. Все переменные имеют одинаковые величины во время вызова fork как у родительского, так и у дочернего процесса, но как только данные скопированы для дочернего процесса, дальнейшие изменения в одном из них уже не влияют на другой. Чтобы можно было отличить родительский процесс от дочернего, fork возвращает 0 для дочернего процесса и PID дочернего процесса для родительского, –1 в случае ошибки. Вызов fork выполняет следующие действия:

- резервирует пространство своппинга для данных и стека процесса-потомка - назначает новый идентификатор PID и структуру proc потомка - инициализирует структуру proc потомка. Часть полей копируются от родителя, часть устанавливается в 0, часть устанавливается в специфические для потомка значения - размещает карты трансляции адресов для потомка - выделяет область u потомка и копирует в нее содержимое области u родителя - изменяет ссылки области u на новые карты адресации и своппигна - добавляет потомка в набор процессов, разделяющих между собой область кода программы, выполняемой родителем.

- Постранично дублирует области данных и стека родителя и модифицирует карты адресации потомка в соответствии с этими новыми страницами - Получает ссылки на разделяемые ресурсы, наследуемые потомком, такие как открытые файлы и рабочий каталог - Инициализирует аппаратный контекст потомка копируя текущие состояния регистров родителя - Процесс потомок становится выполняемым и помещается в очередь планировщика - Для потомка установить возвращаемое значение в - Для родителя возвращается PID потомка Очевидно, что если после fork сразу использовать exec, то в копировании образа памяти родительского процесса нет необходимости. Один из подходов – метод копирования при записи. Страницы данных и стека родителя временно получают атрибут только для чтения и помечаются как копируемые при записи. Потомок получает собственную копию карт трансляции адресов, но использует те же самые страницы, что и родитель. Если любой из этих двух процессов попытается изменить страницу, произойдет исключительная ситуация, ядро запустит соответствующий обработчик, который, увидев пометку копирования при записи, создаст копию страницы, которую уже можно изменять. Таким образом создаются копии только тех страниц памяти, которые изменяются в одном из процессов. Второй подход – использование системного вызова vfork, который не копирует страницы памяти. Процесс родитель предоставляет свое адресное пространство потомку и блокируется до тех пор, пока потомок не выполнит exec или exit, после чего ядро вернет родителю его адресное пространство и переведет его из состояния ожидания.

Для изменения образа памяти и запуска новой программы дочерний процесс выполняет системный вызов execve. Вызов заменяет весь образ памяти процесса файлом, имя которого указано в первом параметре. Как правило, у вызова имеется еще два параметра: указатель на массив аргументов и указатель на массив переменных окружения. Например, при выполнении команды cp file1 file2 произойдет следующее: оболочка с помощью fork создаст дочерний процесс, далее с помощью exec будет помещен в память файл cp (код программы копирования), а вторым аргументом вызова будет указатель на массив параметров, содержащих имена файлов. Вызов выполняет следующие действия:

- Разбирает путь к исполняемому файлу и осуществляет доступ к нему - Проверяет, есть у процесса полномочия на выполнение файла - Читает заголовок, чтобы убедиться что файл исполняемый - Идентификаторы пользователя и группы UID и GID изменяются на соответствующие владельцу файла - Копируются передаваемые аргументы и переменные среды в пространство ядра, подготавливая текущее пользовательское пространство к уничтожению - Выделяется пространство своппинга для областей данных и стека - Освобождается старое адресное пространство и связанное с ним пространство своппинга - Выделяются карты трансляции адресов для нового текста, данных и стека - Устанавливается новое адресное пространство - Аргументы и переменные среды копируются обратно в новый стек приложения - Все обработчики сигналов сбрасываются в действия по умолчанию - Инициализируется аппаратный контекст Родительский процесс может ожидать окончания дочернего с помощью системного вызова waitpid. В качестве первого параметра выступает pid дочернего процесса, либо –1, если достаточно дождаться завершения любого из них. Вторым параметром передается указатель, который будет установлен на статус завершения дочернего процесса. Вызов wait тоже позволяет ожидать завершения работы потомка, однако без указания какого именно. Wait возвращает PID завершившегося процесса, освобождает его структуру proc, сохраняет его статус выхода в соответствующей переменной. Если работу завершили несколько дочерних процессов, то обработан будет только один из них. Пример кода создания дочернего процесса:

{waitpid(-1,&status,0); } // код родительского процесса else execve (command, parameters,0); // а это дочерний процесс Вызов exit завершает процесс. При этом выполняется:

- Отключаются все сигналы - Закрываются открытые файлы - Освобождается файл программы и другие ресурсы - Делается запись в журнал - Сохраняются данные об использованных ресурсах и статус выхода в структуре proc - Состояние процесса изменяется на SZOMB, его структура proc помещается в список процессов-зомби - Все потомки процесса получают в качестве нового родителя системный процесс init - Освобождается адресное пространство, область u, карты трансляции адресов и пространство своппинга - Родителю процесса посылается сигнал SIGCHLD - Будится родительский процесс - Вызывается swtch для перехода к следующему процессу После выполнения вызова процесс находится в состоянии зомби. В этом состоянии не освобождена структура proc, данные из которой могут понадобиться родителю. Соответственно родитель и отвечает за ее освобождение. Здесь существует проблема. Если родительский процесс завершен раньше дочернего, то дочерний усыновляется процессом init. Все в порядке.

Если дочерний завершается раньше, а родитель не вызывает wait, который освобождает proc, то процесс-зомби так и останется. Эти процессы видны при вызове ps, однако завершить их невозможно, поскольку они уже завершены. Кроме того, они продолжают занимать структуру proc, число которых в таблице процессов как правило, ограничено.

В Windows и созданием процесса и запуском в нем нужной программы управляет функция CreateProcess. Родительский и дочерний процессы имеют собственные адресные пространства, различные изначально. Процессы в Windows идентифицируются как дескрипторами, так и идентификаторами процессов. GetCurrentProcess и GetCurrentProcessId возвращают дескриптор и идентификатор соответственно. Завершается процесс функцией ExitProcess. Ожидание завершения процесса или группы процессов выполняется функциями WaitForSingleObject и WaitForMultipleObject. Во втором случае происходит ожидание либо одного из указанных объектов либо всех. Выполнение дочернего процесса не зависит от родительского.

Функция CreateProcess выполняет следующие действия:

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

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

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

При реализации на уровне ядра, таблица потоков единая для всех процессов. Ядро в общем случае может при блокировании потока выбрать новый, не принадлежащий текущему процессу. В терминологии UNIX такие потоки часто называют “легковесными процессами”. (LWP, lightweight process). В отличие от пользовательских потоков, при блокировке одного LWP остальные продолжают работать. Поскольку все потоки LWP планируются на выполнение ядром независимо друг от друга, но в отличие от полновесных процессов, разделяют общее адресное пространство, при доступе к переменным, используемым несколькими LWP, требуется применение специальных механизмов синхронизации на уровне ядра. Все запросы, которые могут блокировать поток, реализуются как системные, что увеличивает временные издержки. Чтобы их снизить некоторые системы после завершения потока не уничтожают его структуры, только помечая, как неработающий. При запросе на создание нового потока используются уже готовые структуры. В Windows именно потоки, а не процессы являются объектами диспетчеризации. Т.е. планировщик выбирает из очереди готовый поток, а не процесс.

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

Потоки в Windows создаются функцией CreateThread. Завершить поток можно функцией ExitThread, либо возврат из функции потока с использованием кода завершения в качестве возвращаемого значения. Функции GetCurrentThread и GetCurrentThreadId позволяют получить дескриптор и соответственно идентификатор вызывающего потока, OpenThread позволяет получить дескриптор потока по известному идентификатору. Функции SuspendThread и ResumeThread позволяют приостановить поток и возобновить его выполнение. Ожидание завершения потока выполняется функциями WaitForSingleObjects и WaitForMultipleObjects. CreateRemoteThread позволяет создать поток в другом процессе.

POSIX описывает стандарт библиотеки pthreads для поддержки потоков. Поддержка включена в ряд реализаций UNIX и Linux. Соответственно создание и завершение потока соответствуют системные вызовы pthread_create и pthread_exit, для организации ожидания завершения потока pthread_join.

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

В архитектуру современных процессоров включена возможность работать с задачами (Task), объединяющими в себе понятие потока и процесса. Это при разработке ОС позволяет построить соответствующие дескрипторы как для процесса, так и для потока.

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

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

- прием запроса на прерывание и его идентификация - запоминание состояния прерванного процесса. Сохраняется счетчик команд, регистры процессора, а также другая информация.

- Передача управления подпрограмме обработки прерываний. В простейшем случае в счетчик команд заносится начальный адрес обработчика, а в регистры – информация из слова состояния.

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

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

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

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

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

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

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

Учет приоритетов может быть как аппаратным, так программным на уровне ОС.

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

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

- С абсолютными приоритетами. Всегда обслуживается прерывание с наивысшим приоритетом. Для реализации маскируются все запросы с низшим приоритетом. При этом возможно многоуровневое прерывание.

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

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

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

В UNIX для оповещения процесса о возникновении системных событий используются сигналы. Они же могут использоваться и как средство синхронизации и обмена данными. Сигналы позволяют вызвать какую-либо процедуру при возникновении события из их определенного набора. Процесс состоит из двух этапов – генерирования и доставки. Число поддерживаемых сигналов в различных системах различно. POSIX определяет стандартные символические имена для наиболее часто используемых сигналов. Каждый сигнал обладает некоторым действием, которое производится ядром системы, если процесс не имеет альтернативного обработчика. Их всего пять:

- аварийное завершение abort. Завершает процесс, создавая дамп состояния процесса, который может использоваться в дальнейшем при отладке и т.д.

- выход exit. Завершает процесс без создания дампа - игнорирование ignore. Игнорировать сигнал - Остановка stop. Приостанавливает процесс - Продолжение continue. Возобновляет работу приостановленного процесса Процесс может переопределить действия по умолчания для любого сигнала, в т.ч. и запуск определенной в приложении фйнкции – обработчика сигнала. Процесс может временно блокировать сигнал. Сигналы SIGKILL и SIGSTOP являются специальными, и процесс не может их блокировать, игнорировать или определять собственные обработчики. Основными источниками сигналов являются:

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

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

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



Pages:     || 2 | 3 |


Похожие работы:

«КОМИССИЯ ПРИ ПРЕЗИДЕНТЕ РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ГОСУДАРСТВЕННЫМ НАГРАДАМ МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ О ПОРЯДКЕ ОФОРМЛЕНИЯ И ПРЕДСТАВЛЕНИЯ ДОКУМЕНТОВ О НАГРАЖДЕНИИ ГОСУДАРСТВЕННЫМИ НАГРАДАМИ РОССИЙСКОЙ ФЕДЕРАЦИИ 1. Настоящие Методические рекомендации содержат ряд практических советов и предложений по оформлению и представлению наградных документов в соответствии с Положением о государственных наградах Российской Федерации, утвержденным Указом Президента Российской Федерации от 7 сентября 2010 года...»

«1 СМОЛЕНСКИЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ ПСИХОЛОГИИ И ПРАВА Корытова Елена Анатольевна ПРОФЕССИОНАЛЬНО-ЭТИЧЕСКИЕ ОСНОВЫ СОЦИАЛЬНОЙ РАБОТЫ Учебно-методическое пособие для студентов, обучающихся по специальности 040101.65 (350500) социальная работа - заочная форма обучения Смоленск, 2008 2 ПРОГРАММА (СОДЕРЖАНИЕ) УЧЕБНОЙ ДИСЦИПЛИНЫ Тема 1. Этика как наука (2ч.) Понятие этики. Этика в древнегреческой философии. Мораль и нравственность. Этика как система научного знания. Уровни этической...»

«Г.Н. АЛЕКСЕЕВА ТЕОРИЯ БУХГАЛТЕРСКОГО УЧЕТА • ИЗДАТЕЛЬСТВО ТГТУ • Министерство образования и науки Российской Федерации Тамбовский государственный технический университет Г.Н. АЛЕКСЕЕВА ТЕОРИЯ БУХГАЛТЕРСКОГО УЧЕТА Утверждено Ученым советом в качестве учебного пособия для студентов вузов экономических специальностей Тамбов •ИЗДАТЕЛЬСТВО ТГТУ• ББК У052.2я73- А Рецензенты: Кандидат экономических наук, доцент Н.А. Зелепукина Кандидат экономических наук, профессор В.В. Быковский Алексеева Г.Н. А471...»

«СМОЛЕНСКИЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ В.В. Селиванов Общая психология Учебно-методическое пособие (для студентов заочной формы обучения, обучающихся по специальности 030301.65 (020400)-Психология) Смоленск, 2008 1. СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ. Раздел 1. Предмет и методы психологической науки. Тема 1. Предмет общей психологии. Психическое в основных направлениях современной психологии. Психология как наука о закономерностях развития и функционирования психики как особой формы жизнедеятельности....»

«Уважаемые выпускники! В перечисленных ниже изданиях содержатся методические рекомендации, которые помогут должным образом подготовить, оформить и успешно защитить выпускную квалификационную работу. Рыжков, И. Б. Основы научных исследований и изобретательства [Электронный ресурс] : [учебное пособие для студентов вузов, обучающихся по направлению подготовки (специальностям) 280400 — Природообустройство, 280300 — Водные ресурсы и водопользование] / И. Б. Рыжков.— СанктПетербург [и др.] : Лань,...»

«Министерство образования Республики Беларусь Учреждение образования ГРОДНЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ЯНКИ КУПАЛЫ МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ для студентов специальностей 1-02 03 06-01 – Английский язык, 1-02 03 06-02 – Немецкий язык, 1-02 03 06-04 – Французский язык, 1-21 06 01-01 – Современные иностранные языки, 1-23 01 02 – Лингвистическое обеспечение межкультурных коммуникаций Гродно 2007 УДК 378 (075) ББК 74.580я73 М54 Составители: Середа...»

«Научно-методическое обеспечение проектирования нового поколения основных образовательных программ, реализующих федеральные государственные образовательные стандарты высшего профессионального образования ПРОЕКТИРОВАНИЕ ОСНОВНЫХ ОБРАЗОВАТЕЛ ЬНЫХ ПРОГРАММ, реализующих федеральные гос ударственные образовательные стандарты высшего профессионального о бразования Методические рекомендации для руководителей и актива учебно-методических объединений вузов МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ...»

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

«СОКОЛОВА М.Е., БЫСТРЮКОВ В.Ю. Россия, Самара ГОУ ВПО Российский государственный гуманитарный университет. Филиал в г. Самаре ЭЛЕКТРОННЫЙ УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС СОЦИОЛОГИЯ УПРАВЛЕНИЯ ДЛЯ СТУДЕНТОВ ОЧНОЙ И ЗАОЧНОЙ ФОРМ ОБУЧЕНИЯ СПЕЦИАЛЬНОСТИ 032001 ДОКУМЕНТОВЕДЕНИЕ И ДОКУМЕНТАЦИОННОЕ ОБЕСПЕЧЕНИЕ УПРАВЛЕНИЯ Аннотация: Электронный учебно-методический комплекс по дисциплине Социология управления предназначен для студентов очной и заочной форм обучения специальности Документоведение и...»

«Электронный учебник ЭКОНОМИЧЕСКИЙ АНА ЛИЗ ХОЗЯЙСТВЕННОЙ ДЕЯТЕЛЬНОСТИ предназ Объектом электронного учебника является издание: начен для студентов экономических специальностей. Маркарьян Э.А. Экономический анализ хозяйственной деятельности : учебное В его основу положен учебник Экономический пособие / Э.А. Маркарьян, Г.П. Герасименко, С.Э. Маркарьян. — М. : КНОРУС, 2008. анализ хозяйственной деятельности, авт. Э.А. Мар Рекомендовано УМО по образованию в области финансов, учета и мировой...»

«ОГЛАВЛЕНИЕ 1. ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ - ПСИХОЛОГИЯ ОБЩЕНИЯ, ЕЕ МЕСТО В СТРУКТУРЕ ОСНОВНОЙ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ 2. КОМПЕТЕНЦИИ ОБУЧАЮЩЕГОСЯ, ФОРМИРУЕМЫЕ В РЕЗУЛЬТАТЕ ОСВОЕНИЯ ДИСЦИПЛИНЫ – ПСИХОЛОГИЯ ОБЩЕНИЯ. 3. ОБЪЕМ ДИСЦИПЛИНЫ И ВИДЫ УЧЕБНОЙ РАБОТЫ 4. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ 4.1. Лекционный курс 4.2. Практические занятия 4.3. Самостоятельная внеаудиторная работа студентов 5. МАТРИЦА РАЗДЕЛОВ УЧЕБНОЙ ДИСЦИПЛИНЫ И ФОРМИРУЕМЫХ В НЕЙ ОБЩЕКУЛЬТУРНЫХ И ПРОФЕССИОНАЛЬНЫХ КОМПЕТЕНЦИЙ 5.1. Разделы...»

«Утверждаю Председатель Высшего Экспертного совета В.Д. Шадриков 26 ноября 2013 г. ОТЧЕТ О РЕЗУЛЬТАТАХ НЕЗАВИСИМОЙ ОЦЕНКИ ОСНОВНОЙ ПРОФЕССИОНАЛЬНОЙ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ ПОДГОТОВКИ СПЕЦИАЛИСТОВ СРЕДНЕГО ЗВЕНА 111402 Обработка водных биоресурсов ГБОУ СПО ЯНАО Ямальский полярный агроэкономический техникум Разработано: Менеджер проекта: А.Л. Дрондин Эксперт АККОРК: О.В. Бредихина. Москва – Оглавление I. ОБЩАЯ ИНФОРМАЦИЯ О ПРОФЕССИОНАЛЬНОМ ОБРАЗОВАТЕЛЬНОМ УЧРЕЖДЕНИИ II. ОТЧЕТ О РЕЗУЛЬТАТАХ...»

«М.Б. Хадиев, Е.А. Новиков ГАЗОПЕРЕКАЧИВАЮЩИЕ АГРЕГАТЫ МАГИСТРАЛЬНЫХ ГАЗОПРОВОДОВ КОМПРЕССОРНЫЕ УСТАНОВКИ И АГРЕГАТЫ Лабораторный практикум 2007 1 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Казанский государственный технологический университет М.Б. Хадиев, Е.А. Новиков ГАЗОПЕРЕКАЧИВАЮЩИЕ АГРЕГАТЫ МАГИСТРАЛЬНЫХ ГАЗОПРОВОДОВ КОМПРЕССОРНЫЕ УСТАНОВКИ И АГРЕГАТЫ Лабораторный практикум Казань КГТУ УДК 621. ББК Х Хадиев, М.Б....»

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. М.В. ЛОМОНОСОВА Факультет вычислительной математики и кибернетики Ю.Н. Киселёв, С.Н. Аввакумов, М.В. Орлов ОПТИМАЛЬНОЕ УПРАВЛЕНИЕ. ЛИНЕЙНАЯ ТЕОРИЯ И ПРИЛОЖЕНИЯ Учебное пособие для студентов факультета ВМиК МГУ Москва 2007 УДК 517.977.5 ББК 22.161.8 K?? Печатается по решению редакционно-издательского совета факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова Р е ц е н з е н т ы: акад. Коровин С.К. проф. Никольский М.С. Киселёв...»

«Уважаемые коллеги! Данные методические материалы были подготовлены Московским отделением Общероссийской общественной организации малого и среднего предпринимательства ОПОРА РОССИИ совместно с Московским фондом подготовки кадров и содействия развитию инновационной деятельности и Московским Банком ОАО Сбербанк России. Материалы, собранные в этом пособии, затрагивают наиболее значимые общие аспекты начала предпринимательской деятельности, связанные с государственной регистрацией собственного дела,...»

«Пределы роста. 30 лет спустя. Донелла Медоуз, Йорген Рандерс, Деннис Медоуз. Учебное пособие для ВУЗов. Москва. ИКЦ АКАДЕМКНИГА.2007. 342 стр. Перевод – Е.С.Оганесян. Конспект – С.И.Забелин СПЕЦИАЛЬНОЕ ПРЕДИСЛОВИЕ. Я рад, что эта книга может быть опубликована на русском языке, поскольку россияне самым непосредственным образом участвовали в нашем проекте с момента его начала более чем 35 лет назад. Джермен Гвишиани был одним из учредителей Римского клуба, сформулировавшего задачу и оказавшего...»

«Смоленский промышленно-экономический колледж Планы семинарских занятий Дисциплина Математика Курс: 1 Семестр: 1 Специальность: все специальности социально-экономического и технического профиля Семинар №1 Тема Введение. Роль математики в современной системе наук. Предмет и задачи дисциплины Цель: 1) получить представление об истории возникновения, развития математики как основополагающей дисциплины естественно-математического цикла; 2) определить роль математики в современной системе наук; 3)...»

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

«Римское право: учебное пособие, 2011, 144 страниц, Владимир Иванович Кайнов, 5997801594, 9785997801595, СПбГИЭУ, 2011. Пособие предназначено для студентов специальности 030501 - Юриспруденция и направления 030500 - Юриспруденция Опубликовано: 22nd February 2012 Римское право: учебное пособие СКАЧАТЬ http://bit.ly/1ouvXd История отечественного государства и права (документы, таблицы, словарь) : учебное пособие, Владимир Валентинович Фортунатов, 1999, History, 143 страниц.. История государства и...»

«Министерство образования и науки Краснодарского края ГБОУ СПО АМТ КК РАБОЧАЯ ПРОГРАММА ПРОФЕССИОНАЛЬНОГО МОДУЛЯ ПМ.02 Ведение бухгалтерского учета источников формирования имущества, выполнение работ по инвентаризации имущества и финансовых обязательств организации 2012 1 ОДОБРЕНА УТВЕРЖДАЮ методическим советом техникума Зам. директора по УР Протокол № _ _ Л.А. Тараненко от 4 июля 2012г. 5 июля 2012 г. РАССМОТРЕНА Цикловой методической комиссией Экономика и бухгалтерский учет Протокол № от 3...»






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

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