OSDev http://osdev.su/ |
|
Алгоритм работы планировщика http://osdev.su/viewtopic.php?f=5&t=160 |
Страница 1 из 1 |
Автор: | leonidpr [ 20 окт 2007, 09:16 ] |
Заголовок сообщения: | Алгоритм работы планировщика |
Передо мной встала задача разобраться с алгоритмами планировки. Пока ни в одной достуной литературе не нашел толкового описания алгоритма планировки с динамическими приоритетами. Так же стоит вопрос об организации очередей процессов (критерии выбора их количества и назначение каждой очереди). У Таненбаума (Операционные системы: разработка и реализация) все довольно обзорно. Конечно можно смотреть исходники существующих ОС, но хотелось бы теоретическое описание. Если кто знает неплохие книги или ссылки, буду очень благодарен. Я не проттив сухого математического описания, типа сетей Петри или т. п. |
Автор: | phantom-84 [ 20 окт 2007, 13:27 ] |
Заголовок сообщения: | Re: Алгоритм работы планировщика |
Все просто. Количество времени, предоставляемое процессу (потоку), зависит от величины его приоритета, который может меняться по ходу выполнения процесса (потока). Например, система может увеличивать приоритет, когда процесс становится переднеплановым, и уменьшать, когда он переходит на задний план. Количество очередей зависит от реализации. Однако практически всегда для ждущих процессов заводится отдельная очередь в добавок к очереди готовых процессов. Можно заводить очереди отдельно для каждого процессора, для ожидания доступа к отдельно взятому ресурсу, по величине приоритета и т.п. Я, например, очередь готовых процессов разделил на очередь процессов реального времени и обычную очередь. |
Автор: | phantom-84 [ 20 окт 2007, 14:01 ] |
Заголовок сообщения: | Re: Алгоритм работы планировщика |
Удалено. |
Автор: | phantom-84 [ 20 окт 2007, 14:02 ] |
Заголовок сообщения: | Re: Алгоритм работы планировщика |
Что касается алгоритма планирования, то он заключается в следующем. В обработчике по таймеру или в какой-либо системной функции выполняется переключение между готовыми к выполнению процессами. В состояние ожидания процесс переходит по собственной инициативе, обращаясь к соответствующим функциям ядра (wait, waitevent и т.п.), а выходит из него при наступлении некоторого события или событий, когда обработчик этого события также обращается к определенным функциям ядра (signal, setevent и т.п.), сообщая либо тип события, либо идентификатор процесса, ожидающего событие, либо и то и другое сразу. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |