- •Введение
- •Управление физической памятью в Linux
- •Виртуальная память в Linux
- •Исполнение и загрузка пользовательских программ в Linux
- •Системы файлов Linux
- •Ввод и вывод в Linux
- •Взаимодействие процессов в Linux
- •Структура сети в Linux
- •Безопасность в Linux
- •Развитие и использование Linux
- •Ключевые термины
- •Краткие итоги
- •Набор для практики Вопросы
- •Упражнения
- •Темы для курсовых работ, рефератов, эссе
Краткие итоги
Система распределения физической памяти в Linux использует механизм партнерской кучи, основанный на расщеплении свободных блоков и на объединении соседних свободных блоков памяти.
Виртуальная память в Linux основана на таблице страниц каждого процесса и логической точке зрения на память как совокупность непересекающихся смежных областей.
При создании нового процесса его адресное пространство пусто и наполняется регионами виртуальной памяти по мере загрузки программ. Системный вызов fork полностью копирует в дочерний процесс адресное пространство процесса-родителя.
Для управления страницами используется механизм откачки и подкачки.
Ядро Linux резервирует один регион виртуальной памяти каждого процесса для его собственных нужд, в частности, для размещения статической памяти.
Linux поддерживает как a.out- , так и ELF-форматы файлов исполняемого кода; статическую и динамическую линковку.
В Linux реализована виртуальная файловая система (VFS), скрывающая различие между разными системами файлов. Основная файловая система Linux – Ext2fs, основанная на использовании блоков небольшого размера, битовой карты блоков и многоуровневой косвенной адресации. Другая файловая система – Linux proc – не хранит данные явно, а генерирует их при выполнении запросов на ввод-вывод.
Система ввода-вывода Linux использует кэш страниц и буферный кэш. Устройства разбиты на три класса – блочные, символьные и сетевые. Для блочных устройств используется блочный буферный кэш. Для символьных устройств поддерживаются специфические операции ввода-вывода и не поддерживается произвольный доступ к блокам данных. Особым образом организованы драйверы терминальных устройств (TTY), для которых ядро поддерживает стандартный интерфейс.
Как и в UNIX, в Linux сигнализация о событиях для пользовательских процессов реализуется с помощью сигналов. Процессы ядра не используют сигналы и взаимодействуют с помощью системных структур планировщика.
Для взаимодействия процессов используются конвейер (pipe) и разделяемые объекты в общей памяти.
Сетевая система Linux поддерживает как сетевые протоколы связи UNIX – UNIX, так и протоколы ОС, отличных от UNIX. Реализация сетевой системы Linux имеет три уровня абстракции: сокетный интерфейс, драйверы протоколов и драйверы сетевых устройств. Поддерживается набор протоколов Интернета. Обеспечивается маршрутизация пакетов на любом участке сети. На верхнем уровне протокола маршрутизации поддерживаются протоколы UDP, TCP, ICMP.
Безопасность в Linux реализована на основе динамически подключаемых аутентификационных модулей. Управление доступом, как и в UNIX, осуществляется с помощью уникальных идентификаторов пользователя и группы и масок защиты. Реализована совместимость с POSIX – возможность многократно освобождать и получать uid процесса. Кроме того, реализована возможность выборочно передавать доступ к файлу любому серверному процессу.
Направления развития и использования Linux: новые ОС на основе ядра Linux (например, ОС для мобильных устройств Google Android) и обучение на основе Linux (российская ОС для школьников Альт Линукс).