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