Какая информация содержится в контексте процесса
5.4. Создание процессов и потоков. Модели процессов и потоков
Создать процесс – это, прежде всего, создать описатель процесса: несколько информационных структур, содержащих все сведения (атрибуты) о процессе, необходимые операционной системе для управления им. В число таких сведений могут входить: идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т.п.
Примерами таких описателей процесса являются [10, 17]:
- блок управления задачей (ТСВ – 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). Каждому процессу отводится определенный промежуток времени, по истечении которого он возвращается в очередь.
Однако в таком простом примере подобная реализация не является адекватной: часть процессов готова к выполнению, а часть заблокирована, например, по причине ожидания ввода-вывода. Поэтому при наличии одной очереди диспетчер не может просто выбрать для выполнения первый процесс из очереди. Перед этим он должен будет просматривать весь список, отыскивая незаблокированный процесс, который находится в очереди дальше других. Отсюда представляется естественным разделить все невыполняющиеся процессы на два типа: готовые к выполнению и заблокированные. Полезно добавить еще два состояния, как показано на рис. 5.6.
Рис.
5.6.
Состояния процесса
В чем достоинства и недостатки такой модели и как устранить эти недостатки? Поскольку процессор работает намного быстрее выполнения операций ввода-вывода, то вскоре все находящиеся в памяти процессы оказываются в состоянии ожидания ввода-вывода. Таким образом, процессор может простаивать даже в многозадачной системе. Что делать? Можно увеличить емкость основной памяти, чтобы в ней умещалось больше процессов.
Но такой подход имеет два недостатка: во-первых, возрастает стоимость памяти, а во-вторых, «аппетит» программиста в использовании памяти возрастает пропорционально ее объему, так что увеличение объема памяти приводит к увеличению размера процессов, а не к росту их числа. Другое решение проблемы – свопинг, перенос части процессов из оперативной памяти на диск и загрузка другого процесса из очереди приостановленных (но не блокированных!) процессов, находящихся во внешней памяти. На этом мы прервем рассмотрение модели процессов и их выполнения. Как уже отмечалось, более эффективными являются многопоточные системы. В таких системах при создании процесса ОС создается для каждого процесса минимум один поток выполнения.
При создании потоков, так же как и при создании процессов, ОС генерирует специальную информационную структуру – описатель потока, который содержит идентификатор потока, данные о правах доступа и приоритете, о состоянии потока и другую информацию. Описатель потока можно разделить на две части: атрибуты блока управления и контекст потока. Заметим, что в случае многопоточной системы процессы контекста не имеют, так как им не выделяется процессор.
Есть два способа реализации пакета потоков [17]:
- в пространстве пользователя или на уровне пользователя (User-level threads – ULT);
- в ядре или на уровне ядра (kernel-level threads – KLT).
Рассмотрим эти способы, их преимущества и недостатки.
В программе, полностью состоящей из ULT-потоков, все действия по управлению потоками выполняются самим приложением. Ядро о потоках ничего не знает и управляет обычными однопоточными процессами (рис. 5.7).
Рис.
5.7.
Потоки в пространстве пользователя
Наиболее явное преимущество этого подхода состоит в том, что пакет потоков на уровне пользователя можно реализовать даже в ОС, не поддерживающей потоки.
Если управление потоками происходит в пространстве пользователя, каждому процессу необходима собственная таблица потоков. Она аналогична таблице процессов с той лишь разницей, что отслеживает такие характеристики потоков, как счетчик команд, указатель вершины стека, регистры состояния и т. п. Когда поток переходит в состояние готовности или блокировки, вся информация, необходимая для повторного запуска, хранится в таблице потоков.
По умолчанию приложение в начале своей работы состоит из одного потока и его выполнение начинается как выполнение этого потока. Такое приложение вместе с составляющим его потоком размещается в одном процессе, который управляется ядром. Выполняющийся поток может породить новый поток, который будет выполняться в пределах того же процесса. Новый поток создается с помощью вызова специальной подпрограммы из библиотеки, предназначенной для работы с потоками. Передача управления этой программе происходит в результате вызова соответствующей процедуры.
Таких процедур может быть по крайней мере четыре: thread-create, thread-exit, thread-wait и thread-yield, но обычно их больше. Библиотека подпрограмм для работы с потоками создает структуру данных для нового потока, а потом передает управление одному из готовых к выполнению потоков данного процесса, руководствуясь некоторым алгоритмом планирования. Когда управление переходит к библиотечной программе, контекст текущего процесса сохраняется в таблице потоков, а когда управление возвращается к потоку, его контекст восстанавливается. Все эти события происходят в пользовательском пространстве в рамках одного процесса. Ядро даже «не подозревает» об этой деятельности и продолжает осуществлять планирование процесса как единого целого и приписывать ему единое состояние выполнения.
Использование потоков на уровне пользователя имеет следующие преимущества [17]:
- высокая производительность, поскольку для управления потоками процессу не нужно переключаться в режим ядра и обратно. Процедура, сохраняющая информацию о потоке, и планировщики являются локальными процедурами, их вызов существенно более эффективен, чем вызов ядра;
- имеется возможность использования различных алгоритмов планирования потоков в различных приложениях (процессах) с учетом их специфики;
- использование потоков на пользовательском уровне применимо для любой операционной системы. Для их поддержки в ядро системы не требуется вносить каких-либо изменений.
Однако имеются и недостатки по сравнению с использованием потоков на уровне ядра:
- в типичной ОС многие системные вызовы являются блокирующими. Когда в потоке, работающем на пользовательском уровне, выполняется системный вызов, блокируется не только этот поток, но и все потоки того процесса, к которому он относится;
- в стратегии с наличием потоков только на пользовательском уровне приложение не может воспользоваться преимуществом многопроцессорной системы, так как ядро закрепляет за каждым процессом только один процессор. Поэтому несколько потоков одного и того же процесса не могут выполняться одновременно. В сущности, получается мультипрограммирование в рамках одного процесса;
- при запуске одного потока ни один другой поток не будет запущен, пока первый добровольно не отдаст процессор. Внутри одного процесса нет прерываний по таймеру, в результате чего невозможно создать планировщик для поочередного выполнения потоков.
Рассмотрим теперь потоки на уровне ядра. В этом случае в области приложения система поддержки исполнения программ не нужна, нет необходимости и в таблицах потоков в каждом процессе. Вместо этого есть единая таблица потоков, отслеживающая все потоки в системе. Если потоку необходимо создать новый поток или завершить имеющийся, он выполняет запрос ядра, который создает или завершает поток, внося изменения в таблицу потоков (рис. 5.8).
Рис.
5.8.
Потоки в пространстве ядра
Любое приложение можно запрограммировать как многопоточное, при этом все потоки приложения поддерживаются в рамках единого процесса. Ядро поддерживается информацией контекста процесса как единого целого, а также контекстами каждого отдельного потока процесса. Планирование осуществляется ядром, исходя из состояния потоков. С помощью такого подхода удается избавиться от основных недостатков потоков пользовательского уровня.
Возможно планирование работы нескольких потоков одного и того же процесса на нескольких процессорах:
- реализуется мультипрограммирование в режимах нескольких процессов (вообще – всех);
- при блокировке одного из потоков процесса ядро может выбрать для выполнения другой поток этого же процесса;
- процедуры ядра могут быть многопоточными.
Главный недостаток связан с необходимостью двукратного переключения режимов пользовательский – ядро, ядро – пользовательский для передачи одного потока к другому в рамках одного и того же процесса.
Главная / Операционные системы /
Современные операционные системы / Тест 5
Упражнение 1:
Номер 1
Что такое процесс?
Ответ:
 (1) экзепляр выполняемой программы 
 (2) ход выполнения программы 
 (3) попеременное выполнение нескольких программ на одном процессоре 
Номер 2
Что такое поток?
Ответ:
 (1) экземпляр выполняемой программы 
 (2) ход выполнения программы 
 (3) попеременное выполнение нескольких программ на одном процессоре 
Номер 3
Что такое многозадачность?
Ответ:
 (1) способ организации вычислительного процесса, при котором на одном процессоре одновременно выполняются несколько программ 
 (2) способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ 
 (3) способ организации вычислительного процесса, при котором на нескольких процессорах выполняется одна и та же программа 
Упражнение 2:
Номер 1
Какие утверждения являются верными?
Ответ:
 (1) поток выполняется в рамках владеющего им процесса 
 (2) поток выполняется в форме одного или нескольких процессов 
 (3) процесс является более крупной единицей, чем поток 
Номер 2
Какие утверждения являются верными?
Ответ:
 (1) поток является менее крупной единицей, чем процесс 
 (2) процесс выполняется в форме одного или нескольких потоков 
 (3) процесс выполняется в рамках владеющего им потока 
Номер 3
Какие утверждения не являются верными?
Ответ:
 (1) поток является более крупной единицей, чем процесс 
 (2) процесс выполняется в форме одного или нескольких потоков 
 (3) процесс выполняется в рамках владеющего им потока 
Упражнение 3:
Номер 1
Какие параметры включаются в квоты?
Ответ:
 (1) максимальное количество процессов для задания 
 (2) суммарное время центрального процессора 
 (3) максимальное количество используемой памяти для процесса  
 (4) максимальное количество используемой памяти для задания в целом 
Номер 2
Какое минимальное количество потоков содержится в каждом процессе?
Ответ:
 (1) 0 
 (2) 1 
 (3) 2 
Номер 3
В каком случае поток работает в режиме ядра?
Ответ:
 (1) в том случае, когда он обращается к системному вызову 
 (2) после завершения системного вызова 
 (3) поток всегда работает в режиме ядра 
 (4) поток никогда не может работать в режиме ядра 
Упражнение 4:
Номер 1
Когда происходит завершение процесса?
Ответ:
 (1) только тогда, когда все потоки процесса завершаются одновременно 
 (2) когда завершается хотя бы один активный поток процесса 
 (3) когда завершается последний активный поток процесса 
Номер 2
Что такое задание?
Ответ:
 (1) набор процессов с общими квотами и лимитами 
 (2) контейнер для ресурсов и потоков 
 (3) исполнение кода в процессе 
 (4) облегченный поток, полностью управляемый в пространстве пользователя 
Номер 3
Что такое волокно?
Ответ:
 (1) набор процессов с общими квотами и лимитами 
 (2) контейнер для ресурсов и потоков 
 (3) исполнение кода в процессе 
 (4) облегченный поток, полностью управляемый в пространстве пользователя 
Упражнение 5:
Номер 1
Что такое пропускная способность вычислительной системы?
Ответ:
 (1) количество задач, выполняемых системой в единицу времени 
 (2) возможность пользователя одновременно работать в интерактивном режиме с несколькими приложениями на одной машине 
 (3) способность выдерживать заранее заданные интервалы времени между запуском программы и получением конечного результата.
 
Номер 2
Что такое реактивность системы?
Ответ:
 (1) количество задач, выполняемых системой в единицу времени 
 (2) возможность пользователя одновременно работать в интерактивном режиме с несколькими приложениями на одной машине 
 (3) способность выдерживать заранее заданные интервалы времени между запуском программы и получением конечного результата.
 
Номер 3
Какие характеристики являются показателями эффективности вычислительных систем?
Ответ:
 (1) пропускная способность  
 (2) удобство работы пользователей 
 (3) реактивность системы 
Упражнение 6:
Номер 1
Какие операционные системы предназначены для решения задач вычислительного характера, не требующих быстрого получения результатов?
Ответ:
 (1) cистемы пакетной обработки 
 (2) системы разделения времени 
 (3) системы реального времени 
Номер 2
Какие операционные системы предназначены для управления техническими объектами, технологическими процессами, системами обслуживания разного рода?
Ответ:
 (1) cистемы пакетной обработки 
 (2) системы разделения времени 
 (3) системы реального времени 
Номер 3
Для каких систем главным критерием эффективности является время реакции системы?
Ответ:
 (1) для систем разделения времени 
 (2) для систем реального времени 
 (3) для cистем пакетной обработки 
Упражнение 7:
Номер 1
В чем отличие многопроцессорной обработки от многопрограммной обработки?
Ответ:
 (1) в том, что при многопроцессорной обработке несколько задач выполняется одновременно на нескольких процессорах 
 (2) в том, что при многопроцессорной обработке несколько задач выполняется одновременно на одном процессоре 
 (3) в том, что при многопроцессорной обработке несколько задач выполняется параллельно на одном процессоре 
Номер 2
Какие признаки характерны для симметричной архитектуры мультипроцессорной системы?
Ответ:
 (1) процессоры различаются по характеристикам (производительность, система команд) 
 (2) однотипность и единообразие включения процессоров 
 (3) большая разделяемая между процессорами память 
 (4) процессоры различаются по функциональной роли в работе системы 
Номер 3
Какие признаки характерны для асимметричной архитектуры мультипроцессорной системы?
Ответ:
 (1) процессоры различаются по характеристикам (производительность, система команд) 
 (2) однотипность и единообразие включения процессоров 
 (3) большая разделяемая между процессорами память 
 (4) процессоры различаются по функциональной роли в работе системы 
Упражнение 8:
Номер 1
Какие функции выполняет подсистема управления процессами и потоками?
Ответ:
 (1) создание процессов и потоков 
 (2) обеспечение процессов и потоков необходимыми ресурсами 
 (3) организация межпроцессного взаимодействия 
 (4) синхронизация процессов и потоков 
Номер 2
Что такое демон?
Ответ:
 (1) высокоприоритетный процесс, обеспечивающий взаимодействие с пользователями и выполняющий заданную работу 
 (2) фоновый процесс 
 (3) любой завершившийся процесс в операционной системе 
Номер 3
Какие утверждения являются верными?
Ответ:
 (1) любому процессу все ресурсы выделяются при его создании 
 (2) ресурсы могут быть выделены процессу динамически по запросам во время выполнения 
 (3) ресурсы не могут быть выделены процессу на все время его выполнения 
 (4) возможно выделение ресурсов процессу только на определенный период 
Упражнение 9:
Номер 1
Какой этап является самым последним при выполнении диспетчеризации?
Ответ:
 (1) запуск нового потока на выполнение 
 (2) сохранение контекста текущего потока 
 (3) загрузка контекста потока, выбранного в результате планирования 
Номер 2
Какой этап является самым первым при выполнении диспетчеризации?
Ответ:
 (1) запуск нового потока на выполнение 
 (2) сохранение контекста текущего потока 
 (3) загрузка контекста потока, выбранного в результате планирования 
Номер 3
Какие из перечисленных механизмов работают с потоками (а не с процессами)?
Ответ:
 (1) мьютексы 
 (2) критические области 
 (3) семафоры 
Упражнение 10:
Номер 1
Какая информация содержится в дескрипторе процесса?
Ответ:
 (1) содержимое счетчика команд 
 (2) содержимое регистров процессора, доступных пользователю 
 (3) информация по идентификации процесса 
 (4) информация по состоянию процесса 
 (5) коды условий, отражающие результат выполнения последней арифметической или логической операции 
 (6) информация, используемая при управлении процессом 
Номер 2
Какая информация содержится в контексте процесса?
Ответ:
 (1) содержимое счетчика команд 
 (2) содержимое регистров процессора, доступных пользователю 
 (3) информация по идентификации процесса 
 (4) информация по состоянию процесса 
 (5) коды условий, отражающие результат выполнения последней арифметической или логической операции 
 (6) информация, используемая при управлении процессом 
Номер 3
Какая информация содержится в контексте процесса?
Ответ:
 (1) информация о процессе, которая необходима ядру в течение всего жизненного цикла процесса независимо от его состояния 
 (2) информация, позволяющая системе приостанавливать выполнение процесса 
 (3) информация, позволяющая системе возобновлять выполнение процесса с прерванного места 
Упражнение 11:
Номер 1
Чем семафоры отличаются от других синхронизирующих объектов?
Ответ:
 (1) наличием у них только двух состояний 
 (2) отсутствием у них счетчика ресурсов 
 (3) наличием у них счетчика ресурсов 
Номер 2
Какой синхронизирующий объект имеет счетчик ресурсов?
Ответ:
 (1) семафор 
 (2) мьютекс 
 (3) таймер 
Номер 3
Какое значение счетчика соответствует сброшенному состоянию семафора?
Ответ:
 (1) отрицательное 
 (2) нулевое 
 (3) положительное 
Упражнение 12:
Номер 1
Какие из перечисленных условий должны быть выполнены для возникновения тупиковой ситуации?
Ответ:
 (1) условие взаимного исключения 
 (2) условие удерживания и ожидания 
 (3) условие отсутствия принудительной выгрузки ресурсов 
 (4) условие циклического ожидания 
Номер 2
Какие прерывания происходят синхронно выполнению программы при появлении аварийной ситуации в ходе исполнения некоторой инструкции программы?
Ответ:
 (1) внешние прерывания 
 (2) внутренние прерывания 
 (3) программные прерывания 
Номер 3
Какие прерывания возникают в результате действий пользователя, поступления сигналов от периферийных устройств и других внешних устройств, подключенных к компьютеру
Ответ:
 (1) внешние прерывания 
 (2) внутренние прерывания 
 (3) программные прерывания