русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Планирование выполнения процессов


Дата добавления: 2013-12-23; просмотров: 1867; Нарушение авторских прав


Принципы управления памятью

Состояния процесса.

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

2.Процесс выполняется в режиме ядра. При этом процессором выполняются системные инструкции ядра операционной системы.

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

4.Процесс находится в состоянии сна, ожидая недоступного в данный момент ресурса.

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

6.Процесс только что создан и находится в переходном состоянии: он существует, но не готов к запуску и не находится в состоянии сна.

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

 

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

1.Выполнение задач, размер которых превышает размер оперативной памяти.

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

3.Размещение нескольких задач в памяти одновременно для повышения эффективности использования процессора.



4.Размещение задачи в произвольном месте оперативной памяти.

5.Размещение задачи в нескольких различных частях оперативной памяти.

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

Все эти возможности реализованы в современных версиях UNIX с помощью виртуальной памяти.

 

 

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

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

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

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

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

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

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

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

Текущий приоритет варьируется в диапазоне от 0 (низкий приоритет) до 127 (наивысший приоритет). Процессы, выполняющиеся в режиме задачи, имеют более низкий приоритет, чем в режиме ядра. Для режима задачи приоритет меняется в диапазоне 0-65, для режима ядра 66-95 (системный диапазон). Процессы, приоритеты которых лежат в диапазоне 96-127, являются процессами с фиксированным приоритетом, не изменяемым операционной системой, и предназначены для поддержки приложений реального времени. Процессу, ожидающему недоступный в данный момент ресурса, система определяет значение приоритета сна, выбираемое ядром из диапазона системных приоритетов. Поскольку приоритет такого процесса находится в системном диапазоне и выше, чем приоритет режима задачи, то вероятность предоставления процессу после пробуждения вычислительных ресурсов весьма велика. Такой подход позволяет, в частности, быстро завершить системный вызов, выполнение которого, в свою очередь, может блокировать некоторые системные ресурсы.

Текущий приоритет процесса в режиме задачи p_privser зависит от двух факторов: значения относительного приоритета и степени использования вычислительных ресурсов p_cpu: p_privser = a*p_nice - b*p_cpu.

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

Например, UNIX версии SVR3, использует следующую формулу p_cpu=p_cpu/2. Эта простая схема проявляет недостаток нивелирования(???) приоритетов при повышении загрузки системы. Это происходит т.к. в этом случае каждый процесс получает незначительный объем вычислительных ресурсов и следовательно имеет малую составляющую p_cpu, которая ещё более уменьшается, благодаря формуле пересчета p_cpu. В результате степень использования процессора перестаёт оказывать заметные влияния на приоритет.

В 4.3BSD UNIX для пересчета p_cpu используется другая формула: p_cpu=p_cpu*(2*load)/(2*load+1). Параметр load равен среднему числу процессов, находившихся в очереди на выполнение за последнюю секунду, и характеризует среднюю загрузку системы за этот период времени. Этот алгоритм позволяет частично избавиться от недостатка планирования SVR3, т.к. при значительной загрузке системы уменьшение p_cpu будет происходить медленнее.

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

Как правило, очередь на выполнение не одна. Например, SCO UNIX имеет 127 очередей – по одной на каждый приоритет. BSD UNIX использует 32 очереди, каждая из которых обслуживает диапазон приоритетов. При выборе следующего процесса на выполнение из одной очереди используется механизм кругового чередования. Этот механизм запускается ядром через каждый временной квант для наиболее приоритетной очереди. Однако если в системе появляется готовый к запуску процесс с более высоким приоритетом, чем текущий, то он будет запущен, не дожидаясь прошествия временного кванта.

 



<== предыдущая лекция | следующая лекция ==>
Атрибуты процесса. | Взаимодействия между процессами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.