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

Основные функции ОС можно классифицировать по 2 признакам

Читайте также:
  1. A. ФУНКЦИИ КНОПОК БРЕЛКА
  2. Bis. Категория истины (возможно, под другим именем) является центральной категорией любой возможной философии.
  3. I. ОСНОВНЫЕ ИТОГИ БЮДЖЕТНОЙ ПОЛИТИКИ В 2009 ГОДУ И В НАЧАЛЕ 2010 ГОДА
  4. I. ОСНОВНЫЕ ПОЛОЖЕНИЯ
  5. I. ОСНОВНЫЕ РЕЗУЛЬТАТЫ БЮДЖЕТНОЙ ПОЛИТИКИ В 2010 ГОДУ И В НАЧАЛЕ 2011 ГОДА
  6. I. Основные результаты и проблемы бюджетной политики
  7. I. Основные результаты и проблемы бюджетной политики

1.Функции, реализуемые виртуальными машинами

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

-1.2 Выполнение – последовательное и параллельное выполнение программ, компоновка, адресное размещение и т.д.

-1.3 Дополнительные услуги – помощь при отладке, обработка аварийных ситуаций, измерение времени выполнения и т.д.

2.Функции контроля и распределения ресурсов

-2.1 Управление физическими ресурсами – выделение оперативной памяти, внешней памяти, устройств ввода –вывода

-2.2 Распределение и обмен информации между пользователями.

-2.3 Защита от несанкционированного доступа

-2.4 Управление процессами

-2.5 Дополнительные услуги: сбор статистической информации, измерение производительности и т.д.

1.3. Организация ОС

ОС условно делится на несколько уровней:

1)Ядро ОС – выполняет роль интерфейса системы с аппаратурой и включает основной набор утилит ОС, которая составляет виртуальную машину

2)Системный уровень управления устройствами ввода –вывода – обеспечивает согласованную работу устройств ввода-вывода

3)Уровень системных программ – предназначен для работы пользовательских программ и программ-комуникаций

4)Пользовательский уровень

1 уровень – графическая оболочка, программы

2 уровень – драйверы сети, компилятор интерпретатор

3 уровень – драйверы устройств, ассемблер, связывающий загрузчик

4 уровень – аппаратный интерфейс, ядро ОС

5 уровень – Техническое обеспечение, абсолютный загрузчик,RAM

При рассмотрении ОС целесообразно выделить в ней следующие функциональные составляющие:

1.Пользовательский интерфейс, содержащий программу-интерпретатор с набором команд, которые могут использоваться прикладными программами

Command com, интерфейс Windows, KDE Gnome, XFCE в Linux

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

API

3.Интерфейс устройств – позволяет периферийным устройствам ввода-вывода осуществлять операции ввода-вывода с использованием набора команд операционной системы

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

1.4. Основные понятия ОС

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

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

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

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

5.Процессы и нити.

Тема 2. Строение ОС

2.1. Монолитное ядро(monolithic kernel)

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

2.2. Слоеные системы (Layered systems)

Производя структуризацию, можно разбить всю систему на ряд менее крупных подсистем определенных уровней с четкими связями между ними. При этом объекты уровня n могут вызывать объекты уровня n-1. Нижним уровнем в таких системах обычно является оборудования, верхним – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль. Впервые такой подход был применен при создании ОС THE(Technishe Hogeschool Eindhoven) в 1968 г. Эта система имела следующие уровни:

5.Интерфейс пользователя

4.Управление ввода-вывода

3.Драйвер устройства связи оператора и консоли

2.Управление памятью

1.Планирование задач и процессов

0.Оборудование

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

2.3. Микроядерная архитектура (microkernel architecture)

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

Программа А Менеджер файловой системы

Программа В Менеджер памяти

 

Микроядро

Привилегированный режим

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

2.4. Смешанные системы.

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

2.5. Файловая система. (FAT,FAT32,HPFS,NTFS.ext3PS)

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

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

Запрос к файлу

Символьный уровень

Определение посимвольного имени уникального имени файла

Базовый уровень

Определение по уникальному имени характеристик файла

Уровень проверки прав доступа

Проверка допустимости операции на заданном файле

Логический уровень

Определение координат логической записи в файле

Физический уровень

Определение номера физического блока, содержащего запись

Подсистема ввода-вывода

Тема 3. Классификация ОС.

Рассмотрим классификацию ОС по нескольким наиболее важным признакам

3.1. Классификация ОС по особенностям алгоритмов управления ресурсами.

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

Поддержка многозадачности. По числу задач ОС делятся на 2 класса: однозадачные (MS-DOS,MSX) и многозадачные (Windows,Unix,Linux). Однозадачные ОС в основном выполняют функцию виртуальной машины, упрощая процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управлений периферийными устройствами, средствами управления файлов и средства общения с пользователем. Многозадачные ОС, кроме перечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор,RAM, файлы и внешние устройства. Существует вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время, поэтому его способ распределения между процессами во многом определяет специфику ОС. При этом основным различием между вытесняющим (Windows NT,Unix,OS/2) и не вытесняющие(NetWare, Windows 3.x) вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае планирование целиком сосредоточено в ОС, а во втором распределено между системой и прикладными программами. При не вытесняющей многозадачности активный процесс выполняется до тех пор, пока не отдаст управление операционной системе, и уже ОС выбирает из очереди другой готовый процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается самой ОС.

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

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

3.2. Классификация ОС по особенностям аппаратных платформ.

На свойства ОС оказывают влияние аппаратные средства, на которые она ориентирована. По типу аппаратуры различают ОС персональных компьютеров, мини- компьютеров, мейнфреймов, кластеров и сетей. Как правило, ОС мейнфрейма являются более сложными и функциональными, чем ОС персонального компьютера. Так, например, функции по клонированию потока выполняемых задач реализуются путем использования сложных приоритетных дисциплин и требуют большей вычислительной мощностей, чем в ОС ПК. Сетевые ОС имеют в своем составе средства передачи сообщений между компьютерами по линиям связи, которые обычно не нужны в автономных ОС. На основе этих сообщений сетевая ОС поддерживает разделение ресурсов компьютера между удаленными пользователями, подключенными к сети. Для поддержания функций передачи сообщений сетевые ОС содержат компоненты, реализующие коммуникационные протоколы (TCP/IP, IPX и другие). Более жесткие требования предъявляют к ОС кластер. Кластер – это слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений и представляющейся пользователю единой системы. Поддержка кластеров со стороны ОС сводится к синхронизации доступа, обнаружению отказов и динамической реконфигурации системы. Одой из первых разработок в области кластерных технологий была ОС от компании Digital Equipment на базе компьютеров VAX. Сейчас для построения кластеров чаще всего используют UNIX. Наряду с ОС, ориентированный на совершенно определенный тип аппаратной платформы, существуют также ОС, разработанные таким образом, что они могут быть легко перенесены с одной аппаратной платформы на другую. Примером такой ОС является UNIX. В подобных системах аппаратно зависимые части локализованы, и при переносе систем на новую платформу переписываются только они. Остальная часть ОС пишется на машинном независимом языке (например, С).

3.3. Классификация ОС по особенностям областей использования.

Многозадачные ОС подразделяются на 3 типа в соответствии с использованными при их разработки эффективности.

1)Системы пакетной обработки

2)Системы разделения времени(Unix,Windows,Linux)

3)Системы реального времени(QNX,RT/11)

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

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

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

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

3.4. Особенности методов построения ОС.

Современные ОС, также как и приложения, строятся на основе объектно-ориентированного подхода. Достоинства такого подхода очевидны: накопление удачных решений в виде стандартных объектов, возможность создания новых объектов на базе уже имеющихся с помощью механизма наследования, хорошая защита данных засчет их инкапсуляции во внутренние структуры объекта, а также структурированность системы, состоящих из набора хорошо определенных объектов. Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для разных ОС. Многие современные ОС поддерживают прикладные среды Ms-Dos, Windows, UNIX, POSIX, OS/2, или хотя бы часть из них. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, где различные серверы, реализующие прикладную среду той или иной ОС, работают как отдельные модули.

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

1)Наличие единой справочной службы разделяемых ресурсов.

2)Единая служба времени.

3)Использование механизма вызова удаленных процедур(RPC) для прозрачного распределения вычислений по машинам.

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

5)Наличие других распределенных служб.

Тема 4. Обзор ОС.

4.1. Краткая история эволюции вычислительных систем.

Первый период (1945-1955 гг.)- ламповые машины, нулевой этап эволюции ОС. В Середине 40-х гг. были созданы первые ламповые вычислительные устройства, а также разработан принцип программы, хранимой в памяти машины. В данном этапе программирование осуществлялось исключительно на машинном языке. Об ОС не было и речи. Все задачи организации вычислительного процесса решались вручную программистом с пульта управления. Программа загружалась в память машины в лучшем случае с перфокарт, но обычно с помощью панели. Вычислительная система выполняла одновременно только одну операцию. Отладка программы велась с пульта управления с помощью изучения состояния памяти и регистров машины. В конце этого периода появляется первое системное ПО. В 1951-1952 годах возникают прообразы первых компиляторов символьных языков (Fortran,Algol). В 1954 году появляется ассемблер для процессора IBM-701. В целом же 1 период характеризуется крайне высокой стоимостью ОС, их малым кол-вом и низкой эффективностью.

Второй период (1955-начало 60х гг.)- компьютеры на основе транзисторов и пакетные ОС. Новый период в эволюции вычислительной техники связан с новой технической базой – полупроводниковых элементов. Применение транзисторов вместо электронных ламп повысила надежность компьютера, снизилось потребление ВМ электроэнергии, системы охлаждения стали проще, размеры компьютеров уменьшились, эксплуатация и обслуживание вычислительной техники подешевели. Начали развиваться алгоритмические языки – Algol-58(60),LISP,COBOL,PL-1 и т.д. Появляются первые настоящие компиляторы, редакторы связей, библиотеки служебных и математических подпрограмм. Программирование упрощается. Именно в этот период происходит разделение персонала на программистов и операторов, специалистов по эксплуатации и разработчиков вычислительных систем. Для повышения эффективности использования компьютера программные задания с похожими ресурсными запросами начинают собирать вместе, создавая пакет заданий. Появляются первые системы пакетной обработки, которые автоматизируют очередность, и тем самым увеличивают эффективность загрузки процессора. При реализации систем пакетной обработки разработан формализованный язык управления заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет выполнить на вычислительной машине. Системы пакетной обработки стали первыми системными программами, предназначенными для управления техническими процессами, и послужили прообразом современных ОС.

Третий период (начало 60х-1980 гг.)- компьютеры на основе интегральных микросхем и первые многозадачные ОС. В это время в технической базе произошел переход от отдельных полупроводниковых элементов в виде транзисторов к интегральным микросхемам. Вычислительная техника становится более надежной и дешевой, растет сложность и количество задач, решаемых компьютером. Повышается производительность процессоров. Для хранения кода программы и результатов ее работы вместо перфокарт используют сначала магнитные ленты, а затем магнитные диски. В начале третьего периода появилась идея создания семейств программно- совместимых машин, работающих под управлением одной и той же ОС. Первым таким семейством стала серия IBM/360. В начале операции ввода вывода осуществлялись с использованием других, более простых, отдельно стоящих компьютеров. В дальнейшем они выполняются на том же компьютере. Такой прием получил название spooling – подкачка/откачка данных. Введение данной техники в пакетные системы позволило совместить реальные операции ввода вывода одного задания с выполнением другого задания, что привело к появлению аппарата прерываний для извещения процессора об окончании операций. Появление магнитного диска привело к дальнейшему развитию вычислительных систем. При обработке пакета заданий на магнитной ленте очередность запуска заданий определялась порядком их ввода. При обработке пакета заданий на магнитном диске появляется возможность выбора очередного выполняемого задания. В пакетных системах появляется планирование заданий, т.е. определение очередности заданий на выполнение в зависимости от их требования к ресурсам и срочности. Дальнейшее повышение эффективности было достигнуто с помощью мультипрограммирования. Идея этого принципа в следующем: пока одна программа выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при однопрограммном режиме, а выполняет другую программу. Концепция мультипрограммирования произвела революцию в строении вычислительных систем, преобразив как аппаратную, так и программную части. Логическим продолжением систем мультипрограммирования стали системы разделения времени. В них процессор переключается между задачами не только на время операций ввода-вывода, но и по прошествии определенного интервала времени. Эти переключения происходят так часто, что пользователи могут взаимодействовать со своими программами во время их выполнения, засчет чего создается иллюзия мультизадачной интерактивности. В результате появляется возможность одновременной работы многих пользователей на одной компьютерной системе. В дальнейшем для увеличения количества одновременно работающих пользователей была внедрена идея неполного нахождения исполняемой программы в RAM. Основная часть программы находилась на диске, а необходимый для дальнейшего выполнения фрагмент загружался в RAM. Эта идея реализовалась с помощью механизма виртуальной памяти, основным достоинством которого является иллюзия неограниченной RAM ЭВМ.

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

4.2. DOS (Disk Operation System).

Первая версия операционной системы для компьютера IBM PC – MS-DOS 1.0 была создана фирмой Microsoft в 1963. В этот период работали на восьмиразрядных компьютерах, в силу чего MS-DOS стала стандартом для 16 разрядных компьютеров. MS-DOS представляла собой комбинацию стилей и особенностей ОС UNIX и CP/M. Последние версии системы включают средства для эффективного использования оперативной памяти сверх 640 кбайт, позволяют работать с логическими дисками более 32 Мб, переносить DOS и драйверы устройств в память, освобождая место в обычной памяти для прикладных программ, и т.д.

Требования:

RAM: 640 кб (4Мб)

CPU: IBM 20286(386)

HDD: 10 Мб

4.3. Windows NT.

98,95,2000,XP,OS/2,MacOS – самостоятельное обучение.

Архитектура Windows NT создавалась с нуля с учетом предъявляемых к современным ОС требованиям. Основные характеристики Windows NT:

1)Сохраняет привычный интерфейс Windows, реализует поддержку существующих файловых систем(FAT32,NTFS,HPFS) и различных приложений, написанных для MS-DOS, OS/2, Windows 3.x.

Включает различные сетевые протоколы.

3)Обладает переносимостью, может работать как на CISC процессорах (80386 и выше), так и на RISC (MIPS R4000, Intel Pentium P54).

4)Обладает масштабированностью, т.е. способно полностью использовать возможности симметричных мультипроцессорных систем с числом процессоров до 32.

5) Имеет эффективную систему безопасности. В ответственных случаях критическим приложениям обеспечивается полностью изолированное окружение.

6)Имеет встроенные широкие сетевые возможности и поддерживает распределенную обработку. Она ориентирована на работу в разнородных сетях благодаря разным транспортным протоколам и использованию средств «клиент-сервер» высокого уровня.

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

Windows NT применяется при организации работы нескольких пользователей на одном компьютере для создания небольшой сети в пределах организации, а также в качестве WEB или FTP сервера

Требования:

RAM: 32 Мб (64)

CPU: IP-166 МГц (200)

HDD: 300 Мб

4.4. UNIX

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

Особенности UNIX:

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

2)Кластеризация. Многие UNIX системы позволяют организовывать кластер, т.е. многомашинный вычислительный комплекс. В кластере все ресурсы компьютеров являются разделяемыми и доступными для любого пользователя в соответствии с его правами.

3)Графический интерфейс

UNIX может поддерживать несколько графических интерфейсов. Наиболее распространенными менеджерами являются менеджеры Windows Motif Manager, X Windows System и т.д.

4)Инсталяцция

Процесс инсталляции UNIX достаточно сложен и требует выбора значительного числа параметров. В связи с тем, что UNIX – коммерческая система, и причем достаточно дорогая, она больше подходит для крупных организаций или для больших научных учреждениях. UNIX благодаря отказоустойчивости и защищенности хорошо подходит в качестве сервера в сети Интернет (SMTP, NNTP, FTP, Web-сервера). Благодаря возможности кластеризации выполнение задач реального времени и многопроцессорной обработки, UNIX идеально подходит для организации сложных распределены экспериментов или для решения громоздких вычислительных задач.

4.5. Linux

В начале 90 годов Линус Торвальдс при участии программистов из разных стран разработал ОС Linux. Вначале Linux представляла собой PC-версию UNIX, но в отличие от нее обладала весьма существенным достоинством – сама система и многие приложения были бесплатными. Другими ее достоинствами являлись: наличие инструментария разработки, обширная документация, и полный исходный код, распространяемый по лицензии GNU.

Особенности ОС Linux:

1)Совместимость – ядро Linux изначально создавалась как совместимая с UNIX для архитектуры процессоров Intel 80386 и являлась комбинацией идей BSD, UNIX System 5, MINIX. Это многопользовательская ОС, совместимая с рядом стандартов на уровне исходных кодов (POSIX, BSD, System 5), Linux – полноценная ОС семейства UNIX,способная работать с широким спектром аппаратного обеспечения, сетевых протоколов и программных сред.

2)Графический интерфейс. Для него разработаны много программ управления окнами, таких как AfterStep,Wfwm,KDE,GNOM

3)Поддерживаемая файловая система. Linux поддерживает разные файловые системы. Некоторые из них (ext2FS) были созданы специально для Linux. Поддерживаются и другие файловые системы, например, MINIX1,Xenix,FAT, позволяющая прямо обращаться к файлам ОС Microsoft на жестком диске.

4)Сетевые возможности. Поддерживает протокол TCP/IP для работы в сети Интернет, весь спектр клиентов и услуг TCP/IP, таких как FTP,N/VTP,TELNET,POP3/

5)В Linux объединены мощь и гибкость станции. Возможность использования полного набора приложения и полнофункциональный графических интерфейс при незначительном требовании к вычислительным ресурсам.

Требования:

ОП: 8Мб

CPU: IBM 80386

HDD – 100 Мб.

6.Дистрибутивы. Существует огромное множество дистрибутивов Linux – SlackWare, Debian, Gentoo. Одним из популярных является дистрибутив Red Hat. Сильными сторонами его является наличие среды управления пакетами – Package manager, и графическая панель управления.

7.Процесс инсталляции.

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

Систему Linux можно использовать в любой Интрасети для создания FTP архива, Web узла и многое другое. Она работает в многопользовательском и многозадачном режимах, что обеспечивает высокий уровень защиты при разграничении прав доступа пользователя к ресурсам. Кроме того, эта система хорошо подходит для реализации различных научных экспериментов. При установке дополнительного ПО позволяет выполнять программы реального времени. Благодаря наличию оконных менеджеров и офисных пакетов – AplixWare, Open/Office,Staroffice – работа в Linux удобна и проста. Все это позволяет ей составить конкуренцию семейству Windows NT, и сейчас ее можно рекомендовать не только для серверных приложений, но и в качестве домашней настольной системы.

Windows 7,Vista – самостоятельная.

Тема 5. Процессы и их поддержка в ОС.

5.1. Понятие процесса.

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

5.2. Состояния процесса.

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

 

 

Допуск к параметрам

Событие произошло

 


Ожидание Прерывание Выбран для исполнения

События

 

Завершение

работы

 

 

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

1)заканчивает свою работу и попадает в состояние «закончил выполнение»

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

3)В результате возникновения прерываний в системе (прерывание от таймера по истечении кванта процессорного времени) его возвращают в состояние готовности.

В некоторых ОС состояния процесса могут быть более детализированы. Могут появляться некоторые новые варианты перехода из состояния в состояние. Так, например, модель для ОС Windows NT содержит 7 различных состояний, а для UNIX- 9.

5.3. Операции над процессами.

5.3.1. Набор операций.

Процесс не может сам перейти из одного состояния в другое. Этим занимается ОС, совершая определенные операции над процессами. Выделяют 3 пары операций:

1) Рождение процесса - завершение

2) Приостановка (перевод из выполнения в готовность)-запуск(перевод из готовности в исполнение)

3) Блокирование (перевод из выполнение в ожидание)- разблокирование (перевод из ожидания в готовность)

Кроме того, существует еще одна операция, не имеющая пары – изменение приоритета процессора.

Операции создания и завершения процесса являются одноразовыми, все остальные операции, как правило, многоразовые.

5.3.2. Блок управления процессов и контекст процессора.

Блок управления процессом (process control block) – PCB – объект, который определяет процесс для ОС. Представляет собой структуру данных, содержащую всю ключевую информацию о процессе: 1)состояние, в котором находится процесс;

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

3)Содержимое регистров процесса

4)Данные для планирования процесса и управление памятью(приоритет процесса), размер и расположение адресного пространства и т.д.

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

6)Информация об устройствах ввода-вывода, связанных с процессом(закрепленное устройство, таблица открытых файлов и т.д.).

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

5.3.3 Одноразовые операции.

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

 
 
 
 
Процесс 2
Процесс 1

 

 

 


При создании процесса система заводит новый PCB с состоянием рождения, затем заполняет его. Новый процесс получает свой персональный идентификационный номер. Так как количество присутствующих в системе процессов ограничено, то после завершения процесса его номер может быть повторно использован для другого процесса. Существует 2 подхода к выделению ресурсов для процесса наследника. Новый процесс может получить некоторую часть родительских ресурсов, разделяя права на них с процессом родителя и другими процессами-наследниками, или может получить свои ресурсы от непосредственно ОС. После выделения процессу наследнику ресурсов необходимо внести в его адресное пространство программный код и значение данных, а также установить программный счетчик. Здесь также возможны 2 решения. В 1 случае наследник становится дубликатом по регистровому и пользовательскому контекстам. При этом должен существовать способ определения, кто для кого из процессов-двойников является родителем. Во 2 случае процесс-наследник загружается новой программой из какого либо файла. ОС UNIX разрешает рождение процесса только первым способом. Для запуска новой программы необходимо сначала создать копию процесса-родителя, а затем наследник должен заменить свой пользовательский контекст с помощью специального системного вызова. Windows NT допускает только 2 решение. После того, как процесс наделен содержанием, в PCB дописывается оставшаяся информация, и состояние нового процесса изменяется на готовность. После рождения наследников процесс-родитель может продолжать свое выполнение, а может ожидать завершение работы всех или некоторых своих наследников. После того, как процесс завершил свою работу, ОС переводит его в состояние «закончил выполнение» и освобождает все ассоциированные с ним ресурсы, делая соответствующие записи в PCB. При этом сам PCB не уничтожается, а остается в системе еще некоторое время. Это связано с тем, что процесс-родитель после завершения наследника может запросить ОС о причине завершения, или статистическую информацию о его работе. Подобная информация сохраняется в PCB мертвого процесса до запроса родителя, или до конца его деятельности, после чего все следы мертвого процесс окончательно исчезают. В ряде ОС гибель процесса родителя приводит к завершению работы всех его наследников. В других ОС, например, UNIX, процессы- наследники продолжают свое существование и после завершения родителя, при этом PCB наследников изменяется, чтобы генеалогический лес процессов оставался целостным. В других ОС осиротевшие процессы обычно усыновляются одним из системных процессов, который порождается при старте системы и функционирует все время, пока она работает.

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

1)Запуск процесса – из числа процессов, находящихся в состоянии готовности, ОС выбирает один процесс для последующего исполнения и обеспечивает наличие в оперативной памяти данных, необходимых для его исполнения. Состояние процесса изменяется на выполнение, восстанавливаются значения регистров для данного процесса, и управление передается команде, на которую указывает программный счетчик процесса. Все данные извлекаются из PCB.

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

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

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

5.3.5 Переключение контекста.

Рассмотрим операцию разблокирования процесса, ожидающего ввода-вывода

 

 

Выполн. Кода работа оборуд

Процесс 1 выполнение готовность

Процесс2 готовность

 

Прерывание сохр.конт обработка прер перехлест процесса

 

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

5.4. Процессы и нити.

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

Тема 6. Средства синхронизации и взаимодействия процессов.

6.1. Проблемы синхронизации.

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

 

Принт-сервер Печать файла из списка
A1 – прочитать переем. А2- поместить имя в спис. A3 – нарастить NEXT
Процесс А

 

NEXT Файл заказа

 


B1 – прочитать переем. B2- поместить имя в спис. B3 – нарастить NEXT  
Процесс В

 

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

6.2. Синхронизация с использованием блокирующих переменных.

Критическая секция – часть программы, в которой организуется доступ к разделяемым данным. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находилось не более одного процесса. Этот прием называют взаимным исключением. Одним из способов организации взаиного исключения является использование блокирующих переменных. С каждым разделяемым ресурсом связыв двоич переменная. Она равна 1, если ресурс свободен, и 0, если ресурс занят. Рассмотрим фрагмент алгоритма процесса, использующего для взаиного исключения доступа к разделяемому ресурсу D переменную f(D)

Освободить D f(D):=1
Критическая секция Работа с D
Занять пространство f(D)=0
F(D)=1?
Запрос к D

 

 

 

 

 


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

6.3. Синхронизация с использованием событий.

POST(x)
Блокировка процесса с помощью WAIT(x),x – ресурс свободен
Освободить ресурс
Критическая секция программы
Занять память D
Ресурс свободен?
Запрос к D
Блокирующие переменные имеют существенный недостаток. Пока один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет выполнять рутинные действия по опросу блокирующей переменной, растрачивая процессорное время. Для устранения таких ситуаций можно использовать аппарат событий, с помощью которого решаются не только проблемы взаимного исключения, но и более общие задачи синхронизации. В различных ОС аппарат событий реализуется по своему, но в любом случае используются системные функции аналогичного назначения, которое назовем WAIT(x) POST(x), где х – идентификатор некоторого события. Рассмотрим фрагмент алгоритма процесса, использующий эти функции

 

 

Если ресурс занят, то процесс не выполняет циклический запрос, а вызывает системную функцию WAIT(x), x – событие, заключающееся в освобождении ресурса. Функция WAIT(x) переводит активный процесс в состояние ожидания и делает отметку в его блоке управления о том, что процесс ожидает события х. Процесс, который в это время использует ресурс D, после выхода из критической секции выполняет функцию POST(x), в результате чего ОС просматривает очередь ожидающее Х процессов и переводит один из них в состояние готовности.

6.4. Синхронизация с использованием симофора.

Симофоры - обобщающее средство синхронизации процессов, для реализации которых вводятся 2 новых примитива, в общем случае обозначаемые P V. Эти примитивы оперируют над неотрицательными переменными, называемыми симофорами. Пусть S такой симофор. Операции определяются следующим образом: V(S) – переменная S увеличивается на 1 одним неделимым действием. Выборка, увеличение и запоминание не могут быть прерваны, и к S нет доступа во время выполнения этой операции; P(S)- уменьшение S на 1, если это возможно. Если S=0, то процесс, вызвавший P(S), ждет, пока уменьшение станет возможным. P(S) также является неделимой. В частном случае, когда симофор S может принимать только 0 и 1, он превращается в блокирующую переменную. Операция P заключает в себе потенциального процесса перехода процесса в состояние ожидания, а операция V – может активировать другой процесс, приостановленный операцией P. Рассмотрим использование симофоров на примере 2 процесс, один из которых пишет данные в буферный кул, а другой считывает данные из него. Пусть состоит из n буферов. Процесс писатель должен остановиться, когда пул заполнен, и активизироваться при освобождении хотя бы одного буфера. Процесс-читатель, напротив, останавливается, когда все буферы пусты, и активизируется при наличии хотя бы 1 записи. 2 симофора –e – число пустых буфера, f – заполненных. Введем также двоичный симофор B, используемый для взаимного исключения. Предположим, что запись и считывание из пула является критическими секциями:

N=256; e=N f=0 b=1

CreateThread Writer

Writer.Run

CreateThread Reader

Reader.Run

Writer.Run

PrepareNextRecord();// Подготовка следующих записей

P(e);

P(b);//Вход в критическую секцию

AddToBuffer();//Добавить запись в буфер

V(b);

V(f);//увеличиваем кол-во записей

 

Reader.Run

P(f);

P(b);

GetFromBuffer();//считываем из буфера

V(b);

V(f);

ProcessRecord();//обработка записей.

6.5. Тупики.

Приведенные в пункте 6.1 пример иллюстрирует еще одну проблему синхронизации – взаимные блокировки, называемые также deadlock, clinches – клинчи, или тупиками. Рассмотрим пример тупика. Пусть 2 процессам, выполняющимся в режиме мультипрограммирования для работы требуется 2 ресурса, например, принтер и диск.

A2 блокировка
B1 B2
A1
Занять диск Занять принтер Освободить диск Освободить принтер
Занять принтер Занять диск Освободить принтер Освободить диск
Процесс А

 

 

 


После того, как процесс А занял принтер, он был прерван. Управление получил процесс B, который сначала занял диск, но при выполнении следующей команды был заблокирован, так как принтер уже занят процессом А. Управление снова получил процесс А, который в соответствии со своей программой принял попытку занять диск, и был заблокирован, так как диск распределен процессу B. В таком положении процессы А и В могут находиться сколь угодно долго. Все зависит от соотношения скоростей. Они могут либо совершенно независимо использовать разделяемые ресурсы (сценарий В), либо образовывать очереди к разделяемым ресурсам(сценарий Б), либо блокировать друг друга(А). В рассмотренных примерах тупик был образован 2 процессами, но взаимно блокировать могут и большее число процессов. Проблема тупиков включает в себя следующие задачи – предотвращение тупиков, распознавание тупиков, и восстановление системы после тупиков. Тупики могут быть предотвращены при создании программ, т.е. программы должны быть написаны таким образом, чтобы тупик не мог возникнуть ни при каком соотношении взаимных скоростей процессов. Так, если в предыдущем примере процесс А и процесс В запрашивают ресурс в одинаковой последовательности, то тупик невозможен. Второй подход к предотвращению тупиков называется динамическим и заключает в использовании определенных правил при назначении ресурсов процесса. Например, ресурсы могут выделяться в определенной последовательности, общей для всех процессов.


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


<== предыдущая страница | следующая страница ==>
Расчет основных размеров колонны| Определение высоты режущих зубьев из условия свободного размещения стружки во впадине.

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