Lookinfo.org > Теория и устройство > Основные понятия - Операционные системы
Основные понятия - Операционные системы21 октября 2007. Разместил: Antoxa |
|
Основные понятия - Операционные системы ![]() Понятие операционной среды Назначение операционной системы: - управление вычислительными процессами в вычислительной системе; - распределение ресурсов вычислительной системы между различными вычислительными процессами; - образование программной (операционной) среды, в которой выполняются прикладные программы пользователей. Программная подсистема, при обращении к которой посредством соответствующих вызовов пользователь получает функции и сервисы, называется операционной системой. Операционная среда – набор функций и сервисов ОС и правила обращения к ним. Операционная среда – набор интерфейсов, необходимый программам и пользователям для обращения к ОС с целью получить определенные сервисы. Операционная система в общем случае может содержать несколько операционных сред. Операционная среда может включать несколько интерфейсов: пользовательские и программные. Операционная среда – системное программное окружение, в котором могут выполняться программы, созданные по правилам работы этой среды. Понятие вычислительного процесса и ресурса Последовательный процесс («задача») – выполнение отдельной программы с ее данными на последовательном процессоре. Процессор имеет два аспекта: - носитель данных; - исполнитель операций, связанных с обработкой данных. С процессом связано понятие ресурса. Термин ресурс относится к используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, используются и освобождаются процессами в период их активности. Ресурсы могут быть: - разделяемыми; - неделимыми. Разделяемые ресурсы могут использоваться: - одновременно (в один и тот же момент времени); - параллельно (в течение некоторого отрезка времени процессы используют ресурс попеременно). Мультипрограммный режим работы вычислительной системы заключается в том, что пока одна программа (процесс, задача) ожидает завершения очередной операции ввода/вывода, другая программа (задача) может быть поставлена на выполнение. При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем, если бы он выполнялся в однопрограммном режиме. ОС поддерживает мультипрограммирование (многопроцессность) и старается эффективно использовать ресурсы путем организации очередей запросов. При необходимости использовать какой-либо ресурс процесс обращается к супервизору ОС и сообщает ему свои требования (вид ресурса, объем и т.д.). Эта директива переводит процессор в привилегированный режим, если он есть. Ресурс будет выделен обратившемуся за ним процессу, если: - он свободен и нет задач с более высоким приоритетом, обратившимся за этим ресурсом; - текущий запрос и ранее выданные запросы допускают совместное использование ресурсов; - ресурс используется задачей с более низким приоритетом и может быть временно отобран. Если ресурс занят, ОС ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания. Очередь к ресурсу может быть организована различными способами, но обычно с помощью списковой структуры. После завершения работы с ресурсом задача с помощью системного вызова супервизора сообщает ОС об отказе от ресурса. Супервизор ОС, получив управление, освобождает ресурс и проверяет, есть ли очередь к этому ресурсу. Если очередь есть, то в зависимости от дисциплины обслуживания и приоритетов задач, ожидающих данный ресурс, супервизор выбирает задачу и переводит ее в состояние готовности к выполнению. Управление будет передано либо этой выбранной задаче, либо той, которая только что освободила ресурс. При выдаче запроса задача может указать, хочет ли она владеть ресурсом монопольно или совместно с другими задачами (файл). При организации управления ресурсами требуется принять решение о том, что в данной ситуации выгоднее: - быстро обслуживать отдельные наиболее важные запросы; - предоставлять всем процессам равные возможности; - обслуживать максимально возможное количество процессов; - наиболее полно использовать ресурсы. - Динамика состояния процесса Процесс может находиться: - в активном состоянии, может участвовать в конкуренции за использование ресурсов вычислительной системы; - в пассивном состоянии, известен системе, в конкуренции не участвует. Активный процесс может находиться в одном из следующих состояний: - выполнения, когда все затребованные ресурсы выделены. В состоянии выполнения может находиться только один процесс (для однопроцессорной системы); - готовности к выполнению, когда ресурсы могут быть предоставлены и процесс перейдет в состояние выполнения; - блокирования или ожидания, когда затребованные ресурсы не могут быть предоставлены или не завершена операция ввода/вывода. За время существования процесс может неоднократно совершать переходы из одного состояния в другое. Это обусловлено: - обращениями к операционной системе с запросами ресурсов; - выполнением системных функций; - взаимодействием с другими процессами; - появлением сигналов прерывания от таймера, каналов и устройств ввода/вывода и других устройств. Процесс из состояния бездействия в состояние готовности может перейти в следующих случаях: - по команде оператора (пользователя) в диалоговых ОС, где программа может иметь статус задачи, а не просто быть исполняемым файлом и только на время исполнения получит статус задачи (ОС на ПК); - при выборе из очереди планировщиком; - по вызову из другой задачи (посредством обращения к супервизору один процесс может создавать, инициировать, приостановить, остановить или уничтожить другой процесс); - по прерыванию от внешнего «инициативного» устройства; - при наступлении запланированного времени запуска программы. Процесс, который может исполняться, как только ему будет предоставлен процессор, находится в состоянии готовности, все ресурсы, за исключением процессора, ему выделены. Из состояния выполнения процесс может выйти по одной из следующих причин: - процесс завешается, при этом он посредством обращения к супервизору передает управление ОС и сообщает о своем завершении. Супервизор уничтожает процесс или переводит его в список бездействующих процессов. В состояние бездействия процесс может быть переведен принудительно по команде оператора или путем обращения к супервизору другой задачи, требующей остановить данный процесс; - процесс переводится супервизором ОС в состояние готовности к исполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени; - процесс блокируется из-за невозможности предоставить ему ресурс или вследствие запроса ввода/вывода, а также по команде оператора на приостановку задачи. Процесс деблокируется и переводится в состояние готовности к исполнению при наступлении соответствующего события: - завершение операции ввода/вывода; - освобождение затребованного ресурса; - загрузка в оперативную память страницы виртуальной памяти и т.д. Предпосылками изменения состояния процесса являются события. Один из основных видов событий – прерывания. Реализация понятия последовательного процесса в ОС Чтобы ОС могла управлять процессами, она должна располагать полной информацией о них. Для этого на каждый процесс заводится специальная информационная структура, называемая дескриптором процесса (описателем задач, блоком управления задачей). В общем случае дескриптор процесса содержит следующую информацию: - идентификатор процесса (PID); - тип (класс) процесса, по которому супервизор определяет правила обслуживания; - приоритет процесса, по которому супервизор предоставляет ресурсы; - переменную состояния (готов к работе, в состоянии выполнения, ожидание устройства ввода/вывода и т.д.); - защищенную область памяти, в которой хранятся регистры процессора, если процесс прерывается, не закончив работу. Эта область называется контекстом задачи; - информацию о ресурсах, которыми процесс владеет или имеет право пользоваться; - место (или адрес) памяти для общения с другими процессами; - параметры времени запуска; - в случае отсутствия системы управления файлами – адрес задачи на диске в ее исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти. Описатели задач, как правило, располагаются в оперативной памяти для ускорения работы супервизора. Для каждого состояния (кроме выполнения) ведется список задач. Процессы и треды Для реализации «мультизадачности» было введено понятие «легковесных» процессов, которые в настоящее время получили названия потоки или треды (нити). Понятие процесс в плоскости ОС подчеркивает их обособленность: - у каждого процесса свое виртуальное адресное пространство; - каждому процессу выделяются свои ресурсы – файлы, семафоры и т.д. Обособленность процессов нужна для защиты процессов друг от друга, т.к. они, используя общие ресурсы вычислительной системы, постоянно конкурируют друг с другом. Процессы не связаны между собой и могут принадлежать различным пользователям, разделяющим одну вычислительную систему. ОС считает процессы несвязанными и независимыми. В самих процессах также имеется внутренний параллелизм, использование которого позволяет повысить производительность вычислительной системы. Например, некоторые операции, выполняемые приложением, могут требовать большого количества процессорного времени, в этом случае пользователь долго будет ждать результата. Если программные модули, выполняющие такие длительные операции, оформить в виде самостоятельных «подпроцессов» (легковесных или облегченных потоков, тредов, «задач»), то у пользователя появляется возможность параллельно выполнять несколько операций в рамках одного процесса. Для этих задач ОС не создает полноценной виртуальной машины: - задачи не имеют собственных ресурсов; - находятся в том же виртуальном адресном пространстве, что и данный процесс; - могут пользоваться теми же файлами, виртуальными устройствами и прочими ресурсами. Единственный собственный ресурс для потоков – процессорный. В однопроцессорных системах потоки разделяют между собой процессорное время, а в многопроцессорных – могут выполняться параллельно, если нет конкуренции из-за других ресурсов. Главный результат многопоточности – возможность параллельно выполнять несколько видов операций в одной прикладной программе. Параллельное вычисление (более эффективное использование ресурсов центрального процессора и уменьшение суммарного времени выполнения задачи) реализуется на уровне потоков и программа, оформленная в виде нескольких потоков в рамках одного процесса, выполняется быстрее за счет параллельного выполнения отдельных ее частей. Особенно эффективно можно использовать многопоточность для выполнения распределенных приложений. С понятием «поток» связано распределение процессорного времени. С понятием «процесс» связано распределение всех ресурсов, при диспетчеризации следует учитывать все ресурсы, закрепленные за процессом. Каждый процесс всегда состоит, по крайней мере, из одного потока, и только при наличии внутреннего параллелизма программист может расщепить один поток на несколько. Прерывания Прерывания – механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые ситуации, возникающие при работе процессора. Прерывания – принудительная передача управления от выполняемой программы к системе, происходящее при возникновении определенного события. Основная цель введения прерываний – реализация асинхронного режима работы и распараллеливание работы отдельных устройств вычислительного комплекса. Механизм прерываний реализуется аппаратно-программным способом. Прерывание всегда влечет за собой изменение порядка выполнения команд процессором. Механизм обработки прерываний включает следующие шаги: 1) установление факта прерывания и его идентификация; 2) запоминание состояния прерванного процесса (счетчика команд, содержимого регистров процессора, спецификации режима и др.); 3) аппаратная передача управления подпрограмме обработки прерываний; 4) сохранение информации о прерванной программе, которую не удалось сохранить на шаге 2 с помощью действий аппаратуры, иногда большого объема информации; 5) обработка прерываний; 6) восстановление информации, относящейся к прерванному процессу; 7) возврат в прерванную программу. Шаги 1 – 3 реализуются аппаратно, а шаги 4 –7 программно. Главные функции механизма прерываний: - распознавание или классификация прерываний; - передача управления на обработку прерываний; - корректное возвращение к прерванной программе. Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса: - внешние (асинхронные); - внутренние (синхронные). Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например: - прерывания от таймера; - прерывания от внешнего устройства (прерывания по вводу/выводу); - прерывания по нарушению питания; - прерывания с пульта оператора вычислительной системы; - прерывания от другого процессора или другой вычислительной системы. Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями, например: - нарушение адресации; - наличие в поле адреса несуществующей инструкции; - деление на нуль; - переполнение или исчезновение порядка; - ошибка четности; - ошибка в работе различных аппаратных устройств. Собственно программные прерывания происходят по соответствующей команде прерывания, то есть по этой команде процессор производит те же действия, что и при обычных внутренних прерываниях. Данный механизм введен для того, чтобы переключение на системные программные модули происходило не как переход в подпрограмму, а как обычное прерывание. Этим обеспечивается автоматическое переключение процессора в привилегированный режим с возможностью выполнения всех команд. Сигналы, вызывающие прерывания, формируются в процессоре или вне его, они могут возникнуть одновременно. Выбор одного их них происходит на основе приоритетов, установленных для каждого их них. Наивысшим приоритетом обладают прерывания от схем контроля процессора. Учет приоритетов может быть встроен в технические средства или может определяться операционной системой. Программно-аппаратное управление порядком обработки сигналов прерывания позволяет применять различные дисциплины обслуживания прерываний. Распределение прерываний по уровню приоритета (от низкого к высокому): - программные прерывания; - прерывания от внешних устройств: терминалов; - прерывания от внешних устройств: сетевого оборудования; - прерывания от внешних устройств: магнитных дисков; - прерывания от системного таймера; - прерывания от средств контроля процессора. Процессор может обладать средствами защиты от прерываний: - отключение системы прерываний; - маскирование (запрет) отдельных видов прерываний. Программное управление средствами защиты от прерываний позволяет ОС регулировать обработку сигналов прерывания: - обрабатывать сразу при поступлении; - откладывать обработку на некоторое время; - полностью игнорировать. Обычно операция прерывания выполняется только после завершения выполнения текущей команды. Сигналы прерывания возникают в произвольные моменты времени, поэтому к моменту обработки может накопиться несколько сигналов. Сигналам прерывания присваиваются приоритеты, в первую очередь обрабатывается сигнал с более высоким приоритетом. Программное управление специальными регистрами маски (маскирование сигналов прерывания) позволяет реализовать различные дисциплины обслуживания: - с относительными приоритетами, обслуживание не прерывается даже при наличии запросов с более высоким приоритетом. В программе обслуживания данного запроса следует наложить маски на все остальные сигналы прерывания или просто отключить систему прерываний; - с абсолютными приоритетами, обслуживается прерывание с наибольшим приоритетом. В программе обслуживания прерываний следует наложить маски на сигналы прерывания с более низким приоритетом. Возможно многоуровневое прерывание, то есть прерывание программы обработки прерывания, число уровней меняется и зависит от приоритета запроса; - по принципу стека (последним пришел – первым обслужен), запросы с более низким приоритетом могут прервать обработку прерывания с более высоким приоритетом. В программе обслуживания прерываний не следует накладывать маски ни на один сигнал прерывания и отключать систему прерываний. Управление ходом выполнения задач со стороны ОС заключается: - в организации реакций на прерывание; - в организации обмена информацией; - в предоставлении необходимых ресурсов; - в динамике выполнения задачи; - в организации сервиса. Причины прерываний определяет ОС (супервизор прерываний) и выполняет действия, необходимые при данном прерывании и в данной ситуации. При появлении запроса на прерывание система прерываний идентифицирует сигнал и, если прерывание разрешено, управление передается на соответствующую подпрограмму обработки прерываний. Подпрограмма обработки прерываний состоит их трех секций: 1) отключение прерываний, сохранение контекста прерванной программы, установка режима работы системы прерываний; 2) собственно тело программы обработки прерываний; 3) восстановление контекста прерванной ранее программы, установка прежнего режима работы системы прерываний. 1-я и 3-я секции подпрограммы обработки прерываний – служебные, сохраняют и восстанавливают контекст задач. Поскольку эти действия необходимо выполнять практически в каждой подпрограмме обработки прерывания, во многих ОС первые секции подпрограмм обработки прерываний выделяются в специальный системный модуль – супервизор прерываний. Супервизор прерываний выполняет следующие действия: - сохраняет в дескрипторе текущей задачи рабочие регистры процессора, определяющие контекст прерванной задачи; - определяет программу, обслуживающую текущий запрос на прерывание; - устанавливает необходимый режим обработки пребывания; - передает управление подпрограмме обработки прерывания. После выполнения подпрограммы обработки прерывания управление передается супервизору в модуль управления диспетчеризацией задач. Диспетчер задач производит: - выбор готовой к выполнению задачи (в соответствии с дисциплиной обслуживания) - восстановление контекста задачи; - установка прежнего режима работы системы прерываний; - передачу управления выбранной задаче. Из подпрограммы обработки прерывания нет возврата непосредственно в прерванную программу. Если бы контекст прерванной задачи сохранялся в стеке, а не в дескрипторе задачи, то не было бы возможности гибко выбирать на обслуживание задачу, после завершения подпрограммы обработки прерывания. В конкретных процессорах и ОС могут быть изменения и дополнения к рассмотренной дисциплине обслуживания прерываний. Основные виды ресурсов Одним из важнейших ресурсов является сам процессор, точнее процессорное время. Имеется множество методов разделения этого ресурса. Вторым важным ресурсом является оперативная память. В оперативной памяти может располагаться одновременно несколько процессов (точнее фрагментов, участвующих в вычислении), а может вся оперативная память предоставляться процессам попеременно. В конкретный момент времени процессор при выполнении вычислений обращается к очень небольшому числу ячеек оперативной памяти, поэтому память желательно разделить для возможно большего числа параллельно исполняемых процессов. С другой стороны, чем больше оперативной памяти предоставлено процессу, тем условия для его выполнения. Проблема разделения оперативной памяти между параллельно выполняемыми процессами является наиболее актуальной. Внешняя память, например магнитный диск, является двумя видами ресурсов: - собственно память; - доступ к ней. Каждый из этих ресурсов может предоставляться независимо друг от друга, но для работы с внешней памятью необходимы оба вида ресурсов: - собственно память используется одновременно; - доступ к внешней памяти попеременный. Если обращение к внешнему устройству использует механизм прямого доступа, то такие устройства разделяются параллельно. Если устройство работает с последовательным доступом, то оно не относится к разделяемым ресурсам, например, принтер или накопитель на магнитной ленте. Важным видом ресурсов являются программные модули. Системные программные модули рассматриваются как ресурсы, которые могут быть разделены между параллельно выполняемыми процессами. Программные модули могут использоваться: - однократно; - многократно. Однократно исполняемые модули, как правило, могут быть выполнены только один раз, поскольку в процессе своего исполнения они могут: - повредить часть кода; - повредить исходные данные, от которых зависит ход вычислений. Однократно исполняемые программные модули вообще не распределяются как ресурс системы, они, как правило, используются только на этапе загрузки системы. Повторно используемые программные модули делятся на следующие виды: - непривилегированные; - привилегированные; - реентерабельные. Привилегированные программные модули работают в привилегированном режиме, при отключенной системе прерываний, т.е. никакие внешние события не могут нарушить естественный порядок вычислений. Привилегированный программный модуль всегда выполняется до конца и представляет собой попеременно разделяемый ресурс. Структура привилегированного программного модуля включает следующие секции: - отключение прерываний; - собственно тело программного модуля; - включение прерываний. Непривилегированные программные модули – это обычные программные модули, которые могут быть прерваны во время своей работы. В общем случае их нельзя считать разделяемыми, потому что если его прервать в рамках одного процесса и запустить еще раз в рамках другого процесса, то промежуточные результаты для первого процесса могут быть потеряны. Реентерабельные программные модули допускают повторное многократное прерывание своего исполнения и повторный их запуск при обращении из других задач, т.е. реентерабельные программные модули должны сохранять промежуточные значения для прерываемых вычислений и их восстановление, когда вычислительный процесс возобновляется с прерванной точки. Это можно реализовать двумя способами: - с помощью статических методов выделения памяти под сохраняемые значения; - с помощью динамических методов выделения памяти под сохраняемые значения. Этот метод используется чаще. Реентерабельный программный модуль делится на следующие секции: - привилегированный модуль, заказывающий в системной области памяти блок ячеек для хранения текущих (промежуточных) данных; - основное тело реентерабельного модуля, которое и может быть прервано. Работает в непривилегированном режиме; - привилегированный модуль, освобождающий в системной области памяти блок памяти, использованный для хранения промежуточных результатов. При помещении всех промежуточных данных в системную область, на вершину стека помещается указатель на начало области данных и ее объем. Во время исполнения центральной секции реентерабельного программного модуля возможно ее прерывание. Если прерывание не возникло, то в последней секции производится освобождение использованного блока системной области памяти. Если во время исполнения центральной части произошло прерывание и другой вычислительный процесс обращается к тому же реентерабельному модулю, то для этого нового процесса выделяется новый блок памяти в системной области и на вершину стека записывается новый указатель. Повторное вхождение возможно, пока не израсходуется область системной памяти, выделенной специально для реентерабельной обработки. При статическом способе выделения памяти резервируется область памяти для фиксированного числа вычислительных процессов, в которых будут располагаться переменные реентерабельных программных модулей, для каждого процесса своя область памяти. К таким процессам относятся драйверы ввода/вывода. Кроме реентерабельных программных модулей еще имеются повторно входимые модули. Повторно входимые программные модули допускают многократное параллельное исполнение, но их нельзя прерывать. Повторно входимые программные модули состоят из привилегированных секций и повторное обращение к ним возможно только при завершении работы какой-либо секции. После выполнения какой-либо секции управление передается супервизору, который определит, какой процесс будет использовать этот модуль и с какой точки. В повторно входимых программных модулях определены все допустимые (возможные) точки входа. Повторно входимые модули встречают гораздо чаще, чем реентерабельные. К ресурсам относятся также информационные ресурсы, т.е. данные. Информационные ресурсы включают в себя: - переменные, находящиеся в оперативной памяти; - файлы. Если процессы используют данные только для чтения, то такие информационные ресурсы можно разделять. Если процессы могут изменять данные, то работы с такими данными должна быть организована специальным образом. |