Linux - статьи

Фрагменты кода


Кроме этих специализированных функций в ОС Linux в различных местах ядра есть фрагменты кода, которые так же используются только в многопроцессорной конфигурации. Например, такие фрагменты есть в планировщике (функция schedule), в которой предусмотрены механизмы перемещения процессов с одного процессора на другой. Обеспечивается работа с контроллерами прерываний, которых в многопроцессорной системе несколько. Большинство этого кода содержится в файле arch/<arch>/kernel/smp.c. Впрочем часто они опираются на универсальные для Linux многопроцессорные примитивы.

Собственно, поддержка многозадачности была реализована еще в ядре версии 2.0, однако там имелась блокировка всего ядра без выделения отдельных объектов. Версия 2.2 уже позволяла блокировать целиком отдельные крупные объекты, такие как буферы и таблицы. Современная стабильная версия 2.4.20 уже умеет блокировать отдельные записи в очередях и строки в таблицах. Таким образом, разработчики ядра постепенно уменьшают объемы блокируемых фрагментов памяти, что позволяет более эффективно использовать потенциал параллельных вычислений.



Содержание раздела