Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 9
Текст из файла (страница 9)
Одним из основных видов событий являются уже рассмотренные намипрерывания.Реализация понятия последовательногопроцесса в операционных системахДля того чтобы операционная система могла управлять процессами, она должнарасполагать всей необходимой для этого информацией. С этой целью на каждыйпроцесс заводится специальная информационная структура, называемая дескриптором процесса (описателем задачи, блоком управления задачей).
В общем случаедескриптор процесса, как правило, содержит следующую информацию:Q идентификатор процесса (Process Identifier, PID);Q тип (или класс) процесса, который определяет для супервизора некоторые правила предоставления ресурсов;•приоритет процесса, в соответствии с которым супервизор предоставляет ресурсы (в рамках одного класса процессов в первую очередь обслуживаются более приоритетные процессы);Опеременную состояния, которая определяет, в каком состоянии находится процесс (готов к работе, выполняется, ожидает устройства ввода-вывода и т. д.);Q контекст задачи, то есть защищенную область памяти (или адрес такой области), в которой хранятся текущие значения регистров процессора, когда процесс прерывается, не закончив работы;•информацию о ресурсах, которыми процесс владеет и/или имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода-вывода и др.);О место (или его адрес) для организации общения с другими процессами;35Понятия вычислительного процесса и ресурса• параметры времени запуска (момент времени, когда процесс должен активизироваться, и периодичность этой процедуры);р в случае отсутствия системы управления файлами адрес задачи на диске в ееисходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если ее вытесняет другая задача (последнее справедливо для диск-резидентных задач, которые постоянно находятся во внешней памяти на системном магнитном диске и загружаются в оперативную память только на время выполнения).Описатели задач, как правило, постоянно располагаются в оперативной памятис целью ускорить работу супервизора, который организует их в списки (очереди)и отображает изменение состояния процесса перемещением соответствующего описателя из одного списка в другой.
Для каждого состояния (за исключением состояния выполнения для однопроцессорной системы) операционная система ведетсоответствующий список задач, находящихся в этом состоянии. Однако для состояния ожидания обычно имеется не один список, а столько, сколько различныхвидов ресурсов могут вызывать состояние ожидания. Например, состояний ожидания завершения операции ввода-вывода может быть столько, сколько устройствввода-вывода имеется в системе.В некоторых операционных системах количество описателей определяется жестко и заранее (на этапе генерации варианта операционной системы или в конфигурационном файле, который используется при загрузке ОС), в других по меренеобходимости система может выделять участки памяти под новые описатели.
Например, в уже мало кому известной системе OS/2, которая несколько лет томуназад многими специалистами считалась одной из лучших ОС для персональныхкомпьютеров, максимально возможное количество описателей задач указываетсяв конфигурационном файле CONFIG.SYS. Например, строка THREADS=1024 в файлеCONFIG.SYS означает, что всего в системе может параллельно существовать и выполняться до 1024 задач, включая вычислительные процессы и их потоки.В ныне широко распространенных системах Windows NT/2000/XP количествоописателей нигде в явном виде не задается. Это переменная величина, и она определяется самой операционной системой.
Однако посмотреть на текущее количество таких описателей можно. Если, работая в Windows NT/2000/XP, нажать одновременно комбинацию клавиш Ctrl+Shift+Esc, появится окно Диспетчера задач.На вкладке Быстродействие этой программы мы увидим поле с названием Всего дескрипторов и соответствующее число. Тут же указывается количество дескрипторов для управления потоками (задачами) и число полноценных вычислительныхпроцессов.
Более подробно о процессах и потоках см. далее.В операционных системах реального времени чаще всего количество процессовфиксируется, и, следовательно, целесообразно заранее определять (на этапе генерации или конфигурирования ОС) количество дескрипторов. Для использованиятаких операционных систем в качестве систем общего назначения (что нынче уженехарактерно)1 обычно количество дескрипторов бралось с некоторым запасом,ЛВ недалеком прошлом достаточно часто в качестве вычислительных систем общего назначения приобретались мини-ЭВМ и устанавливали на них ОС реального времени.36Глава 1.
Основные понятияи появление новой задачи связывалось с заполнением этой информационной структуры. Поскольку дескрипторы процессов постоянно располагаются в оперативнойпамяти (с целью ускорить работу диспетчера), то их количество не должно бытьочень большим.Для более эффективной обработки данных в системах реального времени целесообразно иметь постоянные задачи, полностью или частично всегда существующиев системе независимо от того, поступило на них требование или нет. Каждая постоянная задача обладает некоторой собственной областью оперативной памяти(ОЗУ-резидентная задача, или просто резидентная задача) независимо от того,выполняется задача в данный момент или нет. Эта область, в частности, можетиспользоваться для хранения данных, полученных задачей ранее.
Данные могутхраниться в ней и тогда, когда задача находится в состоянии ожидания или даже всостоянии бездействия.Для аппаратной поддержки работы операционных систем с этими информационными структурами (дескрипторами задач) в процессорах могут быть реализованысоответствующие механизмы. Так, например, в микропроцессорах Intel 80x86(см.
главу 4) имеется специальный регистр TR (Task Register), указывающий местонахождение специальной информационной структуры — сегмента состояниязадачи (Task State Segment, TSS), в котором при переключении с задачи на задачуавтоматически сохраняется содержимое регистров процессора [1,8, 48].Поскольку между терминами «процесс» и «задача» со временем появилось существенное различие, мы сейчас подробно рассмотрим этот вопрос.Процессы и задачиХотя понятия мультипрограммного и мультизадачного режимов работы достаточно близки, это все-таки не одно и то же. К сожалению, здесь до сих пор имеетсянекоторая путаница. Основные причины тому — не только то, что терминологияеще не устоялась и что многие фирмы-разработчики по-разному предпочиталиназывать одни и те же сущности, но и сложность, неоднозначность ситуации.Мультипрограммный режим предполагает, что операционная система организуетпараллельное выполнение нескольких вычислительных процессов на одном компьютере. И каждый вычислительный процесс может, в принципе, никак не зависеть от другого вычислительного процесса.
Разве что они могут задержать выполнение друг друга из-за необходимости поочередно разделять ресурсы или сильнозадерживать выполнение друг друга при владении неразделяемым ресурсом. У нихможет не быть ни общих файлов, ни общих переменных. Они вообще могут принадлежать разным пользователям. Просто эти процессы, с позиций внешнего наблюдателя, выполняются на одном и том же компьютере в одно и то же время.Хотя могут выполняться и в разное время, и на разных компьютерах. Главное —это то, что мультипрограммный режим обеспечивает для этих процессов их независимость. Каждому процессу операционная система выделяет затребованные ресурсы, он выполняется как бы на отдельной виртуальной машине. Средства защитысистемы должны обеспечить невмешательство одного вычислительного процессав другой вычислительный процесс.
И если такую защиту обеспечить невозможно,Понятия вычислительного процесса и ресурса37то система не может считаться надежной. Немало методов и конкретных способовбыло придумано разработчиками для обеспечения надежных вычислений и предотвращения возможности намеренно или по ошибке повлиять на результаты вычислений в другом процессе.Однако существует и другая потребность: не разделить вычислительные процессы друг от друга, а наоборот совместить их, обеспечить возможность тесного взаимодействия между осуществляемыми вычислениями.
Например, результаты вычислений одного вычислительного процесса могут требоваться для начала илипродолжения работы другого. Существует огромное количество ситуаций, когданеобходимо обеспечить активное взаимодействие между выполняющимися вычислительными процессами.
Если нет возможности получить доступ к переменнымдругого процесса, ибо операционная система построена надежно и защищает адресные пространства одного вычислительного процесса от вмешательства другоговычислительного процесса, то возникают очень серьезные препятствия на путипередачи каких бы то ни было данных между процессами.Термин мультизадачный режим работы стали применять как раз для тех случаев,когда необходимо обеспечить взаимодействие между вычислениями. Мультизадачный режим означает, что операционная система позволяет организовать параллельное выполнение вычислений, и имеются специальные механизмы для передачиданных, синхросигналов, каких-либо сообщений между этими взаимодействующими вычислениями.
Это можно сделать за счет того, что такие вычисления недолжны системой изолироваться друг от друга. Операционная система не должнадля них в обязательном порядке задействовать все механизмы защиты вычислений от невмешательства друг в друга. При мультизадачном режиме разработчикпрограммы должен позаботиться о разделении ресурсов между его задачами. Операционная система будет всего лишь разделять процессорное время между задачами.Понятие процесса было введено для реализации идей мультипрограммирования.Термин задача тоже, к сожалению, в большинстве случаев применялся для тогоже. В свое время различали термины «мультизадачность» и «мультипрограммирование», но потом они стали заменять друг друга, и это вносило немалую путаницу. Таким образом, для реализации мультизадачности в ее исходном толкованиинеобходимо было ввести соответствующую сущность.