![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Процессы
Чтобы процесс что-нибудь выполнил, в нем нужно создать поток (Thread). В принципе, один процесс может содержать несколько потоков и они одновременно используют код в адресном пространстве процесса. Для этого каждый поток должен поток располагать собственным набором регистров процессора, а каждый процесс – как минимум – одним потоком. Чтобы все эти потоки работали, ОС отводит каждому из них определенное процессорное время (квант времени). Время выдается потокам квантами по кругу (см. рис. 4): Рисунок 1- 4 - схема выделения квантов времени потокам
При создании процесса первичный поток создается системой автоматически, далее первичный поток может создавать дополнительные потоки, используя функцию CreateThread (параметры); Потоки также могут создаваться драйверами режима ядра. В Win9x, ME - потоки выполняются одним процессором. В WinNT, 2000, XP Windows Server — за потоком может быть закреплен отдельный процессор (процессоров может быть до 4 (32)), тогда потоки действительно выполняются параллельно. В Win2000 введено понятие задания (JOB). Задание - объект ядра, обеспечивающий управление одним или несколькими процессами как группой. Процесс может входить только в одно задание. Задания необходимы для расширения возможностей управления процессами (потоками) - на сервере в том числе: 1. завершить все потоки задания 2. установить ограничения на потоки задания: - ограничение числа одновременно выполняющихся процессов заданий; - общий лимит на процессорное время (после истечения времени все процессы будут завершены); - индивидуальные лимиты времени на процессорное время пользовательского режима (для каждого процесса); - приоритета для всех потоков; - минимальный и максимальный размер рабочего множества страниц в ОП. Нити (Fiber) – позволяют программисту управлять выполнением участков программы. Функции ОС по управлению процессами и потоками. 1. создание и завершение процессов и потоков; 2. получение информации о процессах и потоках; 3. изменение приоритета процессов и потоков; 4. синхронизация потоков. Процесс может породить другой процесс, используя функцию CreateProcess(); Рисунок 5 – порождение процесса
Процесс Пр1порождает процесс Пр2, который в свою очередь порождает процессы Пр3 и Пр4.
Диспетчеризация потоков. Дисциплины диспетчеризации Известные дисциплины диспетчеризации делятся на: - бесприоритетные (в современных ОС практически не используются); - приоритетные. Приоритетные дисциплины делятся на дисциплины: - с относительными приоритетами; - с абсолютными приоритетами. Дисциплины с абсолютными приоритетами делятся на дисциплины: - с фиксированными приоритетами; - с динамическими приоритетами. В Win32 используется дисциплина диспетчеризации с абсолютными приоритетами – с фиксированными и динамическими приоритетами.
Уровни приоритета в Win32. Классы приоритетов процессов и потоков
Используется 32 уровня приоритета – уровень 31 самый высокий, 0 – самый низкий. Уровни приоритета разбиты на 3 группы (см. рис. 6).
![]() ![]()
Рисунок 1- 6 – группы приоритетов потоков
Приоритет потока равен базовому значению приоритета потока, к которому может быть добавлена динамическая составляющая. Динамическая составляющая добавляется при определенных условиях операционной системой к значениям приоритета потока в интервале от 1 до 14. Базовый приоритет потока Win32 устанавливается, исходя из класса приоритета его процесса и уровня относительного приоритета. В Win32 определены следующие классы приоритета процесса: - реального времени – RealTime со значением 24; - высокий – High со значением 13; - выше среднего – Above normal со значением 10; - обычный – Normal со значением 8; - ниже среднего – Below normal со значением 6; - низкий – Idle со значением 4. В Win32 определены следующие уровни относительного приоритета потока: - Time Critical; - Highest; - Above Normal; - Normal; - Below Normal; - Lowest; - Idle.
Таблица 1. Базовые значения приоритета потоков в Win 32
Не все значения приоритета могут быть установлены.
Установка базового приоритета потока выполняется в два этапа. На первом этапе с помощью функции Res: = SetPriorityClass (Handle, Class) устанавливается базовый класс приоритета процесса. Затем с использованием функции Res: = SetThreadPrioriry (Handle, Prioritet) задается базовый приоритет потока.
|