Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Из описания классов, понятно очевидно когда их стоит использовать
В базе данных каждого процесса хранится относительный приоритет потока. Когда поток только создаётся, то начальный уровень приоритета равен его классу. Например, если поток принадлежит процессу с классом HIGH, то при создании этого потока его уровень приоритета будет 13. Приоритет потока можно изменить с помощью функции SetThreadPriority(…). Изменение относительно базового приоритета. В качестве параметров указывается дескриптор потока и относительный уровень приоритета. 1. Thread_Priority_Below_Normal – приоритет потока на 1 единицу меньше класса приоритета процесса. 2. Thread_Priority_Normal – приоритет потока становится равен приоритету процесса. 3. Thread_Priority_Above_Normal – приоритет потока становится на 1 единицу больше приоритета процесса. 4. Thread_Priority_Time_Critical – для процессов Idle, Normal, High уровень приоритета равен 16, для RealTime – 31. 5. Cсуществуют и другие пармаметры. Относительный уровень приоритета потока хранится в базе данных потока. Функции не обладают кумулятивным действием, то есть, если функцию SetPriority(hThread, и несколько раз написать Thread_Priority_Below_Normal), то уровень уменьшится только на 1 единицы относительно базового.
12. Учет квантов времени в Windows. Управление величиной кванта. Сценарии планирования процессорного времени. Квант – это интервал процессорного времени, отведенный потоку для выполнения. По истечению кванта времени Windows проверяет, завершен ли поток. В некоторых OC квант времени величина постоянная, в некоторых (в серверных всегда, Windows 2000 и др.) можно задать, может выбираться автоматически ядром OC(например в OC на основе Linux 2.6). Значение кванта выражается не в единицах времени, а целым числом. По умолчанию начальная величина кванта различна в OC. В Windows 2000 Server она равна 36. Величина кванта увеличена для того, чтобы свести к минимуму переключение контекста, то есть серверные приложения пробуждаются при получении запроса клиента, и имея большой квант имеют время полностью обслужить запрос по истечению кванта времени. Далее идет описание Windows 2000 в других OC все приблизительно так же. Всякий раз, когда возникает прерывание системного таймера процедура обработки таймера вычитает из кванта потока величину, равную 3. Если квант закончится, инициализируется процедура обработки завершения кванта, в результате к процессору может быть подключен другой поток. Длина временного интервала таймера зависит от OC и определяется не ядром, а уровнем аппаратных абстракций HAL(«драйвер взаимодействия с низким уровнем, мат плата»). В большинстве процессоров систем временной интервал равен от 10мс до 200мс. Относительная величина кванта Windows 2000 задаётся в параметре ...\... \... \... \... \Win32PrioritySeparation. Этот параметр определяет можно ли динамически увеличивать кванты потоков и если да, то насколько. Данный параметр содержит 3 двухбитовых поля. Поле 1. 1 – длинные(Server) 2 – короткие другие OC 0,3 – кванты по умолчанию Поле 2. 1 – можно изменять кванты активного процесса 2 – нельзя изменять кванты активного процесса, 3 – по умолчанию, то есть переменные (Professional) и фиксированные (Server) Поле 3. 0 1 2 3 – недопустимо и интерпретируется как 2 Индекс находится в трёхэлементной таблице.
В системе имеются активные и фоновые процессы. В Windows 2000 есть возможность увеличивать кванты потоков активного процесса. Величина берётся из таблицы. Например, на компьютере запущены калькулятор и игра. Активный процесс – игра. Для того, чтобы обеспечить активному процессу привилегии есть 2 пути: 1. увеличение относительного приоритета активных потоков. 2. увеличение квантов времени. Разработчики Windows подсчитали, что вариант 2 лучше, то есть при увеличении приоритета активного процесса, калькулятор будет получать только маленькую часть времени процессора. В то время, как увеличение кванта активного процесса не приведёт к фактическому блокированию процесса пересчёта.
Структуры данных ОС, связанные с планированием. При планировании потоков ядро ОС поддерживает набор структур данных, называемых в совокупности базой данных диспетчера ядра, позволяет отслеживать потоки, ждущие выполнения принадлежности процесса. Основной структурой является очередь готовых потоков, состоящая из нескольких очередей, по одной очереди на каждый приоритет. В эти очереди включаются потоки, находящиеся в состоянии готовности. Для ускорения выбора потока подлежащего выполнению Windows поддерживает 32 битную маску, называемую сводкой готовности. Каждый установленный в ней бит указывает на присутствие одного или более потоков в очереди готовых потоков для соответствующего уровня приоритета. Кроме того Windows поддерживает сводку простоя. Это битовая маска, в которой каждый установленный бит представляет простаивающий процессор. Сценарий планирования, для Windows XP для других ОС может немного отличаться. 1) Самостоятельное переключение потока 2) Вытеснение потоков 3) Завершение кванта времени 4) Завершение потока 1) Самостоятельное переключение потока. Поток может самостоятельно освободить процессор, перейдя в состояние ожидания. Включается поток очереди. После завершения ожидания происходит следующее. а) если этот поток находится в динамическом диапазоне (от 0 до 15), то квант потока уменьшается на одну квантовую единицу, что эквивалентно 1/3 таймера. б) Eсли это поток из диапазона RealTime (16 – 31), то потоку передаётся полный квант времени. 2) Вытеснение. Поток с более низким приоритетом вытесняется потоком с более высоким приоритетом. Такая ситуация возможна в двух случаях: а) Завершилось ожидание потока с более высоким приоритетом, то есть произошло событие, которое он ждал. б) Приоритет потока увеличился или уменьшился. Потоки пользовательского режима могут вытеснять потоки ядра. Когда поток вытесняется, он помещается в начало очереди потока и ему предоставляется остаток времени. 3) Завершение кванта времени. Когда поток израсходует свой квант Windows снижает его динамический приоритет. Windows ставит его в конец очереди с соответствующим уровнем приоритета. 4) Завершение потока. При завершении потока ОС просматривает значение счётчика ссылок равеных 0. Регионы адресного пространства освобождаются. Date: 2015-08-15; view: 468; Нарушение авторских прав |