- •Fedora Core 5 (Bordeaux)
- •2007 Оглавление
- •Многообразие ядер Linux
- •Чуть ближе к истории
- •Хронология
- •Нумерация версий
- •Поддержка
- •Стабильные версии
- •Загрузочные параметры ядра
- •Параметры корневой файловой системы
- •Параметры загрузки управления памяти
- •Параметры управления ram-диском
- •Другие параметры ядра
- •Процессы Немного об архитектуре процессов
- •Общие сведения о процессах
- •Системные вызовы fork() и ехес()
- •Нити Что такое нить?
- •Создание нити и идеология posix api
- •Завершение нити, особенности главной нити
- •Жизненный цикл нити
- •Синхронизация с использованиеmutex Что такое mutex?
- •Использование mutex
- •Проблема тупиков
- •Решение проблемы тупиков
- •Общая схема управления процессами
- •Команды управления процессами Команда ps
- •Команда top
- •Изменение приоритета процесса - команда nice
- •Взаимодействие процессов(ipc)
- •Семафоры
- •Файловая система Видимая сторона файловой системы
- •Имена файлов и каталогов
- •Каталоги
- •Стандартные каталоги
- •Типы файлов
- •Файлы физических устройств
- •Наиболее часто используемые стандартные имена устройств
- •Жесткие и символические ссылки
- •Именованные каналы
- •Права доступа к файлам и каталогам
- •Команды работы с файлами и каталогами
- •Команды chown и chgrp
- •Команда cat
- •Команда cp
- •Команда mv
- •Команды rm и rmdir
- •Команды more и less
- •Команда find и символы шаблонов для имен файлов
- •Команда split — разбиваем файл на несколько частей
- •Сравнение файлов и команда patch
- •Изнанка файловой системы
- •Типы файловых систем, поддерживаемых в Linux
- •Файловая система ext2fs – предшественница ext3fs
- •ReiserFs
- •Файловая система ext3 Введение в файловую систему ext3.
- •Журналируемая файловая система
- •Файловая система ext3
- •Различные журналируемые режимы в файловой системе ext3
- •Управление памятью
- •Аппаратно-независимый уровень управления памятью
- •Страничное замещение основной памяти и swapping
- •Свопинг
- •Управление пространством на устройстве выгрузки
- •Выгрузка процессов
- •Выгрузка при выполнении системной функции fork
- •Выгрузка с расширением
- •Загрузка (подкачка) процессов
- •Подкачка по запросу
- •Структуры данных, используемые подсистемой замещения страниц
- •Функция fork в системе с замещением страниц
- •Сборщик" страниц
- •Управление вводом/выводом
- •Взаимодействие драйверов с программной и аппаратной средой
- •Конфигурация системы
- •Программы обработки прерываний
- •Дисковые драйверы
- •Список используемой литературы
- •Приложение Низкоуровневый ввод/вывод Обзор механизмов ввода/вывод вLinux
- •Файловые дескрипторы
- •Открытие файла: системный вызовopen()
- •Закрытие файла: системный вызов close()
- •Чтение файла: системный вызов read()
- •Запись в файл: системный вызов write()
- •Произвольный доступ: системный вызов lseek()
Страничное замещение основной памяти и swapping
В ОС UNIX используется некоторый облегченный вариант алгоритма подкачки, основанный на использовании понятия рабочего набора. Основная идея заключается в оценке рабочего набора процесса на основе использования аппаратно (а в некоторых реализациях - программно) устанавливаемых признаков обращения к страницам основной памяти.
Периодически для каждого процесса производятся следующие действия. Просматриваются таблицы отображения всех сегментов виртуальной памяти этого процесса. Если элемент таблицы отображения содержит ссылку на описатель физической страницы, то анализируется признак обращения. Если признак установлен, то страница считается входящей в рабочий набор данного процесса, и сбрасывается в нуль счетчик старения данной страницы. Если признак не установлен, то к счетчику старения добавляется единица, а страница приобретает статус кандидата на выход из рабочего набора процесса. Если при этом значение счетчика достигает некоторого (различающегося в разных реализациях) критического значения, страница считается вышедшей из рабочего набора процесса, и ее описатель заносится в список страниц, которые можно откачать (если это требуется) во внешнюю память. По ходу просмотра элементов таблиц отображения в каждом из них признак обращения гасится.
Откачку страниц, не входящих в рабочие наборы процессов, производит специальный системный процесс-stealer. Он начинает работать, когда количество страниц в списке свободных страниц достигает установленного нижнего порога. Функцией этого процесса является анализ необходимости откачки страницы (на основе признака изменения) и запись копии страницы (если это требуется) в соответствующую область внешней памяти (т.е. либо в системную область подкачки - swapping space для анонимных страниц, либо в некоторый блок файловой системы для страницы, входящей в сегмент отображаемого файла).
Алгоритм планирования использования процессорного времени в сильной степени зависит от выбранной стратегии управления памятью. Процесс может выполняться, если он хотя бы частично присутствует в основной памяти; ЦП не может исполнять процесс, полностью выгруженный во внешнюю память. Тем не менее, основная память - чересчур дефицитный ресурс, который зачастую не может вместить все активные процессы в системе. Если, например, в системе имеется основная память объемом 8 Мбайт, то девять процессов размером по 1 Мбайту каждый уже не смогут в ней одновременно помещаться. Какие процессы в таком случае следует размещать в памяти (хотя бы частично), а какие нет, решает подсистема управления памятью, она же управляет участками виртуального адресного пространства процесса, не резидентными в памяти. Она следит за объемом доступного пространства основной памяти и имеет право периодически переписывать процессы на устройство внешней памяти, именуемое устройством выгрузки, освобождая в основной памяти дополнительное место. Позднее ядро может вновь поместить данные с устройства выгрузки в основную память.
В ранних версиях системы UNIX процессы переносились между основной памятью и устройством выгрузки целиком и, за исключением разделяемой области команд, отдельные независимые части процесса не могли быть объектами перемещения. Такая стратегия управления памятью называется свопингом (подкачкой). Такую стратегию имело смысл реализовывать на машине типа PDP-11, где максимальный размер процесса составлял 64 Кбайта. При использовании этой стратегии размер процесса ограничивается объемом физической памяти, доступной в системе. Система BSD (версия 4.0) явилась главным полигоном для применения другой стратегии, стратегии "подкачки по обращению" (demand paging), в соответствии с которой основная память обменивается с внешней не процессами, а страницами памяти; эта стратегия поддерживается и в последних редакциях версии системы UNIX. Держать в основной памяти весь выполняемый процесс нет необходимости, и ядро загружает в память только отдельные страницы по запросу выполняющегося процесса, ссылающегося на них. Преимущество стратегии подкачки по обращению состоит в том, что благодаря ей отображение виртуального адресного пространства процесса на физическую память машины становится более гибким: допускается превышение размером процесса объема доступной физической памяти и одновременное размещение в основной памяти большего числа процессов. Преимущество стратегии свопинга состоит в простоте реализации и облегчении "надстроечной" части системы.