Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
РЕКОМЕНДУЕМЫЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИСтр 1 из 22Следующая ⇒
ТЕМАТИЧЕСКИЙ ПЛАН
РЕКОМЕНДУЕМЫЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ
Тема № 1. Основы операционных систем.
План: 1.1. Концепция программной системы. 1.2. Эволюция, история развития, назначение и функции ОС. 1.3. Понятие операционной среды. 1.4. Основные аспекты операционных систем.
Понятие операционной среды. При обсуждении функций, выполняемых операционной системой, среди прочих мы отмечали выделение ресурсов и выполнение различных запросов на обслуживание, которые возникают у прикладных процессов и пользователей. Любая операционная система имеет в своем составе набор команд, определяющий ее интерфейс, предназначенный для взаимодействия с приложениями и пользователями. При запуске прикладной программы она может обращаться к операционной системе с соответствующими запросами на выполнение определенных действий или функций. Эти функции операционная система выполняет, запуская соответствующие системные программные модули, входящие в ее состав. При создании машинных программ прикладные программисты могут не знать деталей управления ресурсами вычислительной системы. Из прикладных программ производятся вызовы к операционной системе для получения необходимых функций и сервиса. Набор функций и сервисов, а также правила обращения к ним образуют понятие, которое называют операционной средой. Под операционной средой подразумевают интерфейсы, необходимые программам и пользователям для обращения к управляющей (супервизорной) части операционной системы с целью получения определенных сервисов. Системные функции определяют возможности, которые операционная система предоставляет приложениям (прикладным процессам). Системные запросы могут явно прописываться в тексте программы программистом, либо подставляются автоматически системой программирования на этапе трансляции исходного текста. Каждая операционная система имеет свое оригинальное множество системных функций, вызываемых в соответствии с принятым интерфейсом. Совокупность системных вызовов и соответствующих правил, по которым их следует использовать, определяет интерфейс прикладного программирования (Application Programming Interface, API). Программа, созданная для работы в одной операционной системе, скорее всего не будет работать в другой. Причина этого – различные интерфейсы прикладного программирования. Для преодоления этого ограничения разработчики операционных систем стали создавать программные среды. Программная среда – системное программное окружение, позволяющее выполнять все системные запросы от приложений. Существуют основные (естественные) программные среды и дополнительные программные среды. Программная среда, которая непосредственно образуется кодом операционной системы, называется основной или естественной. Программная среда, организованная путем эмуляции иной операционной среды, называется дополнительной. Операционная система, поддерживающая различные операционные среды, позволяет выполнять программы, созданные не только для данной системы, но и для других операционных систем. В общем случае операционная система может поддерживать несколько операционных сред. Многие современные операционные системы поддерживают по несколько операционных сред. Например, Windows XP помимо приложений, созданных с использованием WinAPI, поддерживает 16-разрядные приложения для Windows, 16-разрядные DOS-приложения, 16-разрядные приложения OS/2. Операционная среда включает как пользовательские, так и программные интерфейсы. Например, операционная система Linux имеет для пользователя интерфейс командной строки. Над набором вводимых команд существует командная оболочка Shell. Команды, естественно, не выполняются сами по себе, командная оболочка (интерпретатор команд) анализирует введенные команды и их аргументы, проверяет синтаксис и только после тщательного анализа запускает соответствующую программу. Помимо интерфейса командной строки поддерживается графический интерфейс – X-Window. Программы, созданные для работы и в среде Linux и в среде линейки Windows NT, на самом низком уровне (говорят, двоичная программа) используют одинаковые команды и форматы данных. Однако, в первом случае происходит обращение к одной операционной среде, а во втором – к другой и программы, без организации дополнительных полноценных программных сред, могут работать только в «родных» средах. Операционная среда – это системное программное окружение, в котором могут выполняться программы, созданные по правилам работы этой среды. Вопросы для самопроверки 1.Перечислите основные функции операционных систем. 2.Определите понятие «операционная среда». 3.Что определяет интерфейс прикладного программирования. 4.Что такое естественные и дополнительные программные среды. 5. В чем заключается идея модульности. 6. Поясните сущность объектной модели современных операционных систем. 7. Назначение (причины существования) особого режима операционной системы. 8. Что понимают под мобильностью операционной системы. 9. Различия в архитектуре монолитных и микроядерных операционных систем.
ГЛОССАРИЙ 1. ОБЪЕКТНАЯ МОДЕЛЬ – Модель, в соответствии с которой работа программной системы описывается взаимодействием объектов различных типов.2. СТЕК – Область основной памяти, используемая для хранения данных.3. УТИЛИТА – Системная программа Тема № 2. Концепция прерывания. Взаимодействие с аппаратным обеспечением.План: 1.1. Функции и классификация прерываний. 1.2. Механизмы прерываний. Механизмы прерываний.
Перейдем к обсуждению механизма обработки прерывания. В общем случае, механизм обработки прерываний может состоять из двух частей – аппаратной и программной. Соотношение этих частей зависит от архитектуры процессора, но обязательным результатом аппаратного механизма является смена состояния процессора. Назовем текущим состоянием процессора содержимое регистров CS, IP и FLAGS. Как известно, в реальном режиме процессора Intel адрес команды, которая должна быть выполнена следующей, хранится в регистрах CS и IP. В момент прерывания эти регистры показывают на ту команду, которая была бы выполнена, если бы не было прерывания. Центральный процессор в архитектуре Intel воспринимает сигнал прерывания между командами, но не во время выполнения. Этот факт значительно упрощает обработку прерывания. Рассмотрим аппаратный механизм обработки прерывания, т. е. ту часть обработки, которая выполняется аппаратурой (процессором) и, с точки зрения операционной системы, происходит автоматически. Если во внешнем устройстве произошло событие, требующее внимание операционной системы, контроллер внешнего устройства выставит на определенный провод (линию IRQ), соединяющий контроллер внешнего устройства с процессором, запрос на прерывание, назовем его сигнал int. Получив сигнал int, процессор отождествляет его с определенной программой обработчиком. Затем текущее состояние процессора, а это адрес следующей команды (содержимое регистров CS и IP) + содержимое регистра FLAGS, аппаратно запоминается в определенном месте оперативной памяти. Например, этим местом может быть стек прерываемой программы. Значит, на аппаратном уровне минимально запоминается адрес следующей команды прерываемой программы + направление ветвления вычислительного процесса на момент прерывания, если прерывается команда условного перехода (данная информация хранится в регистре FLAGS). Далее, вектор (строка) из таблицы векторов прерываний загружается в регистры процессора CS и IP, что автоматически означает начало работы программы обработчика прерываний. Сохранение адреса команды прерываемого процесса недостаточно для его нормального восстановления, Необходимо сохранить так называемый контекст, в котором могут храниться промежуточные результаты работы прерываемого процесса. Назовем контекстом содержимое внутренних регистров процессора (местная память). Работа по сохранению контекста, в зависимости от архитектуры процессора и операционной системы, может быть выполнена, либо на аппаратном уровне, либо программно (операционной системой). После сохранения всей необходимой информации для возврата к прерванной программе (адрес следующей команды, направление ветвления, если команда условного перехода, контекст) операционная система (обработчик прерывания) выполняет собственно действия по обработке прерывания. Этими действиями, например, могут быть: - чтение сектора диска в оперативную память; - ввод кода нажатой клавиши в буфер клавиатуры - выдача очередного блока данных в регистр данных последовательного адаптера. После того как необходимые действия по обработке прерывания произведены, выполняется возврат к прерванной программе. Для этого необходимо восстановить всю запомненную информацию (адрес команды на момент прерывания и контекст прерванной программы). Независимо от архитектуры вычислительной системы подсистема обработки прерывания должна выполнить следующие шаги: - зафиксировать факт прерывания, прием сигнала запроса на прерывание от соответствующего контроллера внешнего устройства; - сохранить всю необходимую информацию о прерываемой программе (для возможности последующего восстановления); - аппаратная передача управления на программу – обработчик прерывания - выполнение необходимых действий, связанных с собственно обработкой прерывания; - после обработки прерывания необходимо восстановить запомненную информацию о прерванной программе (возврат к прерванной программе). В вычислительной системе возможны ситуации, когда одновременно несколько внешних устройств потребуют внимания операционной системы, т. е. одновременно выставят на линии IRQ сигналы запроса на прерывания. Для разрешения такой ситуации в вычислительной системе предусмотрен контроллер прерываний, выполняющий функцию арбитра. Все линии IRQ от внешних устройств поступают в контроллер прерываний и, при наличии одновременно нескольких запросов, контроллер выбирает наиболее приоритетный запрос. Контроллер выбирает запрос в соответствии с заложенной в него схемой приоритетов. Возможны ситуации, когда желательно выполнить системный код без его прерывания. Для этого в операционных системах предусмотрена возможность маскирования прерываний (отключение на некоторое время). Эта возможность касается только аппаратных прерываний. Маскированием прерываний можно управлять при помощи специального флага (разряда) регистра процессора FLAGS. Этот флаг имеет название IF (Interrupt Flag). Причем, если IF =1, то процессору разрешено реагировать на сигналы прерывания от внешних устройств, если же IF=0, то все прерывания от внешних устройств отключены. В системе команд процессора существуют специальные команды для работы с флагом IF: - STI – установить флаг в 1 (разрешить все прерывания от внешних устройств); - CLI - сбросить флаг в 0 (запретить прерывания от всех внешних устройств). Маскирование прерываний от конкретных устройств ввода-вывода, например, исключительно от таймера или исключительно от клавиатуры осуществляется программированием контроллера прерываний. Необходимо подчеркнуть, что возможно маскирование только прерываний от внешних устройств. Существуют аппаратные прерывания, отключать которые не имеет смысла, это прерывания от схем контроля машины, так называемые немаскируемые прерывания. Наличие в системе прерываний схемы приоритетов и возможности отключения, как всех внешних прерываний, так и выборочно, от конкретных устройств ввода-вывода, позволяет операционной системе регулировать обработку сигналов прерывания, т. е. обрабатывать их сразу по приходу или откладывать обработку на некоторое время или полностью игнорировать прерывание. Прерывания могут обрабатываться процессором только последовательно, а сигналы прерывания возникают в произвольные моменты времени, поэтому наличие схемы приоритетов позволяет обработать сигналы прерывания в разумном порядке – сигнал с более высоким приоритетом обрабатывается в первую очередь, остальные на время откладываются. Операционная система может реализовать различные дисциплины обслуживания прерываний. 1. Дисциплина с относительными приоритетами. В этом случае обслуживание прерывания не прерывается даже при наличии запросов с более высокими приоритетами. После полной обработки текущего запроса (окончание обслуживания) система переходит к обработке запроса с наивысшим приоритетом. Это возможно, потому что поступающие запросы на прерывание могут храниться в контроллере прерываний до их востребования. 2. Дисциплина с абсолютными приоритетами. В этом случае всегда обслуживается прерывание с наивысшим приоритетом. Текущую обработку прерывания может прервать только запрос с более высоким приоритетом. При этом наблюдается многоуровневое прерывание. 3. Дисциплина, организованная по принципу стека. Запросы с низким приоритетом прерывают обработку прерываний с более высоким приоритетом. В заключение приведем общую схему обработки прерывания в операционных системах. В однозадачных операционных системах программа обработчик имеет три выраженные секции: 1. Маскирование всех внешних прерываний. Затем при отключенных внешних прерываниях осуществляется ответственная часть системного кода по сохранению контекста прерываемой программы. 2. Выполнение непосредственной работы по обработке запроса на прерывание. 3.Восстановление контекста прерванной программы. Для многозадачных операционных систем характерна следующая схема обработки прерывания. Причины прерывания (идентификацию прерывания) определяет специальный модуль операционной системы – супервизор прерываний. Супервизор прерываний сохраняет в дескрипторе текущей задачи ее контекст, т. е. содержимое рабочих регистров. (Дескриптор задачи – это некоторая системная структура, хранящая всю необходимую информацию для операционной системы о выполняющейся задаче). Далее супервизор прерываний определяет конкретную программу обработки идентифицированного прерывания и передает ей управление. Выполняется собственно обработка прерывания, по окончанию которой управление обязательно передается диспетчеру задач. (Диспетчер задач – модуль операционной системы, осуществляющий по заданному алгоритму выбор очередной задачи на выполнение). (С дескриптором задачи и с диспетчером задач мы подробно познакомимся в соответствующих разделах курса). Диспетчер задач на основе принятой дисциплины обслуживания производит выбор готовой к выполнению задачи. В общем случае это может быть не та задача, обработка прерывания которой была только что завершено. Затем диспетчер задач восстанавливает контекст выбранной задачи. Вопросы для самопроверки 1. Каким образом операционная система получает информацию о внешнем мире. 2. Назначение таблицы векторов прерываний. 3. Поясните суть программно-аппаратного механизма прерываний. 4. Что понимают под контекстом процесса. 5. Возможности операционных систем по маскированию прерываний.
ГЛОССАРИЙ 1. РЕГИСТР – Внутренние регистры процессора, ячейки памяти, являющиеся частью процессора. 2. СИСТЕМА КОМАНД – Совокупность операций, которые «понимает» процессор. Граф состояния задачи Состояния задачи и переходы между ними. Задача (поток) – наименьшая выполняемая процессором программная единица. Диспетчер (планировщик) задач не оперирует понятием процесса, его задача состоит в распределении процессорного времени между всеми доступными задачами в системе. Для эффективного распределения времени центрального процессора между задачами операционная система поддерживает для них понятие состояние. В каждый данный момент времени задача может находиться в одном из следующих состояниях: - блокирована; - готова к счету (к продолжению выполнения); - активна. В состоянии «блокирована» задача оказывается, если она ожидает завершения некоторого события, например, окончания операции ввода-вывода. В состоянии «готова к счету» задача готова получить управление процессором, как только диспетчер задач предоставит ей эту возможность. В состоянии «активна» задача занимает время центрального процессора. Рассмотрим возможные переходы задачи из одного состояния в другое. 1. Переход из состояния «активна» в состояние «готова к счету» происходит в том случае, когда задача не отдает процессорное время по собственному желанию (например, запрашивая состояние «блокирована» при помощи функции wait() до наступления некоторого события). Такой переход возможен либо по истечению кванта времени, выделенному задаче, либо в ситуации, когда после прерывания необходимо предоставить процессор более приоритетной задаче. 2. Обратный переход из состояния «готова к счету» в состояние «активна» происходит в результате запуска планировщиком наиболее приоритетной задачи из очереди задач, готовых к выполнению. 3. Переход из состояния «активна» в состояние «блокирована» происходит при запросе задачей от операционной системы некоторого сервиса. 4. Переход из состояния «блокирована» в состояние «готова к счету» осуществляется, если произошло событие, которое ожидала задача. Дисциплины диспетчеризации Дескриптор задачи (потока). Для каждой задачи (потока) операционная система поддерживает структуру (блок данных), называемую дескриптором задачи (потока). Когда создается задача (поток), операционная система создает для нее дескриптор. Программной единице, с которой не связан никакой дескриптор не будет выделяться время центрального процессора. Когда задача принудительно вытесняется или блокируется, операционная система сохраняет в ее дескрипторе информацию о состоянии задачи. Это состояние задачи называют контекстом, сюда включают состояние процессора (указатель команд, регистр сегмента команд, регистр флагов), состояние внутренних регистров процессора. В дескрипторе задачи содержится информация о состоянии самой задачи, адрес точки входа и другая важная информация. Примерное содержание структуры «дескриптор задачи»: - идентификатор задачи; - адрес точки входа; - состояние задачи; - приоритет; - область для сохранения контекста; - величина кванта времени; - время, оставшееся до тайм-аута; - события, которых ожидает задача.
Диспетчеризация задач. Выбор задачи на выполнение на центральном процессоре можно назвать диспетчеризацией. Операционная система управляет множеством задач, поддерживая в интересах диспетчеризации структуры данных, называемые дескрипторами. Имеются разные способы диспетчеризации, главное, чтобы выбор задачи на выполнение осуществлялся максимально быстро. Политика, от которой зависит, какая задача будет выбрана в каждом конкретном случае, определяется алгоритмом (дисциплиной) диспетчеризации. Алгоритм (дисциплину) диспетчеризации можно также определить, как правило, в соответствии с которым формируется очередь готовых к выполнению задач.
Дисциплины диспетчеризации. Существует большое количество дисциплин диспетчеризации, применяемых в различных вычислительных системах, имеющих разную специфику. Рассмотрим некоторые подходы построения алгоритмов диспетчеризации. Различают два класса дисциплин: бесприоритетные и приоритетные. Бесприоритетные дисциплины реализуют подход, при котором выбор задачи производится в некотором заранее заданном порядке, приоритет задачи (привилегированность задачи при использовании ресурсов вычислительной системы) не учитывается. Возможна бесприоритетная дисциплина, основанная на выделении каждой задаче определенного кванта времени. Каждая задача в системе получает по очереди квант времени. После окончания кванта времени задача снимается с процессора и переводится в конец очереди, готовых к выполнению задач, а процессорное время предоставляется следующей в очереди задаче. Подобную дисциплину диспетчеризации называют карусельной, она подходит для вычислительных систем, в которых все задачи имеют равные права (например, многотерминальные системы). В карусельной дисциплине реализуется вытесняющая многозадачность. Приоритетные дисциплины учитывают приоритет задач, предоставляют отдельным задачам преимущественное право попасть в активное состояние (состояние выполнения на центральном процессоре). Обсудим некоторые варианты приоритетных дисциплин диспетчеризации. Например, дисциплина диспетчеризации с фиксированными приоритетами, использующая одну очередь задач. Заметим, что, при любых дисциплинах диспетчеризации очередь задач фактически представляет собой очередь, обсуждавшихся ранее, дескрипторов задач. В принципе, такая очередь может быть организована, как таблица (массив структур), каждая строчка которой представляет собой дескриптор некоторой задачи, либо как список структур (дескрипторов задач), каждый элемент, которого имеет ссылку на элемент, следующий за ним в очереди. Выбор задачи на исполнение в дисциплине с фиксированными приоритетами организован следующим образом. Все задачи расставлены по приоритетам в таблице (очереди дескрипторов задач). Диспетчер задач, получив управление, начинает просматривать таблицу с самого начала в поисках первой готовой к счету задачи. Процессор в первую очередь будет предоставляться задаче с самым высоким приоритетом и в случае, если ей в данный момент не требуется процессорное время или она блокирована, ожидая некоторого события, диспетчер предоставит время другой задаче. В принципе, такой алгоритм возможен, когда во время разработки вычислительной системы заранее известны все задачи, их количество и длительность выполнения и вследствие этого им можно присвоить постоянные приоритеты. Как правило, в операционных системах дисциплины диспетчеризации основаны на разделении времени (квантовании) с учетом приоритетов задач. В многопользовательской среде природа прикладных процессов операционной системе неизвестна, поведение задачи может меняться с течением времени в зависимости от того чем она занята (обработкой данных или их вводом-выводом). Пользователь не должен ждать, когда закончится некоторая длительная операция. Поэтому задачам выделяются для выполнения кванты времени, но при этом организуется несколько очередей готовых к выполнению задач. Каждой из этих очередей присвоен определенный приоритет. Когда операционная система переводит задачу в состояние готовности, она добавляет ее в конец, соответствующей очереди. Возможны разные способы формирования таких очередей. Допустим, высокоприоритетная очередь может формироваться из задач, выполняющих операции ввода-вывода. Такие задачи часто блокируются, не исчерпав своего кванта времени. Низкоприоритетную очередь логично формировать из задач, требующих длительных вычислений. Другая схема формирования высоко и низкоприоритетных очередей заключается в следующем. Высокоприоритетная очередь формируется из задач, которые операционная система переводит из состояния ожидания (блокирована) в состояние готовности к счету. Если квант времени задачи истек, операционная система переводит задачу в состояние готовности и ставит в низкоприоритетную очередь Существуют дисциплины, в которых поддерживается большее количество очередей. Возможен следующий вариант с несколькими очередями: - высокоприоритетная очередь для задач, которые были заблокированы в ожидании событий, связанных с распределением ресурсов, критичных для производительности системы (например, подкачка в оперативную память нужной страницы); - очередь со средним приоритетом для задач, заблокированных в ожидании ресурсов менее критичных для производительности; - низкоприоритетные очереди для задач, исчерпавших свои кванты времени, очереди назначаются процессам, не выполняющим ввод-вывод.
Вопросы для самопроверки 1. Назовите основные методы переключения задач. 2. Что такое вытесняющая многозадачность. 3.Дескриптор задачи, его назначение и основные элементы . 4. Кратко поясните алгоритмы основных дисциплин диспетчеризации. 5. Какие компоненты или явления обусловили возможность мультипрограммного режима работы вычислительной системы. 6. Поясните конкурентный способ выполнения программ. 7. Назовите критерии эффективности вычислительной системы. 8. Определите понятия процесса и ресурса и их связь друг с другом. 9. Перечислите основные ресурсы вычислительной системы. 10. Поясните термины «планирование» и «диспетчеризация». ГЛОССАРИЙ 1. ЭЛЕМЕНТНАЯ БАЗА – Технология, используемая для производства элементарных ячеек ЭВМ 2. КОНТРОЛЛЕР – Электронное устройство, управляющее работой внешнего устройства 3. ГРАФ – Графическая диаграмма состояния процесса.
План 4.1. Необходимость и принципы организации синхронизации в вычислительных системах 4.2. Синтаксис и семантика основных объектов синхронизации. Вопросы для самопроверки 1. Поясните необходимость синхронизации в современных вычислительных системах. 2. Какие объекты синхронизации Вам известны. 3. Перечислите состояния объектов синхронизации. 4. Роль счетчика в идеологии работы объекта синхронизации «семафор». ГЛОССАРИЙ ФЛАГ – Признак, имеющий два значения (1/0) и занимающий один двоичный разряд Вопросы для самопроверки. 1.Определение и назначение файловой системы. 2.Как связаны понятия логический диск и файловая система. 3.Приведите служебные данные (метаданные), характерные для файловой системы типа FAT. 4. Каковы преимущества разбиения дискового пространства на кластеры. 5.Что означает число 32 в названии файловой системы FAT32. 6. Опишите структуру тома файловой системы NTFS 7. Поясните понятие «отрезок» в файловой системе NTFS 8. Поясните сущность технологии RAID-массивов.
Вопросы для самопроверки 1. Что собой представляет адресное пространство ввода-вывода. 2. Каким образом осуществляется адресация внешних устройств. 3. Структура команд процессора ввода-вывода 4. Основные режимы работы драйвера внешнего устройства. 5. Основные системные таблицы, поддерживаемые операционной системой в интересах ввода-вывода. ГЛОССАРИЙ ДЕСКРИПТОР – Структура, описывающая некоторый объект системы.
План 7.1. Память и отображения, понятие виртуального адресного пространства 7.2 Статическое и динамическое преобразование адресов 7.3. Различные способы организации памяти Вопросы для самопроверки 1.Что понимают под виртуальным адресным пространством процесса. 2. В чем заключается механизм динамического преобразования адресов в современных операционных системах. 3. Назовите основные способы распределения памяти между конкурирующими программами. 4. Какая системная таблица поддерживает сегментный способ организации виртуальной памяти. 5. Что такое свопинг. 6. Достоинства и недостатки страничной организации виртуальной памяти. ГЛОССАРИЙ 1. ШИНА – В вычислительной системе совокупность проводников, предназначенных для обмена сигналами между компонентами системы. План 8.1 Понятие тупиковой ситуации 8.2. Методы борьбы с тупиками Понятие тупиковой ситуации При функционировании процессов (как системных, так и прикладных) в вычислительной системе происходит выделение и освобождение тех или иных ресурсов. Одни из этих ресурсов (память и время центрального процессора) необходимы всегда. Потребность в других ресурсах, например, устройствах ввода-вывода или в конкретных объектах данных зависит от задач процесса и выполняемых им в конкретный момент действий. В вычислительной системе за выделением ресурсов (объектов) и управление ими отвечает операционная система, которая может выделять ресурсы статически при инициализации процесса или динамически в ходе его работы. Например: выделение пространства в динамической памяти для создаваемых процессом структур данных, выделение оперативной памяти для буферов диска и других внешних устройств, выделение дискового пространства для файлов подкачки. Во всех этих случаях некоторый объем оперативной или дисковой памяти может быть выделен при инициализации процесса, а дополнительное пространство будет предоставляться по требованию. Тупик – ситуация, в которой один или несколько процессов ожидают какого-либо события, которое никогда не произойдет. Причины: - нехватка ресурсов, - выход из строя устройств, - ошибки, допущенные при разработке параллельных программ Пример: два процесса П1 и П2 в монопольном режиме обрабатывают собственные файлы данных Ф1 и Ф2. Если одновременно процессу 1 потребуется файл 2, а процессу 2 – файл 1, то оба процесса будут переведены операционной системой в состояние ожидания, так как ресурсы (файлы) заняты: П1 -> Ф2; П2 -> Ф1. Обычно тупик моделируется циклом в графе, состоящем из узлов двух видов: процессы и ресурсы, как показано на рис.1 Стрелки от ресурса к процессу означают, что ресурс выделен данному процессу. Стрелки от процесса к ресурсу означают, что процесс запрашивает данный ресурс. Рис. 1 Если процесс находится в состоянии активного ожидания условия, которое никогда не будет выполнено, он тоже не сможет продолжить свою работу. Под активным ожиданием понимается пустой цикл, в котором процесс проверяет, не наступило ли ожидаемое условие. Такое состояние называют активной блокировкой. Ситуация, подобная взаимоблокировке связана с неэффективной стратегией планирования и называется зависанием процесса. При этом, планировщик игнорирует процесс с высокими требованиями к ресурсам, постоянно выбирая другие процессы с более низкими требованиями. При освобождении ресурсов, ожидаемых этим процессом, планировщик всякий раз отдает их процессам с низкими требованиями к ресурсам. Так происходит, если стратегия планирования ориентирована на повышение производительности максимально большего числа процессов. Тем не менее, политика планирования должна быть сбалансированной, чтобы процессы с высокими требованиями к ресурсам не простаивали слишком много. Исследования проблемы тупиковых ситуаций показали необходимые условия возникновения тупика. 1. Возможность монопольного доступа к ресурсам. Т.е. по требованию процессов операционная система выделяет им ресурсы. (условие взаимоисключения). Т.е. в выделении ресурса может быть отказано. Принятая в операционных системах политика управления параллельным выполнением такова, что объекты могут выделяться для монопольной или какой-либо особой формы совместного использования. Процессу может быть отказано в доступе к объекту на том основании, что последний уже выделен другому процессу. 2. Процесс ожидает выделения дополнительно ресурса, удерживая за собой ресурс уже выделенный ему (условие ожидания ресурса). Т.е. разрешено удерживать объект, в процессе ожидания. Допустима ситуация, когда процесс удерживает одни объекты, запрашивая другие. Если запрос не может быть удовлетворен, процесс блокируется до тех пор, пока нужный ему объект не освободится. 3. Ресурс нельзя отобрать (условие отсутствия перераспределения). Т.е. отсутствует возможность отозвать объект. Операционная система не может отозвать предоставленный процессу объект. Получив доступ к объекту, процесс работает с ним сколько ему необходимо, а затем освобождает. 4. Существование кольцевой цепи процессов, в которой каждый процесс удерживает ресурс, требующийся следующему процессу цепи (условие кругового ожидания). Существует циклический набор процессов, в котором каждый из них ожидает освобождения объекта, удерживаемого предыдущим процессом. Процессы в циклическом наборе находятся в ситуации взаимной блокировки. Остальные процессы могут продолжать выполняться, но производительность системы снижается из-за недоступности объектов, удерживаемых заблокированными процессами. Если новый процесс запрашивает один из таких объектов, то тоже получает отказ и останавливается на неопределенный срок. 8.2. Методы борьбы с тупиками (предотвращение тупиков) Для возникновения тупиковых ситуаций необходимо выполнение одновременно всех условий. Для обеспечения отсутствия тупика необходимо исключить возникновение хотя бы одного условия. Первые три условия отражают правила, существующие в операционной системе, четвертое условие может сложиться при определенной неблагоприятной последовательности событий. Правильно определив системную политику можно исключить некоторые условия взаимоблокировки. Методы борьбы ориентированы на нарушение первых трех условий путем введения ограничений на поведение процессов и способы распределения ресурсов (нарушение одного из условий возникновения взаимоблокировки). 1. Нарушение условия взаимоисключения. В общем случае избежать монопольного доступа к ресурсу невозможно. В частности, возможны приемы, когда неделимые ресурсы становятся разделяемыми. Например, операционная система для процессов, запрашивающих принтер, организует формирование промежуточных процессов на диске - разделяемом устройстве (spooling). В любом случае реализованная в системе политика управления параллельным управлением должна быть максимально гибкой. Рассмотрим функцию управления параллельным доступом, которая может быть реализована как часть файлового сервиса операционной системы. Считалось приемлемым, если операционная система обеспечивает монопольную блокировку для записи и блокировку с обеспечением совместного доступа для чтения. Рассмотренная политика является недостаточно гибкой, т. е. она навязывает процессам правила, которые не соответствуют их задачам. Группе процессов иногда требуется возможность параллельной записи в совместно используемые файлы. Однако в определенных ситуациях при параллельном доступе к объектам в целях обеспечения правильности и согласованности их значений процессу в доступе к объекту может быть отказано. 2. Нарушение условия ожидания дополнительных ресурсов. Избежать условия ожидания дополнительных ресурсов можно попробовать, применив следующую стратегию (стратегия двухфазного захвата) - Процесс должен запрашивать все необходимые ему ресурсы сразу. Пока операционная система не предоставит ему их, процесс не может продолжать работу. - Если в первой фазе некоторые запрашиваемые ресурсы были заняты, он освобождает все ресурсы, которые были ему выделены и повторяет первую фазу. Очевидные недостатки: - Неэффективное использование вычислительной системы; объекты, в том числе и наиболее важные, надолго становятся недоступными другим процессам. - Противоречие принципу модульности в программировании (приложение должно знать о запросах к ресурсам во всех модулях). К тому же, реализовать данное решение не представляется возможным, если потребность в ресурсе зависит от результатов вычислений с использованием других ресурсов. 3. Условие отсутствия перераспределения (отсутствует возможность отозвать объект (ресурс)). Это условие можно исключить, реализовав механизм отзыва объекта с откатом операций, выполненных удерживающим его процессом, до точки его получения, чтобы предоставить данный объект другому процессу. Для этого в операционной системе должен быть предусмотрен механизм запоминания состояния процесса с целью последующего восстановления хода вычислений. Перераспределение времени центрального процессора реализуется достаточно легко, но перераспределение устройств ввода-вывода нежелательно. 4. Имеет место круговое ожидание (условие кругового ожидания) В некоторых случаях можно потребовать, чтобы процессы запрашивали объекты в установленном порядке. Такой подход в отношении системных ресурсов будет более экономным, чем получение всех объектов сразу и вполне приемлемым к некоторым типам выделяемых объектов. Например, процесс сначала запрашивает устройства ввода и затем устройства вывода. Отмечается, что один из методов решения проблемы состоит в том, чтобы процессы подавали запросы на ресурсы в таком порядке, при котором возникновение циклов было бы исключено. При разработке систем используются все эти методы. Необходимо найти оптимальное соотношение между затратами, связанными с выявлением взаимной блокировки и ее устранением, с одной стороны, и излишней сложностью системы и снижением доступности ресурсов с другой. Для принятия решения необходимы знания о предполагаемом поведении приложений, для которых строится конкретная система. Вопросы для самопроверки 1. Что в вычислительных системах понимают под тупиковой ситуацией. 2. Укажите причины возникновения тупиковой ситуации. 3. Каковы необходимые условия возникновения тупика 4. Какие существуют возможности по предотвращению тупиковых ситуаций.
Тема № 9. Вопросы безопасности и надежности операционных систем. План 9.1. Основные аспекты защищенных операционных систем 9.2. Разграничение доступа к объектам операционной системы. 9.3. Механизмы контроля доступа в операционных системах
Вопросы для самопроверки 1.Основные требования к защищенной операционной системе. 2. Сущность организации комплексного подхода защиты информации в системе. 3.Определите понятия право доступа и привилегия. 4. Назначение списка управления доступом. 5. Что такое маска доступа. Вопросы для самопроверки 1. Какой язык программирования создан специально для разработки операционной системы. 2. Особенности архитектуры ядра Linux 3. В каких случаях получает управление диспетчер ядра QNX 4. Что такое исполняющая система Windows.
ТЕМАТИЧЕСКИЙ ПЛАН
РЕКОМЕНДУЕМЫЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ
|
Последнее изменение этой страницы: 2019-03-22; Просмотров: 329; Нарушение авторского права страницы