русс | укр

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

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

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

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


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

Процессы и потоки


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


Рис 2. Виды состояний процесса

Ядро ОС.

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

· Режим ядра (супервизора) – в котором программа может выполнять все команды процессора

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

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

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

На ядро, как правило, возлагаются такие основные функции:

· обработка прерываний;

· создание и уничтожение процессов;

· переключение процессов из одного состояния в другое;

· синхронизация и взаимодействие процессов;

· поддержка операций ввода-вывода;

· поддержка файловой системы;

· учет работы системы и использования ресурсов пользователями;

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

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



· Активное состояние - процесс имеет все необходимые для выполнения ресурсы, в том числе и ресурс центрального процессора (ЦП). Активный процесс выполняется.

· Готовое состояние - процесс имеет все необходимые для выполнения ресурсы, кроме ресурса процессора.

· Заблокированное (ожидающее) состояние - процессу не хватает еще какого-либо ресурса (ресурсов).

Процесс, поступивший в систему, создается в заблокированном состоянии, пока ему не будут выделены необходимые ресурсы. Получив ресурсы, процесс попадает в очередь готовых процессов, где и ожидает, когда ему будет выделен процессор. Процесс, получивший процессор, становится активным и выполняется. Активный процесс переходит в блокированное состояние, когда выдает системный вызов - запрос на ресурсы, которые не могут быть ему предоставлены немедленно (например, выполнение операции ввода-вывода). При этом процесс попадает в очередь к тому ресурсу, который он запрашивает. Процесс может перейти из активного состояния в готовое либо по собственной инициативе, добровольно отказавшись от использования ЦП, либо по инициативе ОС.

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

Каждый процесс имеет свое собственное виртуальное адресное пространство (£ 4Gb). Процесс состоит из кода, данных и других системных ресурсов, таких как открытые файлы, каналы (pipes), синхронизирующие объекты.

Поток (thread) - базовый объект, которому ОС распределяет время ЦП.

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

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

Если ОС выполняет большой объем работ по управлению ресурсами, то создание нового процесса и выделение ему ресурсов не может обойтись без значительных "накладных расходов". Но для обеспечения распараллеливания работ по решению нескольких задач или внутри одной задачи выгодно иметь возможность «дешевого» создания процессов. Преодоление этого противоречия было найдено в концепции "потоков" (thread), реализованной в большинстве современных ОС.

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

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

Распределение времени между потоками. Процессорное время выделяется потокам в соответствии с их уровнем приоритета. Потоку с более низким приоритетом не выделяется время, если на него претендует поток с более высоким уровнем приоритета. Более того, процесс с более низким приоритетом прерывается до истечения кванта времени, если на процессор претендует поток с более высоким уровнем приоритета. Необходимо помнить, что в среде ОС основная “работа” потока состоит в ожидании события и реагировании на него. Это дает шанс на исполнение потокам с низким уровнем приоритета.

Уровни приоритетов варьируются в диапазоне от 0 (низший) до 31 (высший) (для ОС Windows).

Уровень приоритета каждого потока состоит из трех составляющих

· класс приоритета процесса (простаивающий, нормальный, высокий, реального времени);

· уровень приоритета потока внутри класса приоритета процесса (нижний, ниже нормального, нормальный, выше нормального, высший)

· динамически установленный уровень приоритета.

При запуске на исполнение процесса ему назначается один из четырех классов приоритета. Уровень Idle (простаивающий) назначается процессу, который ничего не должен делать в случае активности других процессов (например, хранитель экрана). Процессам, запускаемым пользователем, присваивается нормальный уровень. Пользователь может запустить несколько процессов. Тому процессу, с которым пользователь непосредственно работает (а это может быть только один процесс), уровень приоритета поднимается на две единицы (например: 7+2 = 9). Это делает общение с прикладной программой более “комфортабельным”. Высокий класс приоритета назначается некоторым системным процессам, которые простаивают до возникновения определенных событий и, поэтому, не мешают остальным процессам. Только в особых случаях процесс может относиться к классу Real time.



<== предыдущая лекция | следующая лекция ==>
Архитектура ОС | Планирование процессов


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


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

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

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


 


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

 
 

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

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