Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Планирование процессов и обслуживание ввода-вывода
Процессы
Процесс (задача) - программа, находящаяся в режиме выполнения.
С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные.
Адресное пространство содержит:
С каждым процессом связывается набор регистров, например:
Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице процессов операционной системы.
Некоторые поля таблицы:
Управление процессом |
Управление памятью |
Управление файлами |
Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время |
Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека |
Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы |
Ресурс - называется всякий объект, который может распределяться внутри вычислительной системы.
Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми.
Модель процесса
В многозадачной системе реальный процессор переключается с процесса на процесс, но для упрощения модели рассматривается набор процессов, идущих параллельно (псевдопараллельно).
Рассмотрим схему с четырьмя работающими программами.
В каждый момент времени активен только один процесс
Справа представлены параллельно работающие процессы, каждый со своим счетчиком команд. Разумеется, на самом деле существует только один физический счетчик команд, в который загружается логический счетчик команд текущего процесса. Когда время, отведенное текущему процессу, заканчивается, физический счетчик команд сохраняется в памяти, в логическом счетчике команд процесса.
Создание процесса
Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess):
Во всех случаях, активный текущий процесс посылает системный вызов на создание нового процесса.
Операции над процессами
Процесс не может перейти из одного состояния в другое самостоятельно.
Процесс может породить новый процесс. В этом случае первый, порождающий процесс называется родительским процессом, а второй, созданный процесс — дочерним процессом. Для создания дочернего процесса необходим только один родительский процесс. При таком подходе создается иерархическая структура процессов, подобная показанной на рис. 3.4, в которой у дочернего процесса есть только один родительский процесс, но у каждого родительского процесса может быть много дочерних процессов.
Иерархия создания процессов
Операции создания и завершения процесса являются одноразовыми, т.к. применяются к процессу не более 1 раза (некоторые системные процессы при работе ВС не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов ( запуск, блокировка)как правило, являются многоразовыми.
Завершение процесса
Четыре события, приводящие к остановке процесса (вызов exit или ExitProcess):
Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти (core image), и компонентов таблицы процессов (в числе компонентов и его регистры).
Иерархия процессов
В UNIX системах заложена жесткая иерархия процессов. Каждый новый процесс созданный системным вызовом fork, является дочерним к предыдущему процессу. Дочернему процессу достаются от родительского переменные, регистры и т.п. После вызова fork, как только родительские данные скопированы, последующие изменения в одном из процессов не влияют на другой, но процессы помнят о том, кто является родительским.
В таком случае в UNIX существует и прародитель всех процессов - процесс init.
Дерево процессов для систем UNIX
Состояние процессов
Три состояния процесса:
Возможные переходы между состояниями.
1. Процесс блокируется, ожидая входных данных
2. Планировщик выбирает другой процесс
3. Планировщик выбирает этот процесс
4. Поступили входные данные
Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания.
На серверах для ускорения ответа на запрос клиента, часто загружают несколько процессов в режим ожидания, и как только сервер получит запрос, процесс переходит из "ожидания" в "выполнение". Этот переход выполняется намного быстрее, чем запуск нового процесса.
Потоки (нити, облегченный процесс)
Понятие потока
Каждому процессу соответствует адресное пространство и одиночный поток исполняемых команд. В многопользовательских системах, при каждом обращении к одному и тому же сервису, приходится создавать новый процесс для обслуживания клиента. Это менее выгодно, чем создать квазипараллельный поток внутри этого процесса с одним адресным пространством.
Сравнение многопоточной системы с однопоточной
Модель потока
С каждым потоком связывается:
Потоки делят между собой элементы своего процесса:
В остальном модель идентична модели процессов.
В POSIX и Windows есть поддержка потоков на уровне ядра.
Преимущества использования потоков
Реализация потоков в пространстве пользователя, ядра и смешанное
А - потоки в пространстве пользователя
B - потоки в пространстве ядра
В случае А ядро о потоках ничего не знает. Каждому процессу необходима таблица потоков, аналогичная таблице процессов.
Преимущества случая А:
Недостатки случая А: