Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Глава 1. Основные понятия
Назначение и функции операционных систем
Операционные системы относятся к системному программному обеспечению. Как
известно, все программное обеспечение разделяется на системное и прикладное.
К системному программному обеспечению принято относить такие программы
и комплексы программ, которые являются общими, без которых невозможно вы-
полнение или создание других программ.
набор подпрограмм ввода-вывода стали организовывать в виде специальной библиотеки ввода-вывода, а затем появились и сами операционные системы. Основной причиной их по-
явления было желание автоматизировать процесс подготовки вычислительного
комплекса к выполнению программы.
в 60-е годы операционные системы уже по-
зволяли организовать параллельное выполнение нескольких программ. Помимо
задач распределения ресурсов появились задачи обеспечения надежности вычис-
лений. К началу 70-х годов диалоговый режим работы с компьютером стал преоб-
ладающим.
термином интерфейс (interface) обозначают
целый комплекс спецификаций, определяющих конкретный способ взаимодей-
ствия пользователя с компьютером.
На сегодняшний день можно констатировать, что операционная система (ОС) пред-
ставляет собой комплекс системных1управляющих и обрабатывающих программ,
которые, с одной стороны, выступают как интерфейс между аппаратурой компью-
тера и пользователем с его задачами, а с другой стороны, предназначены для наи-
более эффективного расходования ресурсов вычислительной системы и организа-
ции надежных вычислений.
Системными принято называть такие программы, которые используются всеми остальными программами.
основные функции операционных систем.
• Прием от пользователя (или от оператора системы) заданий, или команд, сфор-
мулированных на соответствующем языке, и их обработка. Задания могут пе-
редаваться в виде текстовых директив (команд) оператора или в форме указа-
ний, выполняемых с помощью манипулятора (например, с помощью мыши).
Эти команды связаны, прежде всего, с запуском (приостановкой, остановкой)
программ, с операциями над файлами (получить перечень файлов в текущем
каталоге, создать, переименовать, скопировать, переместить тот или иной файл
и др.), хотя имеются и иные команды.
• Загрузка в оперативную память подлежащих исполнению программ.
• Распределение памяти, а в большинстве современных систем и организация
виртуальной памяти.
• Запуск программы (передача ей управления, в результате чего процессор ис-
полняет программу).
• Идентификация всех программ и данных.
• Прием и исполнение различных запросов от выполняющихся приложений.
Операционная система умеет выполнять очень большое количество системных
функций (сервисов), которые могут быть запрошены из выполняющейся про-
граммы. Обращение к этим сервисам осуществляется по соответствующим пра-
вилам, которые и определяют интерфейс прикладного программирования (Application
Program Interface, API) этой операционной системы.
• Обслуживание всех операций ввода-вывода.
• Обеспечение работы систем управлений файлами (СУФ) и/или систем управ-
ления базами данных (СУБД), что позволяет резко увеличить эффективность
всего программного обеспечения.
• Обеспечение режима мультипрограммирования, то есть организация параллель-
ного выполнения двух или более программ на одном процессоре, создающая
видимость их одновременного исполнения.
• Планирование и диспетчеризация задач в соответствии с заданными стратеги-
ей и дисциплинами обслуживания.
• Организация механизмов обмена сообщениями и данными между выполняю-
щимися программами.
• Для сетевых операционных систем характерной является функция обеспече-
ния взаимодействия связанных между собой компьютеров.
• Защита одной программы от влияния другой, обеспечение сохранности дан-
ных, защита самой операционной системы от исполняющихся на компьютере
приложений.
• Аутентификация и авторизация пользователей (для большинства диалоговых
операционных систем). Под аутентификацией понимается процедура проверки
имени пользователя и его пароля на соответствие тем значениям, которые хра-
нятся в его учетной записи. Термин авторизация означает, что в соответствии с учетной записью пользователя, который прошел аутентификацию, ему (и всем запросам, которые будут идти к операционной системе от его имени) назначаются определенные права
(привилегии), определяющие, что он может, а что не может делать на компьютере.
• Удовлетворение жестким ограничениям на время ответа в режиме реального
времени (характерно для операционных систем реального времени).
• Обеспечение работы систем программирования, с помощью которых пользова-
тели готовят свои программы.
• Предоставление услуг на случай частичного сбоя системы.
Операционная система изолирует аппаратное обеспечение компьютера от приклад-
ных программ пользователей. И пользователь, и его программы взаимодействуют
с компьютером через интерфейсы операционной системы.
Понятие операционной среды
термин «операционная среда» означает, прежде всего, соответствующие интерфейсы, необходимые программам и пользователям для обращения к
управляющей (супервизорной) части операционной системы с целью получить
определенные сервисы.
системные запросы (вызовы системных операций, или функций) либо явно прописываются в тексте программы программистами, либо подставляются автоматически самой системой программирования на этапе трансляции исходного текста разрабатываемой программы. Каждая операционная система имеет свое множество системных функций; они вызываются соответствующим образом, по принятым в системе правилам. Совокупность системных вызовов и правил, по которым их следует использовать, как раз и определяет уже упомянутый нами интерфейс прикладного программирования (API).
Программную (системную) среду следует понимать как некоторое системное
программное окружение, позволяющее выполнить все системные запросы от при-
кладной программы. Та системная программная среда, которая непосредственно
образуется кодом операционной системы, называется основной, естественной, или
нативной (native).
Помимо основной операционной среды в операционной систе-
ме могут быть организованы (путем эмуляции иной операционной среды) допол-
нительные программные среды. Если в операционной системе организована рабо-
та с различными операционными средами, то в такой системе можно выполнять
программы, созданные не только для данной, но и для других операционных систем.
операционная система (в общем случае) может
поддерживать несколько операционных сред. Почти все современные 32-разряд-
ные операционные системы, созданные для персональных компьютеров, поддер-
живают по нескольку операционных сред.
Операционная среда может включать несколько интерфейсов: пользовательские
и программные. Если говорить о пользовательских, то, например, система Linux
имеет для пользователя как интерфейсы командной строки (можно использовать
различные «оболочки» — shell), наподобие Norton Commander, например Midnight
Commander, так и графические интерфейсы, например X-Window с различными
менеджерами окон — KDE, Gnome и др. Если же говорить о программных интер-
фейсах, то в тех же операционных системах с общим названием Linux программы
могут обращаться как к операционной системе за соответствующими сервисами и
функциями, так и к графической подсистеме (если она используется).
операционная среда — это то системное программное окружение, в котором могут выполняться программы, созданные по правилам работы этой среды.
Прерывания
Прерывания представляют собой механизм, позволяющий координировать парал-
лельное функционирование отдельных устройств вычислительной системы и реа-
гировать на особые состояния, возникающие при работе процессора, то есть пре-
рывание — это принудительная передача управления от выполняемой программы
к системе (а через нее — к соответствующей программе обработки прерывания),
происходящая при возникновении определенного события.
Механизм обработки прерываний независимо от архитектуры вычислительной
системы подразумевает выполнение некоторой последовательности шагов.
1. Установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания (в операционных системах идентификация прерывания иногда осуществляется повторно, на шаге 4).
2. Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется, прежде всего, значением счетчика команд (адресом следующей команды, который, например, в i80x86 определяется регистрами CS и IP — указателем команды [1, 8, 48]), содержимым регистров процессора, и может включать также спецификацию режима (например, режим пользовательский или привилегированный) и другую информацию.
3. Управление аппаратно передается на подпрограмму обработки прерывания. В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информация из слова состояния. В более развитых процессорах, например в 32-разрядных микропроцессорах фирмы Intel (начиная с i80386 и включая последние процессоры Pentium IV) и им подобных, осуществляются достаточно сложная процедура определения начального адреса соответствующей подпрограммы обработки прерывания и не менее сложная процедура инициализации рабочих регистров процессора (подробно эти вопросы рассматриваются в разделе «Си стема прерываний 32-разрядных микропроцессоров i80x86» главы 4).
4. Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривается запоминание довольно большого объема информации о состоянии прерванных вычислений.
5. Собственно выполнение программы, связанной с обработкой прерывания. Эта работа может быть выполнена той же подпрограммой, на которую было передано управление на шаге 3, но в операционных системах достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.
6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
7. Возврат на прерванную программу.
Шаги 1- 3 реализуются аппаратно, шаги 4- 7 — программно.
главные функции механизма прерываний — это:
• распознавание или классификация прерываний;
• передача управления соответствующему обработчику прерываний;
• корректное возвращение к прерванной программе.
Переход от прерываемой программы к обработчику и обратно должен выполнять-
ся как можно быстрей. Одним из самых простых и быстрых методов является ис-
пользование таблицы, содержащей перечень всех допустимых для компьютера
прерываний и адреса соответствующих обработчиков.
Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке (system stack).
Прерывания, возникающие при работе вычислительной системы, можно разделить
на два основных класса: внешние (их иногда называют асинхронными) и внутрен-
ние (синхронные).
Внешние прерывания вызываются асинхронными событиями, которые происходят
вне прерываемого процесса, например:
• прерывания от таймера;
• прерывания от внешних устройств (прерывания по вводу-выводу);
• прерывания по нарушению питания;
• прерывания с пульта оператора вычислительной системы;
• прерывания от другого процессора или другой вычислительной системы.
Внутренние прерывания вызываются событиями, которые связаны с работой про-
цессора и являются синхронными с его операциями. Примерами являются следу-
ющие запросы на прерывания:
• при нарушении адресации (в адресной части выполняемой команды указан зап-
рещенный или несуществующий адрес, обращение к отсутствующему сегменту
или странице при организации механизмов виртуальной памяти);
• при наличии в иоле кода операции незадействованной двоичной комбинации;
• при делении на ноль;
• вследствие переполнения или исчезновения порядка;
• от средств контроля (например, вследствие обнаружения ошибки четности,
ошибок в работе различных устройств).
Наконец, существуют собственно программные прерывания. Эти прерывания про-
исходят по соответствующей команде прерывания, то есть по этой команде про-
цессор осуществляет практически те же действия, что и при обычных внутренних
прерываниях. Этот механизм был специально введен для того, чтобы переключе-
ние на системные программные модули происходило не просто как переход подпрограмму, а точно таким же образом, как и обычное прерывание. Этим, преж-
де всего, обеспечивается автоматическое переключение процессора в привилеги-
рованный режим с возможностью исполнения любых команд.
Сигналы, вызывающие прерывания, формируются вне процессора или в самом
процессоре, они могут возникать одновременно. Выбор одного из них для обра-
ботки осуществляется на основе приоритетов, приписанных каждому типу преры-
вания. Так, со всей очевидностью, прерывания от схем контроля процессора долж-
ны обладать наивысшим приоритетом (действительно, если аппаратура работает
неправильно, то не имеет смысла продолжать обработку информации). На рис. 1.3
Учет приоритета может быть встроен в технические средства,
а также определяться операционной системой, то есть кроме аппаратно реализо-
ванных приоритетов прерывания большинство вычислительных машин и комп-
лексов допускают программно-аппаратное управление порядком обработки сигна-
лов прерывания. Второй способ, дополняя первый, позволяет применять различные
дисциплины обслуживания прерываний.
Наличие сигнала прерывания не обязательно должно вызывать прерывание ис-
полняющейся программы. Процессор может обладать средствами защиты от пре-
рываний: отключение системы прерываний, маскирование (запрет) отдельных сиг-
налов прерывания. Программное управление этими средствами (существуют спе-
циальные команды для управления работой системы прерываний) позволяет опе-
рационной системе регулировать обработку сигналов прерывания, заставляя про-
цессор обрабатывать их сразу по приходу; откладывать обработку на некоторое
время; полностью игнорировать прерывания. Обычно операция прерывания вы-
полняется только после завершения выполнения текущей команды.
Программное управление специальными регистрами маски (маскирование сигна-
лов прерывания) позволяет реализовать различные дисциплины обслуживания.
• С относительными приоритетами, то есть обслуживание не прерывается даже
при наличии запросов с более высокими приоритетами. После окончания об-
служивания данного запроса обслуживается запрос с наивысшим приоритетом.
Для организации такой дисциплины необходимо в программе обслуживания
данного запроса наложить маски на все остальные сигналы прерывания или
просто отключить систему прерываний.
• С абсолютными приоритетами, то есть всегда обслуживается прерывание с
наивысшим приоритетом. Для реализации этого режима необходимо на время
обработки прерывания замаскировать все запросы с более низким приорите-
том. При этом возможно многоуровневое прерывание, то есть прерывание про-
грамм обработки прерываний. Число уровней прерывания в этом режиме изме-
няется и зависит от приоритета запроса.
• По принципу стека, или, как иногда говорят, по дисциплине LCFS (Last Come
First Served — последним пришел, первым обслужен), то есть запросы с более
низким приоритетом могут прерывать обработку прерывания с более высоким
приоритетом. Дли этого необходимо не накладывать маску ни на один из сиг-
налов прерывания и не выключать систему прерываний.
Следует особо отметить, что для правильной реализации последних двух дисцип-
лин нужно обеспечить полное маскирование системы прерываний при выполне-
нии шагов 1- 4 и 6-7. Это необходимо для того, чтобы не потерять запрос и пра-
вильно его обслужить. Многоуровневое прерывание должно происходить на этапе
собственно обработки прерывания, а не на этапе перехода с одного процесса вы-
числений на другой.
Управление ходом выполнения задач со стороны операционной системы заключа-
ется в организации реакций на прерывания, в организации обмена информацией
(данными и программами), в предоставлении необходимых ресурсов, в динамике
выполнения задачи и в организации сервиса. Причины прерываний определяет
операционная система (модуль, который называют супервизором прерываний), она
же и выполняет действия, необходимые при данном прерывании и в данной ситуа-
ции. Поэтому в состав любой операционной системы реального времени прежде
всего входят программы управления системой прерываний, контроля состояний
задач и событий, синхронизации задач, средства распределения памяти и управле-
ния ею, а уже потом средства организации данных (с помощью файловых систем
и т. д. Следует однако заметить, что современная операционная система реального
времени должна вносить в аппаратно-программный комплекс нечто большее, не-
жели просто обеспечение быстрой реакции на прерывания.
в подпрограмме обработки прерывания имеется две служебные секции. Это — первая
секция, в которой осуществляется сохранение контекста прерываемых вычисле-
ний, который не смог быть сохранен на шаге 2, и последняя, заключительная сек-
ция, в которой, наоборот, осуществляется восстановление контекста.
Для того чтобы система прерываний не среагировала повторно на сигнал запроса на прерывание,
она обычно автоматически «закрывает» (отключает) прерывания, поэтому необ-
ходимо потом в подпрограмме обработки прерываний вновь включать систему пре-
рываний. В соответствии с рассмотренными режимами обработки прерываний
(с относительными и абсолютными приоритетами и по правилу LCFS) установка
этих режимов осуществляется в конце первой секции подпрограммы обработки.
Таким образом, на время выполнения центральной секции (в случае работы в ре-
жимах с абсолютными приоритетами и по дисциплине LCFS) прерывания разре-
шены. На время работы заключительной секции подпрограммы обработки систе-
ма прерываний вновь должна быть отключена и после восстановления контекста
опять включена. Поскольку эти действия необходимо выполнять практически
в каждой подпрограмме обработки прерываний, во многих операционных систе-
мах первые секции подпрограмм обработки прерываний выделяются в уже упо-
минавшийся специальный системный программный модуль, называемый супер-
визором прерываний.
Супервизор прерываний прежде всего сохраняет в дескрипторе текущей задачи ра-
бочие регистры процессора, определяющие контекст прерываемого вычислитель-
ного процесса. Далее он определяет ту подпрограмму, которая должна выполнить
действия, связанные с обслуживанием настоящего (текущего) запроса на преры-
вание. Наконец, перед тем, как передать управление на эту подпрограмму, супер-
визор прерываний устанавливает необходимый режим обработки прерывания.
После выполнения подпрограммы обработки прерывания управление вновь пере-
дается ядру операционной системы. На этот раз уже на тот модуль, который зани-
мается диспетчеризацией задач (см. раздел «Планирование и диспетчеризация
процессов и задач» в главе 2). И уже диспетчер задач, в свою очередь, в соответ-
ствии с принятой дисциплиной распределения процессорного времени (между
выполняющимися вычислительными процессами) восстановит контекст той за-
дачи, которой будет решено выделить процессор. Рассмотренную нами схему ил-
люстрирует рис. 1.4.
Как мы видим из рисунка, здесь отсутствует возврат в прерванную ранее програм-
му непосредственно из самой подпрограммы обработки прерывания. Для прямого
возврата достаточно адрес возврата сохранить в стеке, что и делает аппаратура
процессора. При этом стек легко обеспечивает возможность возврата в случае вло-
женных прерываний, поскольку он всегда реализует дисциплину LCFS.
Однако если бы контекст вычислительных процессов сохранялся просто в стеке,
как это обычно реализуется аппаратурой, а не в специальных структурах данных,
называемых дескрипторами, о чем будет подробно изложено чуть позже, то у нас
не было бы возможности гибко подходить к выбору той задачи, которой нужно
передать процессор после завершения работы подпрограммы обработки прерыва-
ния.
в современных процессорах часто имеются специальные аппаратные возможности для сохранения контекста прерываемого вычислительного процесса непосредственно в его дескрипторе, то есть дескриптор процесса (по крайней мере его часть) становится структурой
данных, которую поддерживает аппаратура.
Понятия вычислительного процесса
и ресурса
Понятие последовательного вычислительного процесса, или просто процесса,
является одним из основных при рассмотрении операционных систем.
Последовательный процесс, иногда называемый задачей (task), — это отдельная программа с ее данными, выполняющаяся на последовательном процессоре.
Напомним, что под оследовательным мы понимаем такой процессор, в котором текущая команда выполняется после завершения предыдущей. В современных процессорах мы стал-
киваемся с ситуациями, когда возможно параллельное выполнение нескольких
команд. Это делается для повышения скорости вычислений. В этих процессорах
параллелизм достигается двумя основными способами — организацией конвейер-
ного механизма выполнения команды и созданием нескольких конвейеров. Одна-
ко в подобных процессорах аппаратными решениями обязательно достигается ло-
гическая последовательность в выполнении команд, предусмотренная программой.
Необходимость этого объясняется в главе 7, посвященной организации параллель-
ных вычислительных процессов.
Концепция процесса предполагает два аспекта: во-первых, он является носителем
данных и, во-вторых, он собственно и выполняет операции, связанные с обработкой этих данных.
В концепции, которая получила наибольшее распространение в 70-е годы, задача — это совокупность связанных между собой и образующих единое целое программных модулей и данных, требующая ресурсов вычислительной системы для своей реализации. В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор. Вычислительный процесс может включать в себя несколько задач.
Концепция процесса преследует цель выработать механизмы распределения и уп-
равления ресурсами.
Термин ресурс обычно применяется по отношению к многократно используемым, относительно стабильным и часто недостающим объектам, которые запрашиваются, задействуются и освобождаются в период их активности.
Другими словами, ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми, когда несколько процессов используют их одно-
временно (в один и тот же момент времени) или параллельно (попеременно в тече-
ние некоторого интервала времени), а могут быть и неделимыми
При разработке первых систем ресурсами считались процессорное время, память,
каналы ввода-вывода и периферийные устройства [22, 53]. Однако очень скоро
понятие ресурса стало гораздо более универсальным и общим. Различного рода
программные и информационные ресурсы также могут быть определены для сис-
темы как объекты, которые могут разделяться и распределяться и доступ к кото-
рым необходимо соответствующим образом контролировать. В настоящее время
понятие ресурса превратилось в абстрактную структуру с целым рядом атрибутов,
характеризующих способы доступа к этой структуре и ее физическое представле-
ние в системе. Более того, помимо системных ресурсов, о которых мы сейчас гово-
рили, ресурсами стали называть и такие объекты, как сообщения и синхросигна-
лы, которыми обмениваются задачи.
Мультипрограммирование,
многопользовательский режим работы
и режим разделения времени
Итак, операционная система может поддерживать мулътипрограммирование (мно-
гопроцессность). В этом случае она должна стараться эффективно использовать
имеющиеся ресурсы путем организации к ним очередей запросов, составляемых
тем или иным способом. Это требование достигается поддерживанием в памяти
более одного вычислительного процесса, ожидающего процессор, и более одного
процесса, готового использовать другие ресурсы, как только последние станут до-
ступными.
Общая схема выделения ресурсов такова. При необходимости использовать ка-
кой-либо ресурс (оперативную память, устройство ввода-вывода, массив данных
и т. п.) вычислительный процесс (задача) путем обращения к супервизору (supervisor)
операционной системы посредством специальных вызовов (команд, ди-
ректив) сообщает о своем требовании. При этом указывается вид ресурса и, если
надо, его объем.
Команда обращения к операционной системе передает ей управление, переводя
процессор в привилегированный режим работы (см. раздел «Прерывания»), если
такой существует. Большинство компьютеров имеют два (и более) режима рабо-
ты: привилегированный (режим супервизора) и пользовательский. Кроме того, мо-
гут быть режимы для эмуляции какой-нибудь другой ЭВМ или для организации
виртуальной машины, защищенной от остальных вычислений, осуществляемых
на этом же компьютере, и т. д. Мы уже говорили об этом, затрагивая вопрос орга-
низации прерываний.
1
Супервизор — центральный (главный) управляющий модуль операционной системы. Может состоять из нескольких модулей, например супервизора ввода-вывода, супервизора прерываний, супервизора программ, диспетчера задач и т. д. В последние годы термин «супервизор» применяется все реже и реже.
Ресурс может быть выделен вычислительному процессу (задаче), обратившемуся
к операционной системе с соответствующим запросом, если:
• ресурс свободен и в системе нет запросов от задач более высокого приоритета к
этому же ресурсу;
• текущий запрос и ранее выданные запросы допускают совместное использова-
ние ресурсов;
• ресурс используется задачей низшего приоритета и может быть временно ото-
бран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и возвращает уп-
равление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу
в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). Очередь к ре-
сурсу может быть организована несколькими способами, но чаще всего она реали-
зуется с помощью списковой структуры.
После окончания работы с ресурсом задача опять с помощью специального вызова
супервизора (посредством соответствующей команды) сообщает операционной сис-
теме об отказе от ресурса, либо операционная система забирает ресурс сама, если уп-
равление возвращается супервизору после выполнения какой-либо системной функ-
ции. Супервизор операционной системы, получив управление по этому обращению,
освобождает ресурс и проверяет, имеется ли очередь к освободившемуся ресурсу. Если
очередь есть, то в зависимости от принятой дисциплины обслуживания и приоритетов
заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в
состояние готовности к выполнению, после чего либо передаст управление ей, либо
возвращает управление задаче, только что освободившей ресурс.
При выдаче запроса на ресурс задача может указать, хочет ли она владеть ресурсом
монопольно или допускает совместное использование с другими задачами.
Если в системе имеется некоторая совокупность ресурсов, то управлять их исполь-
зованием можно на основе некоторой стратегии. Стратегия подразумевает четкую
формулировку целей, следуя которым можно добиться эффективного распреде ления ресурсов.
При организации управления ресурсами всегда требуется принять решение о том, что
в данной ситуации выгоднее: быстро обслуживать отдельные наиболее важные запро-
сы, предоставлять всем процессам равные возможности или обслуживать максималь-
но возможное количество процессов и наиболее полно использовать ресурсы [46].
Термин «дисциплина обслуживания» следует понимать как некое правило обслуживания, в том числе и учет каких-либо приоритетов при обслуживании. Например, дисциплина «последний пришедший обслуживается первым» определяет обслуживание в порядке, обратном очередности поступления соответствующих запросов.
Диаграмма состояний процесса
Необходимо отличать системные управляющие вычислительные процессы, пред-
ставляющие работу супервизора операционной системы и занимающиеся распреде
лением и управлением ресурсов, от всех других процессов: задач пользователей и
системных обрабатывающих процессов. Последние, хоть и относятся к операци-
онной системе, но не входят в ядро операционной системы и требуют общих ре-
сурсов для своей работы, которые получают от супервизора.
Для системных управляющих процессов, в отличие от обрабатывающих, в большинстве операционных систем ресурсы распределяются изначально и однозначно. Эти вычислительные процессы сами управляют ресурсами системы, в борьбе за которые конкурируют все остальные процессы. Поэтому исполнение системных управляющих программ не принято называть процессами, и термин «задача» следует употреблять только
по отношению к процессам пользователей и к системным обрабатывающим про-
цессам. Однако это справедливо не для всех операционных систем.
процесс может находиться в активном и пассивном
(не активном) состоянии. В активном состоянии процесс может конкурировать за
ресурсы вычислительной системы, а в пассивном состоянии он известен системе,
но за ресурсы не конкурирует (хотя его существование в системе и сопряжено с пре-
доставлением ему оперативной и/или внешней памяти).
активный процесс может быть в одном из следующих состояний:
• выполнения — все затребованные процессом ресурсы выделены (в этом состоя-
нии в каждый момент времени может находиться только один процесс, если
речь идет об однопроцессорной вычислительной системе);
• готовности к выполнению — ресурсы могут быть предоставлены, тогда процесс
перейдет в состояние выполнения;
• блокирования, или ожидания, — затребованные ресурсы не могут быть предо-
ставлены, или не завершена операция ввода-вывода.
В большинстве операционных систем последнее состояние, в свою очередь, под-
разделяется на множество состояний ожидания, соответствующих определенному виду ресурса, из-за отсутствия которого процесс переходит в заблокированное состояние.
В обычных операционных системах, как правило, процесс появляется при запуске
какой-нибудь программы. Операционная система организует (порождает, или
выделяет) для нового процесса уже упомянутую выше информационную структу-
ру — так называемый дескриптор процесса, и процесс (задача) начинает выпол-
няться. Поэтому пассивного состояния в большинстве систем не существует.
В операционных системах реального времени (ОСРВ) ситуация иная. Обычно при
проектировании системы реального времени состав выполняемых ею программ
(задач) известен заранее. Известны и многие их параметры, которые необходимо
учитывать при распределении ресурсов (например, объем памяти, приоритет, сред-
няя длительность выполнения, открываемые файлы, используемые устройства и
проч.). Поэтому для них заранее заводят дескрипторы задач с тем, чтобы впослед-
ствии не тратить драгоценное время на организацию дескриптора и поиски для
него необходимых ресурсов. Таким образом, в ОСРВ многие процессы (задачи)
могут находиться в состоянии бездействия
Процесс из состояния бездействия может перейти в состояние готовности в следу-
ющих случаях.
• По команде оператора (пользователя). Имеет место в тех диалоговых операци-
онных системах, где программа может иметь статус задачи, даже оставаясь пас-
сивной, а не просто быть исполняемым файлом и получать статус задачи толь-
ко на время исполнения (как это имеет место в большинстве современных
операционных систем, в том числе и для персональных компьютеров).
• При выборе из очереди планировщиком (характерно для операционных сис-
тем, работающих в пакетном режиме).
• При вызове из другой задачи (посредством обращения к супервизору один про-
цесс может создать, инициировать, приостановить, остановить, уничтожить
другой процесс).
• По прерыванию от внешнего инициативного устройства (ОСРВ)
• При наступлении запланированного времени запуска программы (ОСРВ).
Устройство называется инициативным, если по сигналу запроса па прерывание от него должна запускаться некоторая задача.
Из состояния выполнения процесс может выйти по одной из следующих при-
чин.
• Процесс завершается, при этом он посредством обращения к супервизору пере-
дает управление операционной системе и сообщает о своем завершении. В ре-
зультате этих действий супервизор либо переводит его в список бездействую-
щих процессов (процесс переходит в пассивное состояние), либо уничтожает.
Уничтожается, естественно, не сама программа, а именно задача, которая соот-
ветствовала исполнению этой программы. В состояние бездействия процесс
может быть переведен принудительно: по команде оператора или путем обра-
щения к супервизору операционной системы из другой задачи с требованием
остановить данный процесс. Само собой, что действие по команде оператора
реализуется системным процессом, который «транслирует» эту команду в за-
прос к супервизору с требованием перевести указанный процесс в состояние
бездействия.
• Процесс переводится супервизором операционной системы в состояние готов-
ности к исполнению в связи с появлением более приоритетной задачи или в свя-
зи с окончанием выделенного ему кванта времени.
• Процесс блокируется (переводится в состояние ожидания) либо вследствие
запроса операции ввода-вывода (которая должна быть выполнена прежде, чем
он сможет продолжить исполнение), либо в силу невозможности предоставить
ему ресурс, запрошенный в настоящий момент (причиной перевода в состоя-
ние ожидания может быть отсутствие сегмента или страницы в случае органи-
зации механизмов виртуальной памяти — см. раздел «Сегментная, страничная
и сегментно-страничная организация памяти» в главе 3), либо по команде опе-
ратора на приостанов задачи, либо по требованию через супервизор от другой
задачи.
При наступлении соответствующего события (завершилась операция ввода-вы-
вода, освободился затребованный ресурс, в оперативную память загружена необ-
ходимая страница виртуальной памяти и т. д.) процесс деблокируется и перево-
дится в состояние готовности к исполнению.
Таким образом, движущей силой, меняющей состояния процессов, являются со-
бытия. Одним из основных видов событий являются уже рассмотренные нами
прерывания.
Реализация понятия последовательного
процесса в операционных системах
Для того чтобы операционная система могла управлять процессами, она должна
располагать всей необходимой для этого информацией. С этой целью на каждый
процесс заводится специальная информационная структура, называемая дескрип-
тором процесса (описателем задачи, блоком управления задачей). В общем случае
дескриптор процесса, как правило, содержит следующую информацию:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


