Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программные единицы (процессы и потоки), соревнующиеся за ресурсы системы.



Чтобы поддерживать мультипрограммирование операционная система должна определить единицы работы, между которыми будет разделяться процессор, память и другие ресурсы. Такими единицами работы в режиме мультипрограммирования естественно являются обсуждавшиеся выше конкурирующие программы. Процесс можно определить, как программную единицу, конкурирующую (соревнующуюся) за ресурсы вычислительной системы. Понятие процесса возникло только с возникновением идеи мультипрограммирования и появлением в связи с этим, конкурирующих между собой за ресурсы системы, программ. Ну и, конечно, концепция процесса предполагает два аспекта:

- процесс является носителем данных;

- процесс выполняет операции, связанные с обработкой этих данных.

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

Чтобы лучше понять, как в операционной системе происходит выполнение процессов, рассмотрим пример. Допустим, в оперативной памяти находятся две программы (А и Б), выполняющие длительные вычисления и периодически «подкачивающие» новые данные для обработки. Сначала запускается программа (процесс) А. Через некоторое время процессу А понадобились новые данные и он обращается с запросом на ввод данных к операционной системе. Этот запрос возбуждает программное прерывание, в результате которого:

- процесс А будет переведен операционной системой в состояние ожидания окончания ввода данных;

- будет запущена операция ввода данных для процесса А;

- управление получит диспетчер задач, который запустит на выполнение процесс Б.

Выполняется процесс Б. Далее, возможны варианты событий. Если процесс Б запросит у операционной системы новые данные раньше окончания запущенной операции ввода-вывода по запросу процесса А, то операционная система переведет Б в ожидание «подкачки» данных. Если кроме А и Б в этот момент в системе нет пользовательских процессов, то система будет бездействовать до тех пор, пока одно из внешних устройств не завершит операцию ввода данных.

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

Основные ресурсы, за которые соревнуются процессы – это:

- время центрального процессора;

- оперативная память;

- программные ресурсы;

- наборы данных (файлы)

-внутренние регистры процессора

- устройства ввода-вывода

Классификация ресурсов.

1. Разделяемые ресурсы

1.1 Одновременно разделяемые. Несколько процессов используют их одновременно. Например, оперативная память.

1.2 Параллельно (попеременно) разделяемые. Процессы используют их попеременно. Например, центральный процессор.

2. Неделимые. Очередной процесс может воспользоваться ресурсом только после освобождения его другим процессом. Например, принтер.

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

Распределение времени центрального процессора.

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

Распределение оперативной памяти.

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

Внутренние регистры процессора.

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

Внешние устройства.

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

Программные ресурсы.

Под программными ресурсами понимают системные программные модули, которые распределяются между выполняющимися программами (процессами). Подобные модули должны обладать свойством реентерабельности, т. е. должны допускать одновременное вхождение в них нескольких программ (процессов). После прерывания выполнения такого модуля, исполняемого в рамках одного вычислительного процесса, должно быть обеспечено повторное вхождение в него другого вычислительного процесса. Реентерабельный модуль может использоваться одновременно двумя или более программами (процессами) в мультипрограммном режиме. Это достигается за счет того, что:

- содержимое области памяти, где размещается реентерабельная программа, никогда не изменяется во время выполнения.

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

Понятия процесс и поток.

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

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

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

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

Дескриптор процесса.

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

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

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

- степень привилегированности процесса (приоритет, права доступа);

- сведения о ресурсах, выделенных процессу

- все необходимые сведения для осуществления планирования

- данные о расположении образа процесса в оперативной памяти и на диске;

- идентификатор пользователя, создавшего процесс;

- сведения о событиях, осуществления которых ожидает процесс;

- сведения о родственных процессах.

Дескрипторы отдельных процессов объединяются операционной системой в список (таблицу процессов). Память для списка дескрипторов выделяется динамически в области ядра операционной системы.

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

Планирование и диспетчеризация.

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

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

Рассмотрим различные наборы (смеси) процессов в вычислительной системе.

1. Процессы заняты, главным образом, длительными вычислениями. 

2. Все процессы заняты преимущественно операциями ввода-вывода.

3. Наблюдается смесь процессов – часть процессов преимущественно вычислительного характера, часть – преимущественно осуществляет ввод-вывод.

Возникает задача подбора такой смеси процессов, при которой процессы как можно меньше конфликтуют за ресурсы вычислительной системы. При такой смеси процессов повышается производительность системы. Такая задача называется планированием вычислительных процессов. Говоря о планировании в отношении независимых процессов, употребляют термин долгосрочное планирование. Планирование (долгосрочное) – это, в какой-то степени, история развития операционных систем. Актуальность этой задачи в настоящее время стала меньше. В современных системах более актуальна задача эффективного распределения ресурсов, возникающая по каждому событию – задача так называемого динамического планирования (краткосрочного планирования). Задачу динамического планирования называют диспетчеризацией.

Определим еще раз, какие задачи решаются при долгосрочном и краткосрочном планировании.

Задача долгосрочного планирования – в случае освобождении памяти выбрать определенный процесс из входной очереди для перевода его в очередь процессов, готовых к выполнению. При этом из входной очереди выбирается процесс для создания неоднородной мультипрограммной смеси. Неоднородная мультипрограммная смесь означает, что в очереди готовых к счету программ, должны находиться как процессы с преимущественным вводом-выводом, так и процессы, ориентированные преимущественно на «голые вычисления».

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


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 454; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.028 с.)
Главная | Случайная страница | Обратная связь