1.70M
Category: informaticsinformatics

Процессы в ОС. Понятие потоков в ОС, классификация, реализация потоков. Лекция 3

1.

Лекция 3. Процессы в Ос.
Понятие потоков в ОС,
классификация, реализация
потоков

2.

ПОНЯТИЕ ПРОЦЕССА
Процесс (задача) - программа, находящаяся в
режиме выполнения.
С каждым процессом связывается его адресное
пространство, из которого он может читать и в
которое он может писать данные.
Адресное пространство содержит:
саму программу;
данные к программе;
стек программы.

3.

ПОНЯТИЕ ПРОЦЕССА
С каждым процессом связывается
набор регистров, например:
счетчика команд (в процессоре) - регистр в
котором содержится адрес следующей, стоящей
в очереди на выполнение команды. После того
как команда выбрана из памяти, счетчик
команд корректируется и указатель переходит
к следующей команде;
указатель стека;
и д.р.

4.

ТАБЛИЦА ПРОЦЕССОВ
Во многих операционных системах вся информация о
каждом процессе, дополнительная к содержимому его
собственного адресного пространства, хранится
в таблице процессов операционной системы.
Некоторые поля таблицы:

5.

МОДЕЛЬ ПРОЦЕССА
В многозадачной системе реальный процессор
переключается с процесса на процесс, но для
упрощения модели рассматривается набор
процессов, идущих параллельно
(псевдопараллельно).
Рассмотрим схему с четырьмя работающими
программами:
В каждый момент времени активен только один процесс

6.

СОЗДАНИЕ ПРОЦЕССА
Три основных события, приводящие к созданию
процессов (вызов fork или CreateProcess):
загрузка системы;
работающий процесс подает системный вызов
на создание процесса;
запрос пользователя на создание процесса.
Во всех случаях, активный текущий процесс
посылает системный вызов на создание нового
процесса.

7.

СОЗДАНИЕ ПРОЦЕССА
Чтобы создать процесс надо:
1) Присвоить уникальный идентификатор новому
процессу
2) Выделить ему место в памяти (для программы,
данных и стека) – физически в памяти
выделяются некоторые страницы (создается образ
процесса на диске)
3) Инициализировать РСВ (блок управления
процессом)
4) Добавить процесс в очередь «готовых» к
выполнению.

8.

ЗАВЕРШЕНИЕ ПРОЦЕССА
Четыре события, приводящие к остановке процесса
(вызов exit или ExitProcess):
плановое завершение (окончание выполнения);
плановый выход по известной ошибке (например,
отсутствие файла);
выход по неисправимой ошибке (ошибка в
программе);
уничтожение другим процессом.
Приостановленный процесс состоит из собственного
адресного пространства, обычно
называемого образом памяти (core image), и
компонентов таблицы процессов (в числе
компонентов и его регистры).

9.

СОСТОЯНИЕ ПРОЦЕССОВ
Три состояния процесса:
выполнение (занимает процессор);
готовность (процесс временно приостановлен,
чтобы позволить выполняться другому
процессу);
ожидание (процесс не может быть запущен по
своим внутренним причинам, например,
ожидая операции ввода/вывода).

10.

СОСТОЯНИЕ ПРОЦЕССОВ
Возможные переходы между
состояниями.
Процесс блокируется, ожидая
входных данных
2. Планировщик выбирает
другой процесс
3. Планировщик выбирает
этот процесс
4. Поступили входные данные
Переходы 2 и 3 вызываются планировщиком процессов операционной
системы, так что сами процессы даже не знают о этих переходах.

11.

СОСТОЯНИЕ ПРОЦЕССА
Любой процесс находится в нескольких состояниях, в самом простом
варианте можно выделить 3 состояния:
1) Предположим, что любой процесс начинает свою “жизнь” с состояния
«Выполнение».
2) Если был сделан запрос на вв/выв, он осуществляется с некоторой
задержкой (вв/выв работает медленней чем ЦП), значит появляется
некоторое ожидание события(т.е. ожидание вв/выв). Процесс в это
время находится в заблокированном состоянии «Блокировка». Ему
диспетчер не выделяет времени ЦП, ибо это бесполезно, процесс не
может делать какую-либо работу пока не выполнится вв/выв.
3) Далее, когда произошел вв/выв процесс уже может что-то обработать, его
состояние изменяется в состояние «Готовность» (процесс должен
показать диспетчеру о своей готовности работать). Диспетчер при
очередном переключении м/у процессами видит, что есть процесс в
состоянии «Готовность» и переключает его в состоянии
«Выполнение». В этом состоянии «Выполнение», диспетчер передает
процессу квант времени ЦП – начинается непосредственное
выполнение. Этот круг замкнутый.
Еще одно состояние, когда процесс попадает в «Готовность» - когда квант
процессорного времени, отведенный на выполнение истекает, то
происходит так называемый таймаут, процесс из состояния
«Выполнение» переходит в «Готовность» и диспетчер в это время
передает управление другому процессу.
Диспетчеру системы нужно знать, что происходит с общими событиями: с
вв/выв, синхронизацией, др.

12.

СОСТОЯНИЕ ПРОЦЕССА (НОВАЯ МОДЕЛЬ)
Новая модель состоит из 5 состояний, эта модель очень
близка к сегодняшним ОС
1. «Новый» – процесс создан, но он еще не помещен ОС в
пул выполняемых процессов. Создана структура РСВ,
но процесс еще не загружен в память (т.е.создан РСВ и
пустое адресное пространство).

13.

СОСТОЯНИЕ ПРОЦЕССА (НОВАЯ МОДЕЛЬ)
2.
Если новый процесс принимается ОС, если все
соблюдается, все права доступа, то процесс помещается
в состояние «Готовность»: процесс полностью готов к
выполнению, т.е. может получить управление и
непосредственно начать работать. Все загружено в
память, инициализированы данные, стек, куча.
3.
«Выполнение» - процесс исполняется.
4.
«Блокировка» - процесс ожидает внешнего события
(вв/выв).
5.
«Завершение» - процесс удаляется из пула
выполненных процессов, он закончил работу. Процесс
помечается как «завершенный». Диспетчер будет
выполнять работу по очистке процесса. На данном этапе
проходит работа по освобождению памяти, закрытию
ресурсов процесса (вв/выв, файлов…).

14.

УПРАВЛЕНИЕ ПРОЦЕССАМИ
Используется одна очередь «готовых» и одна очередь
«заблокированных» процессов
При этом есть следующие недостатки:
- При наступлении события, все ожидающие этого события
процессы нужно переместить из «заблокированных» в
очередь «готовых»
- Нужно смотреть в очереди все процессы, которые ожидают
именно того события, которое произошло и после этого
переместить их в очередь «готовых». После этого им будет
дано диспетчером время ЦП и они будут выполняться.
- ОС нужно посмотреть все заблокированные процессы в
очереди, чтобы выбрать правильный. Для этого придется все
время перебирать очередь заблокированных по кругу.

15.

ПОНЯТИЕ ПОТОКА
Каждому процессу соответствует адресное
пространство и одиночный поток исполняемых
команд. В многопользовательских системах, при
каждом обращении к одному и тому же сервису,
приходится создавать новый процесс для
обслуживания клиента.
Поток — это базовая единица, для
которой операционная система выделяет время
процессора.

16.

ОРГАНИЗАЦИЯ ПОТОКОВ
Организуются двумя способами:
1) На уровне ядра (есть функции ядра для создания
нового потока)
- выделяется стек выполнения на внутри адресного
пространства процесса
- создает и инициализирует Thread Control Block
(блок упр. процессом)
2) На уровне пользователя

17.

МОДЕЛЬ ПОТОКА
С каждым потоком связывается:
счетчик выполнения команд;
регистры для текущих переменных;
стек;
состояние.
Потоки делят между собой элементы своего процесса:
адресное пространство;
глобальные переменные;
открытые файлы;
таймеры;
семафоры (переменные для подсчета сигналов
запуска, сохраненных на будущее);
статистическую информацию.

18.

РЕАЛИЗАЦИЯ ПОТОКОВ
А - потоки в
пространстве
пользователя
B - потоки в
пространстве ядра
В случае А ядро о
потоках ничего не
знает. Каждому
процессу
необходима таблиц
а потоков,
аналогичная
таблице процессов.

19.

РЕАЛИЗАЦИЯ ПОТОКОВ
Преимущества случая А:
Такую многопоточность можно реализовать на ядре не
поддерживающим многопоточность
Более быстрое переключение, создание и завершение
потоков
Процесс может иметь собственный алгоритм
планирования.
Недостатки случая А:
Отсутствие прерывания по таймеру внутри одного
процесса
При использовании блокирующего (процесс переводится
в режим ожидания, например: чтение с клавиатуры, а
данные не поступают) системного запроса все остальные
потоки блокируются.
Сложность реализации

20.

РЕАЛИЗАЦИЯ ПОТОКОВ
Мультиплексирование потоков пользователя в потоках ядра
Поток ядра может содержать несколько потоков пользователя.

21.

ОСОБЕННОСТИ РЕАЛИЗАЦИИ WINDOWS
Используется четыре понятия:
Задание - набор процессов с общими квотами и
лимитами
Процесс - контейнер ресурсов (память ...), содержит
как минимум один поток.
Поток - именно исполняемая часть, планируемая
ядром.
Волокно - облегченный поток, управляемый полностью
в пространстве пользователя. Один поток может
содержать несколько волокон.
Потоки работают в режиме пользователя, но при
системных вызовах переключаются в режим ядра. Из-за
переключения в режим ядра и обратно, очень
замедляется работа системы. Поэтому было введено
понятие волокна. У каждого потока может быть
несколько волокон.

22.

ВЗАИМОДЕЙСТВИЕ МЕЖДУ ПРОЦЕССАМИ
Ситуации, когда процессам приходится
взаимодействовать:
Передача информации от одного процесса
другому
Контроль над деятельностью процессов
(например: когда они борются за один ресурс)
Согласование действий процессов (Например:
когда один процесс поставляет данные, а другой
их выводит на печать. Если согласованности не
будет, то второй процесс может начать печать
раньше, чем поступят данные).

23.

ПЕРЕДАЧА ИНФОРМАЦИИ МЕЖДУ
ПРОЦЕССАМИ
Передача может осуществляться несколькими способами:
Разделяемая память
Каналы (трубы), это псевдофайл, в который один
процесс пишет, а другой читает.
Сокеты - поддерживаемый ядром механизм,
скрывающий особенности среды и позволяющий
единообразно взаимодействовать процессам, как на
одном компьютере, так и в сети.
Почтовые ящики (только в Windows),
однонаправленные, возможность широковещательной
рассылки.
Вызов удаленной процедуры, процесс А может вызвать
процедуру в процессе В, и получить обратно данные.

24.

ПЕРЕДАЧА ИНФОРМАЦИИ МЕЖДУ
ПРОЦЕССАМИ
English     Русский Rules