Традиционно планировщик FreeBSD содержал неопределенный набор ловушек (hooks), разбросанных по всему ядру. В FreeBSD 5.0 эти ловушки были упорядочены и был создан хорошо определенный API таким образом, чтобы можно было разрабатывать различные планировщики. Начиная с FreeBSD 5.0, в ядре доступны следующие два планировщика:
Исторический планировщик 4.4BSD, который можно найти в файле /sys/kern/ sched_4bsd. c.
Новый планировщик ULE, впервые введенный в FreeBSD, который можно найти в файле /sys/kern/sched_ule. c [Roberson, 2003]. Имя не является акронимом. Если убрать из имени его файла символ подчеркивания, обоснование имени станет очевидным.
Поскольку загруженная система делает тысячи планирующих решений в секунду, скорость, с которой принимаются планирующие решения, является критической для производительности системы в целом. В других системах UNIX добавлен динамический переключатель планировщика, который должен проверяться для каждого планирующего решения. Чтобы избежать этих издержек, FreeBSD требует, чтобы планировщик был выбран во время построения ядра. Таким образом, все вызовы кода планировщика разрешаются во время компилирования вместо издержек косвенных вызовов функций для каждого планирующего решения. По умолчанию ядра вплоть до FreeBSD 5.1 используют планировщик 4.4BSD. Начиная с FreeBSD 5.2 по умолчанию используется планировщик ULE.
- 09/10/2010 10:28 - Завершение процесса
- 03/10/2010 00:33 - Создание процесса
- 01/10/2010 01:49 - Планировщик 4.4BSD
- 28/09/2010 13:03 - Функции планировщика ULE
- 27/09/2010 22:41 - Планировщик ULE
- 20/09/2010 00:36 - Другие виды синхронизации
- 16/09/2010 17:09 - Блокировки менеджера блокировок
- 14/09/2010 12:02 - Синхронизация с помощью мьютекса
- 13/09/2010 12:25 - Синхронизация
- 11/09/2010 16:42 - Добровольное переключение контекста