Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Тема: Механизмы наследования процессов для основных архетипов операционных систем
Создание процессов и потоков. Модели процессов и потоков Создать процесс – это, прежде всего, создать описатель процесса: несколько информационных структур, содержащих все сведения (атрибуты) о процессе, необходимые операционной системе для управления им. В число таких сведений могут входить: идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т.п. Примерами таких описателей процесса являются: - блок управления задачей (ТСВ – Task Control Block) в OS/360; - управляющий блок процесса (PCB – Process Control Block) в OS/2; - дескриптор процесса в UNIX; - объект-процесс (object-process) в Windows NT/2000/2003. Создание процесса включает загрузку кодов и данных исполняемой программы данного процесса с диска в операционную память. Для этого нужно найти эту программу на диске, перераспределить оперативную память и выделить память исполняемой программе нового процесса. Кроме того, при работе программы обычно используется стек, с помощью которого реализуются вызовы процедур и передача параметров. Множество, в которое входят программа, данные, стеки и атрибуты процесса, называется образом процесса. Типичные элементы образа процесса приведены ниже.
Местонахождение образа процесса зависит от используемой схемы управления памятью. В большинстве современных ОС с виртуальной памятью образ процесса состоит из набора блоков (сегменты, страницы или их комбинация), не обязательно расположенных последовательно. Такая организация памяти позволять иметь в основной памяти лишь часть образа процесса (активная часть), в то время как во вторичной памяти находится полный образ. Когда в основную память загружается часть образа, она туда не переносится, а копируется. Однако если часть образа в основной памяти модифицируется, она должна быть скопирована на диск. При управлении процессами ОС использует два основных типа информационных структур: блок управления процессом (дескриптор процесса) и контекст процесса. Дескрипторы процессов объединяются в таблицу процессов, которая размещается в области ядра. На основании информации, содержащейся в таблице процессов, ОС осуществляет планирование и синхронизацию процессов. В дескрипторе (блоке управления) процесса содержится такая информация о процессе, которая необходима ядру в течение всего жизненного цикла процесса независимо от того, находится он в активном или пассивном состоянии и находится ли образ в оперативной памяти или на диске. Эту информацию можно разделить на три категории: - информация по идентификации процесса; - информация по состоянию процесса; - информация, используемая при управлении процессом. Каждому процессу присваивается числовой идентификатор, который может быть просто индексом в первичной таблице процессов. В любом случае должно существовать некоторое отображение, позволяющее операционной системе найти по идентификатору процесса соответствующие ему таблицы. При создании нового процесса идентификаторы указывают родительский и дочерние процессы. В операционных системах, не поддерживающих иерархию процессов, например, в Windows 2000, все созданные процессы равноправны, но один из 18-ти параметров, возвращаемых вызывающему (родительскому) процессу, представляет собой дескриптор нового процесса. Кроме того, процессу может быть присвоен идентификатор пользователя, который указывает, кто из пользователей отвечает за данное задание. Информация по состоянию и управлению процессом включает следующие основные данные: - состояние процесса, определяющее готовность процесса к выполнению (выполняющийся, готовый к выполнению, ожидающий какого-либо события, приостановленный); - данные о приоритете (текущий приоритет, по умолчанию, максимально возможный); - информация о событиях – идентификация события, наступление которого позволит продолжить выполнение процесса; - указатели, позволяющие определить расположение образа процесса в оперативной памяти и на диске; - указатели на другие процессы (в частности, находящиеся в очереди на выполнение); - флаги, сигналы и сообщения, имеющие отношение к обмену информацией между двумя независимыми процессами; - данные о привилегиях, определяющих права доступа к определенной области памяти или возможности выполнять определенные виды команд, использовать системные утилиты и службы; - указатели на ресурсы, которыми управляет процесс (например, перечень открытых файлов); - сведения по истории использования ресурсов и процессора; - информация, связанная с планированием. Эта информация во многом зависит от алгоритма планирования. Сюда относятся, например, такие данные, как время ожидания или время, в течение которого процесс выполнялся при последнем запуске, количество выполненных операций ввода-вывода и др. Контекст процесса содержит информацию, позволяющую системе приостанавливать и возобновлять выполнение процесса с прерванного места. В контексте процесса содержится следующая основная информация [10]: - содержимое регистров процессора, доступных пользователю; - содержимое счетчика команд; - состояние управляющих регистров и регистров состояния; - коды условий, отражающие результат выполнения последней арифметической или логической операции (например, знак равенства нулю, переполнения); - указатели вершин стеков, хранящие параметры и адреса вызова процедур и системных служб. Следует заметить, что часть этой информации, известная как " слово состояния программы" (Program Status Word – PSW), фиксируется в специальном регистре процессора (например, в регистре EFLAGS в процессорах Pentium). Самую простую модель процесса можно построить исходя из того, что в любой момент времени процесс либо выполняется, либо не выполняется, т.е. имеет только два состояния. Если бы все процессы были бы всегда готовы к выполнению, то очередь по этой схеме могла бы работать вполне эффективно. Такая очередь работает по принципу обработки в порядке поступления, а процессор обслуживает имеющиеся в наличии процессы круговым методом (Round-robin). Каждому процессу отводится определенный промежуток времени, по истечении которого он возвращается в очередь. Однако в таком простом примере подобная реализация не является адекватной: часть процессов готова к выполнению, а часть заблокирована, например, по причине ожидания ввода-вывода. Поэтому при наличии одной очереди диспетчер не может просто выбрать для выполнения первый процесс из очереди. Перед этим он должен будет просматривать весь список, отыскивая незаблокированный процесс, который находится в очереди дальше других. Отсюда представляется естественным разделить все невыполняющиеся процессы на два типа: готовые к выполнению и заблокированные. Полезно добавить еще два состояния, как показано на рис. 6.1.
Рис 6.1
Лекция 7. Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 837; Нарушение авторского права страницы