Составители:
Рубрика:
62
процессора (код потока, данные, стек, процессорные регистры). В пространстве пользователя обычно
используется термин процесс, хотя в реализации Linux эти две концепции (процессы и потоки) не
различают. Ядро предоставляет API для создания нового процесса (порождения копии, запуска на
исполнение, вызова функций Portable Operating System Interface [POSIX]), остановки процесса (kill,
exit), взаимодействия и синхронизации между процессами (сигналы или механизмы POSIX).
Рис.6.2.2.
Еще одна задача управления процессами – совместное использование процессора активными
потоками. В ядре реализован новаторский алгоритм планировщика, время работы которого не зависит
от числа потоков, претендующих на ресурсы процессора. Название этого планировщика - O(1) -
подчеркивает, что на диспетчеризацию одного потока затрачивается столько же времени, как и на
множество потоков. Планировщик O(1) также поддерживает симметричные многопроцессорные
конфигурации (SMP). Исходные коды системы управления процессами находятся в ./linux/kernel, а
коды архитектурно-зависимой части - в ./linux/arch).
Управление памятью
Другой важный ресурс, которым управляет ядро - это память. Для повышения эффективности,
учитывая механизм работы аппаратных средств с виртуальной памятью, память организуется в виде
т.н. страниц (в большинстве архитектур размером 4 КБ). В Linux имеются средства для управления
имеющейся памятью, а также аппаратными механизмами для установления соответствия между
физической и виртуальной памятью.
Однако управление памятью - это значительно больше, чем просто управление буферами по 4 КБ.
Linux предоставляет абстракции над этими 4 КБ буферами, например, механизм распределения slab
allocator. Этот механизм управления базируется на 4 КБ буферах, но затем размещает структуры
внутри них, следя за тем, какие страницы полны, какие частично заполнены и какие пусты. Это
позволяет динамически расширять и сокращать схему в зависимости от потребностей вышележащей
системы.
В условиях наличия большого числа пользователей памяти возможны ситуации, когда вся
имеющаяся память будет исчерпана. В связи с этим страницы можно удалять из памяти и переносить
на диск. Этот процесс обмена страниц между оперативной памятью и жестким диском называется
подкачкой. Исходные коды подсистемы управления памятью находятся в ./linux/mm.
Виртуальная файловая система
Еще один интересный аспект ядра Linux – виртуальная файловая система (VFS), которая
предоставляет общую абстракцию интерфейса к файловым системам. VFS предоставляет уровень
коммутации между SCI и файловыми системами, поддерживаемыми ядром (Рис. 6.2.3).
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »