|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Context Switches
The scheduler maintains a queue of executable threads for each priority level. These are known as ready threads. When a processor becomes available, the system performs a context switch. The steps in a context switch are:
1. Save the context of the thread that just finished executing. 2. Place the thread that just finished executing at the end of the queue for its priority. 3. Find the highest priority queue that contains ready threads. 4. Remove the thread at the head of the queue, load its context, and execute it.
The following classes of threads are not ready threads.
· Threads created with the CREATE_SUSPENDED flag · Threads halted during execution with the SuspendThread or SwitchToThread function · Threads waiting for a synchronization object or input.
Until threads that are suspended or blocked become ready to run, the scheduler does not allocate any processor time to them, regardless of their priority. The most common reasons for a context switch are:
· The time slice has elapsed. · A thread with a higher priority has become ready to run. · A running thread needs to wait.
When a running thread needs to wait, it relinquishes the remainder of its time slice.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Контекстные Ключи
Планировщик поддерживает очередь выполняемой резьбы для каждого приоритетного уровня. Эти известные как готовая резьба. Когда процессор становится доступным, система выполняет контекстный ключ. Входящие контекстный ключ:
1. Сохраните контекст резьбы, что только что завершившее выполнять. 2. Установите резьбе это просто готовое выполнять в конце очереди для своего приоритета. 3. Найдите самую верхнюю приоритетную очередь, которая содержит готовую резьбу. 4. Удалите резьбу очереди, загружайте свой контекст и выполняйте это.
Следующие классы резьбы не являются готовой резьбой.
Резьба создавалась флагом CREATE_SUSPENDED Резьба останавливалась в течение выполнения с SuspendThread или функцией SwitchToThread Резьба, ждущая объект синхронизации или вклада.
До резьбы, что приостановлены или заблокированы становиться готовыми работать, планировщик не распределяет любое время процессора им, независимо от их приоритета. Наиболее общие причины контекстного ключа:
Вырезка времени прошла. Резьба с более высоким приоритетом стала готовой работать. Прогону резьбы нужно ожидаться.
Когда прогону резьбы нужно ожидаться, это освобождает разность своей вырезки времени.
|
|
|
|
| |