[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Планирование

В предыдущих версиях AIX, вплоть до версии 3.2, планируемой единицей работы был процесс. Для планирования процессов были предусмотрены специальные команды и функции. С появлением нитей семантика этих команд и функций изменилась.

В следующих разделах подробно рассматриваются изменения в управлении процессами:

Планирование на уровне процесса

В AIX версии 4 планировщик выделяет процессорное время нитям в зависимости от приоритетов нитей и стратегии планирования. Ранее, когда в AIX планировались процессы, а нити не поддерживались, приоритет процесса зависел от значений nice, которые устанавливались командами nice и renice, а также функциями getpriority, setpriority и nice. Эти интерфейсы поддерживаются и в текущей версии AIX, но значения nice для процессов применяются только в стратегии планирования по умолчанию, а именно в стратегии SCHED_OTHER, в которой приоритеты вычисляются на основе значений nice и текущей загруженности процессора. В других стратегиях планирования применяются постоянные приоритеты. Функции getpri и setpri применялись ранее для управления приоритетами процессов. Теперь эти функции работают с приоритетами нитей: первая из них возвращает приоритет нити в процессе, а вторая устанавливает приоритеты всех нитей в процессе.

В предыдущих версиях AIX функция yield прерывала выполнение процесса до истечения выделенного ему кванта времени, позволяя немедленно запланировать другой процесс с более высоким приоритетом. В процессах с несколькими нитями освободить ресурсы процессора может только вызывающая нить. Для приостановки выполнения нитей можно применять функцию pthread_yield. Для нитей с глобальной областью действия эта функция действует так же, как yield, и после ее вызова можно запланировать любую нить; для нитей же с локальной областью действия можно запланировать только другую локальную нить.

Функции таймера и перехода в состояние ожидания

Функции таймера в новой версии AIX выполняются в рамках вызывающей нити, а не вызывающего процесса. Следовательно, при срабатывании таймера контрольная функция вызывается в нити. При переходе процесса или нити в состояние ожидания этот процесс или нить освобождает ресурсы процессора. В процессах с несколькими нитями перевести в состояние ожидания можно только вызывающую нить.

Связанная информация

Основные сведения о нитях.

Обзор взаимодействия между нитями и процессами.

Управление сигналами.

Порождение и завершение процессов.

Список функций для взаимодействия между нитями и процессами.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]