Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSSO.docx
Скачиваний:
18
Добавлен:
21.08.2019
Размер:
175.27 Кб
Скачать

Создание процессов и потоков, их модели.

Процессы.

Создание процесса связано, прежде всего, с созданием его описателя. Он содержит несколько информационных структур, содержащих все сведения о процессе, необходимые ОС для управления им. В число этих сведений обычно входит:

● идентификатор процесса;

● данные о расположении в памяти исполняемого модуля;

● степень привилегированности процесса;

● суммарное потребное время реализации и др.

Физически создание процессов включает загрузку кодов и данных исполняемой программы с диска в оперативную память. Для этого необходимо найти программу на диске, перераспределить ОП, выделить часть ОП выполняемому модулю. Кроме того для каждого процесса возникает необходимость выделения стека, обеспечивающего вызов процедур и функций и передачу параметров в них.

Множество, в которое входит собственно программа, её данные, стеки и описатель процесса (атрибуты процесса) называют образом процесса.

Типовой образ процесса включает:

● данные пользователя – изменяемая часть пользовательского адресного пространства, включающая данные программы, пользовательский стек и модифицируемый код.

● собственно пользовательская программа – программа, которую по указанию пользователя необходимо выполнить.

● системный стек – один или несколько системных стеков для хранения параметров и адресов вызова процедур и системных служб.

● управляющий блок процесса – данные, необходимые ОС для управления процессом.

При управлении процессами ОС использует 2 основных типа информационных структур – блок управления процессом (дескриптор процесса) и контекст процесса.

Дескрипторы объединяются в таблицу процессов, которая размещается в области ядра. На основании информации таблицы процессов ОС осуществляет планирование и синхронизацию процессов. В дескрипторе содержится такая информация о процессе, которая требуется ядру в течение всего жизненного цикла процесса, независимо от его состояния (активное или пассивное) и место расположения (в ОП или на диске). Эта информация подразделяется на 3 категории:

● информация об идентификации процесса.

● информация о состоянии процесса.

● информация управления процессов.

Каждому процессу присваивается числовой идентификатор, который может быть просто порядковым номером в таблице процессов. При создании нового процесса, как правило, указывается родительский и дочерний процесс. Дополнительно может указываться идентификатор пользователя, который указывает, какое конкретное должностное лицо

Информация по состоянию включает:

● состояние процесса, определяющее готовность процесса к выполнению (выполняющийся, готовый к выполнению, ожидающий и приостановленный).

● данные о приоритете.

● информация о событиях, наступление которых позволит продолжить выполнение процессов.

● указатели позволяющие определить расположение процесса в памяти и на диске.

● ссылки и указатели на другие процессы, находящиеся в очереди на выполнение.

Информация об управлении:

● флаги, сигналы и сообщения, имеющие отношение к обмену информацией между двумя независимыми процессами.

● данные о привилегиях, определяющих права доступа к определенной области памяти и выполнение определённых команд, возможность запуска системных утилит.

● указатели на ресурсы, с которыми работает процесс (текстовые файлы, таблицы базы данных)

● история использования ресурсов и процессора.

Дополнительно в дескрипторе имеется информация для планирования – время ожидания, суммарное время решения, время последнего сеанса, количество выполненных операций и др.

Контекст процесса (закладка) содержит информацию, позволяющую ОС приостанавливать и возобновлять выполнение процесса с прерванного места.

Контекст содержит в себе следующую основную информацию:

● содержимое регистров процесса, доступных пользователю (обычно 8-32 регистра и до 100 регистров в RISC – процессорах)

● содержание счетчика команд.

● состояние управляющих регистров и регистров состояния операции.

● коды условий, хранящие результаты выполнения последней арифметической или логической операции (например, равенство нулю, переполнение).

● указатели вершин стеков, хранящие параметры и адреса вызовов процедур и системных служб.

Простейшая модель процесса предполагает, что он имеет 2 устойчивых состояния – выполняется и не выполняется. Если бы все процессы имели равный приоритет, всегда были готовы к выполнению, то очередь по данной схеме работала бы эффективно по принципу обслуживания в порядке поступления, а процессор обслуживал бы поступающие процессы круговым методом (Round-Robin). Каждому процессу отводится определенный промежуток времени (t кванта), после которого процесс возвращается в очередь или, если он решен полностью, выгружается из ОП. Однако не все процессы одновременно готовы к выполнению – часть из них по какой-то причине заблокирована (например, ожидают соответствующий ресурс). Поэтому при наличии одной очереди диспетчер вынужден просматривать её всю для поиска первого незаблокированного процесса.

Для повышения качества управления процессами целесообразно разделить все процессы на два типа: готовые к выполнению и заблокированные. Поскольку процессор работает намного быстрее, чем устройство ввода-вывода, вскоре все находящиеся в памяти процессы перейдут в состояние ожидания. Выходом может быть либо увеличение ёмкости ОП, либо применение свопинга – перенос части процессов из ОП на диск и загрузка другого процесса из приостановленной очереди, но готовой к выполнению, в ОП.

Одноканальная схема работает эффективно, только если все процессы всегда готовы к выполнению. Очередь работает по принципу обработки в порядке поступления, а процессор в режиме кругового обслуживания, где каждому процессу отводится квант времени, по истечении которого он возвращается в конец очереди.

При блокировки одного из процессов, вся очередь останавливается. Работа диспетчера существенно усложняется, так как он вынужден выбирать уже не только первый процесс, а первый незаблокированный процесс, который может находиться в очереди дальше других. Поэтому возникла необходимость перехода к двухканальной системе, в которой один канал обслуживает готовый процесс, а второй формирует очередь заблокированных процессов и переводит их, при выполнении условий разблокировки, в очередь выполнения первого канала.

Для устранения возможности перевода всех готовых процессов в ранг заблокированных за счет большей скорости работы процессора по отношению к устройствам ввода-вывода применяют следующие подходы:

● значительное увеличение кэш памяти (очень дорогой способ и в серийном производстве не применим).

● существенное увеличение ОП – на 30-35% увеличивает стоимость системы и поэтому может применяться в отдельных случаях.

● коммерческий подход, основанный на идее свопинга – часть процессов из ОП переносится на диск, тем самым освобождая место остальным процессам.

Потоки и их модели.

При создании потоков, как и при создании процессов, ОС генерирует специальную информационную структуру – описатель потока, содержащую идентификатор потока, данные о правах доступа и приоритете, состояние потока, время выполнения и другое.

Принципиально описатель потока делится на 2 части:

1. Атрибуты блока управления.

2. Контекст потока ( в многопоточной системе процессы контекстов не имеют).

Существует 2 способа реализации пакета потока:

● в пространстве пользователя или на уровне пользователя (User – Level threads –ULT)

● на уровне ядра. (Kernel – level threads KLT)

А. Организация потоков на уровне пользователя.

Программа, состоящая из ULT потоков, все действия по управлению потоками выполняет само приложение. Ядро о таких потоках ничего не знает и управляет только процессами.

Основное преимущество данной схемы заключается в том, что пакет потоков на уровне пользователя можно реализовать даже в ОС принципиально не поддерживающей потоки.

Так как управление происходит в пространстве, пользователя каждый процесс имеет собственную таблицу потоков. Она похожа на таблицу потоков, но дополнительно отслеживает важнейшие характеристики потоков - счетчик команд (указатель вершины стека), регистры состояния и др. Когда поток переходит в состояние готовности или блокировки, вся информация, необходимая для повторного запуска, хранится в таблице потоков.

В начале своей работы приложение состоит из одного потока и его выполнение начинается с реализации этого потока. Такое приложение вместе с его содержимым размещается в одном процессе, который управляется ядром. В дальнейшем без управления ядра этот поток может порождать другие потоки в пределах этого процесса с помощью специальных программ, входящих в библиотеку подпрограммы и функций предназначенных для работы с потоками. Когда управление переходит к библиотечной программе, контекст текущего процесса сохраняется в таблице потоков, а когда управление возвращается к потоку, его контекст восстанавливается.

Все события в рамках пользовательского пространства охватывают какой-то процесс и составляющие его потоки. Но ядро не подозревает о существовании потоков и продолжает управлять только процессами.

Достоинство данной схемы:

1. высокая производительность, поскольку для управления потоками не надо переключать в режим ядра и обратно. Процедура, сохраняющая информацию о потоке и планировщики - являются локальными, работающими внутри процесса.

2. имеется возможность использования различных алгоритмов управления потоками с учетом их спецификации.

3. данный подход возможно реализовать на всех типах, так как не требуется вносить изменения в ядро.

Недостатки:

1. В типичной ОС многие системные вызовы являются блокирующими. Когда в потоке выполняется блокирующий системный вызов, блокируется не только сам поток, но и все потоки с ним связанные, то есть, по сути, блокируется весь процесс.

2. Приложение не может воспользоваться преимуществом многопроцессорной системы, так как ядро закрепляет за каждым процессом только 1 процессор. В силу этого несколько потоков одного и того же процесса не могут выполняться параллельно.

3. При запуске одного потока, ни один другой поток не будет запущен, пока первый добровольно не освободит ресурс процессора.

4. Внутри одного процесса нет прерываний по таймеру, что не позволяет применить планировщик для поочерёдного временного выполнения потоков.

Б. Управление потоками на уровне ядра.

Процесс не имеет собственной системы управления потоками, управление ими осуществляется централизованно на уровне ядра. В ядре создается единая объединенная таблица потоков, отслеживающая все потоки в системе. Если системе необходимо создать новый поток или завершить имеющийся, он выполняет запрос ядра, который создает или завершает поток, внося соответствующие изменение в единую таблицу потоков.

Любое приложение можно запрограммировать как многопоточное, при этом все потоки приложения поддерживаются в рамках единого процесса. Ядро поддерживает информацию контекста процесса как единого целого, а также контекст каждого из потоков в него входящих. Планирование осуществляется ядром исходя из текущего состояния потока.

Достоинства схемы:

1. Возможность планирования работы нескольких потоков одного и того же процесса для выполнения на разных ЦП.

2. Реализуется мультипрограммирование в режимах нескольких процессов.

3. При блокировке одного из потоков выполняемого процесса ядро может выбрать на выполнение следующий готовый поток этого же процесса.

4. Все процедуры ядра многопоточные.

Недостаток схемы:

  1. Много кратное переключение режимов работы от пользовательского к ядру и обратно, что ведет к значительным потерям времени и снижает оперативность вычислительного процесса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]