Курсоваяработ а
Скачать 426.04 Kb.
|
Диаграмма Kernel:Scheduler:ActivateTask Диаграмма Kernel:Scheduler:TerminateTask Диаграмма Kernel:Scheduler:ChangePriorityTask Задача моей реализации состояла в написании POSIX-планировщика. Краткий алгоритм его работы можно описать следующим образом: Каждая задача имела фиксированное число (tick), которое пересчитывается с каждым системным тиком (по умолчанию 100 Hz), при выходе из режима ядра или при появлении более приоритетной задачи. Алгоритм просто делит число на два и добавляет базовую величину (по умолчанию 15, с учетом величины nice). Когда тик становится равным 0, он пересчитывается. Кроме этого каждый процессор имеет две очереди. В одной находятся готовые к запуску задачи, во вторую помещаются отработавшие и спящие задачи, которые, например, ожидают не доступного в настоящее время ресурса. Когда первая очередь пустеет, очереди меняются местами. Поэтому время работы алгоритма постоянно и не зависит от количества процессов. Однако, данный алгоритм насчитывает в себе около 7000 строк, поэтому в моей реализации я отразил лишь главные принципы работы POSIX-планировщика такие как приоритеты планирования, очередь готовых и текущих задач и др. |