80.1.3.1. НИТИ И МНОГОЗАДАЧНОСТЬ




THIS SECTION IS UNDER CONSTRUCTION




Структура нити - что она в себе содержит? Контекст (регистры процессора) Состояние нити TID (Thread ID) PID (Process ID которому принадлежит нить) Wait Status Список объектов которые нить ждет Счетчик критических секций Localization info Время проведенное в режиме ядра Время проведенное в пользовательском режиме Стартовый адресс нити TO BE CONTINUED


Многозадачность

Пседопараллелизм (на одном CPU) Мультипроцессор







Многозадачность Кооперативная программа сама вызывает функцию смены задачи Yield() или GetNextEvent() [Win16] Вытесняющая (preemptive) по таймеру снимают задачу когда она выработает свой квант времени


Контекст нити

Контекст нити/процесса (зависит от терминологии в OS) Регистры (IP, stack, GPR, Flags) Virtual Memory control registers Варианты уменьшить размер контекста TS флаг в x86 Смена контекста - дорогая операция Почему у MMX регистры теже что и в FP? Из-за контекста У каждой нити свой stack




Состояния нити

Состояния нитей New Ready Running Wait (Blocked) Ready+Paused Wait+Paused Terminating




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








Планировщик






Перепланировка

Большинство задач не доживают свой квант

Перепланировка


Планировка с приоритетами

Планировщики с приоритетами Классы планирования Real-Time Shared-Time





Динамическая приоритезация для Shared-Time: Повышение приоритета задачам которые зависли на вводе/выводе или на подкачке. Снижение приоритета задачам отработавшим полный квант


Стратегии планирования

Потоки в пространстве пользователя в ядре смешанные







Задачи:


FCFS

FCFS (First Come First Serving):

Обрабатываются в том порядке в каком поступили Проблемы: Длинные задания задерживают всех кто дальше в очереди


RR

RR (Round Robin):

Каждый процесс получает фиксированный временной слот *квант* Ротация между готовыми процессами Выбор кванта Слишком короткий - много времени уходит на смену контекста Слишком длинный - медленный ответ на интерактивные запросы типичный размер кванта 10-100 ms SRR (Selfish Round Robin):


FB

FB (FeedBack):

ExpFB:


SPN

SPN (Shortest Process Next):

иногда называют SJF (Shortest Job First) Версия для вытесняющей многозадочности: SRTF (Shortest Remaining Time First) Проблемы: как узнать кто более короткий


Lottery

Каждому процессу дают лотерейные билеты Каждый квант генерирует номер билета Процесс получает n/m, где n - кол-во тикетов у процесса, m-общее число тикетов (Процессы могут обмениваться тикетами) (Клиеты могут передавать серверу)


Policy

Процессам присваиваются приоритеты Например у одного usera - приоритет 40%, у другово 20%, Машинное время будет делиться между ними согласно приоритетам

Index Prev Next