Спонсор: Microsoft
Санкт-Петербургский государственный университет
Опубликован: 13.11.2010 | Доступ: свободный | Студентов: 6725 / 1527 | Оценка: 4.64 / 4.23 | Длительность: 45:08:00
ISBN: 978-5-9963-0495-0
Лекция 26:

Обзор архитектуры и возможностей системы Linux: управление памятью, ресурсами, файловые системы, драйверы устройств, сети, безопасность

< Лекция 25 || Лекция 26: 1234 || Лекция 27 >
Аннотация: В лекции рассмотрены: управление памятью и ресурсами в Linux; файловые системы Linux; драйверы устройств Linux, поддержка сетей в Linux, безопасность в Linux.
Ключевые слова: архитектура, управление памятью, поддержка, безопасность, блок памяти, механизмы, адресное пространство, физическая страница, алгоритм, слежение, распределение памяти, драйвер, куча, диск, менеджер, таблица страниц, COW, ядро, виртуальное, exec, fork, родительский процесс, счетчик, дочерний процесс, физическая память, физический адрес, файл, системный вызов, регистрация, виртуальная память, программа, ELF, загрузчик, модуль ядра, fixup, макрос, BSS, исполняемый код, линк, динамическая, память, файловая система, дерево, Unix, уровень абстракции, объект, цель размещения, операция ввода/вывода, структурная схема, суперблок, descriptor, индексный дескриптор, inode, запись, дескрипторная таблица, бит, родительский каталог, место, множества, размер файла, поле, адрес, косвенная адресация, пользователь, поиск, буфер, доступ, интерфейс, кэш, блочное устройство, символьное устройство, запись в файл, запрос, исключение, планировщик , общая память, Интернет, PC, AppleTalk, IPX, протокол маршрутизации, TCP, ICMP, управление доступом, система типов, идентификатор пользователя, операции, исполнение, POSIX, серверный процесс, android, мобильное устройство, терминальное устройство, подключаемый модуль, адресное пространство процесса, виртуальная файловая система, PROC, TTY, пользовательский процесс, процесс ядра, pipe, маршрутизация, протокол UDP, UID, устройство ввода/вывода

Презентацию к данной лекции Вы можете скачать здесь.

Введение

В данной лекции, как и в "Обзор архитектуры и возможностей системы Linux: архитектура, ядро, распространение и лицензирование, принципы проектирования, управление процессами" рассматриваются архитектура и возможности системы Linux. В лекции описаны управление памятью, файловые системы, драйверы устройств, поддержка сетей, безопасность в Linux, перспективы Linux и разработки на основе Linux.

Управление физической памятью в Linux

Система распределения физической памяти в Linux занимается размещением и освобождением страниц, групп страниц и небольших блоков памяти. Она имеет дополнительные механизмы для виртуальной памяти, отображаемой в адресное пространство исполняемых процессов.

Распределитель страниц размещает и освобождает физические страницы; он может также по запросу размещать группы смежных страниц.

Распределитель страниц Linux использует алгоритм buddy-heap (партнерской кучи) для слежения за доступными физическими страницами, принципы которого в следующем:

  • Каждая область памяти, подлежащая распределению, образует пару с ее смежным "партнером".
  • Когда обе области-партнера освобождаются, они сливаются и образуют смежную область вдвое большего размера [ 15 ] .
  • Если не существует малой области памяти, чтобы удовлетворить небольшой запрос на память, то область памяти большего размера расщепляется на две области-партнера для удовлетворения данного запроса.

Распределение памяти для ядра Linux возможно как статическое (драйвер резервирует статическую область памяти во время загрузки системы) или динамическое (с помощью распределителя страниц).

Расщепление памяти в куче изображено на рис. 26.1.

Расщепление памяти в куче в системе Linux.

Рис. 26.1. Расщепление памяти в куче в системе Linux.

Виртуальная память в Linux

Система виртуальной памяти в Linux поддерживает адресное пространство, видимое каждому процессу: она создает страницы виртуальной памяти по требованию и управляет загрузкой этих страниц с диска или откачкой их обратно на диск, если требуется.

Менеджер виртуальной памяти поддерживает две точки зрения на адресное пространство каждого процесса:

  • Логическую – поддержка команд управления адресным пространством. Адресное пространство рассматривается как совокупность непересекающихся смежных областей.
  • Физическую – с помощью таблицы страниц для каждого процесса.

Для управления виртуальной памятью используются:

  • Файл откачки (backing store),описывающий, откуда берутся страницы для заданного региона; регионы обычно поддерживаются либо файлом, либо не поддерживаются вообще (память, обнуляемая по требованию)
  • Реакция региона на запись (совместное использование страниц или копирование при записи - COW).

Ядро создает новое виртуальное адресное пространство:

  • Когда процесс запускает новую программу системным вызовом exec;
  • При создании нового процесса системным вызовом fork.

При исполнении новой программы процессу предоставляется новое, пустое адресное пространство; процедуры загрузки программ наполняют это адресное пространство регионами виртуальной памяти.

Создание нового процесса с помощью fork включает создание полной копии адресного пространства существующего процесса.

Ядро копирует дескрипторы доступа к виртуальной памяти родительского процесса, затем создает новый набор таблиц страниц для дочернего процесса.

Таблицы страниц процесса-родителя копируются непосредственно в таблицы страниц дочернего, причем счетчик ссылок на каждую страницу увеличивается.

После исполнения fork родительский и дочерний процесс используют одни и те же физические страницы в своих виртуальных адресных пространствах.

Система управления страницами откачивает страницы физической памяти на диск, если они требуются для какой-либо другой цели.

Система управления страницами делится на две части:

  • Алгоритм откачки, который определяет, какие страницы и когда откачать на диск;
  • Механизм подкачки фактически выполняет передачу и подкачивает данные обратно в физическую память, если требуется.

Ядро Linux резервирует постоянный, зависящий от архитектуры регион виртуального адресного пространства каждого процесса для его собственного внутреннего использования.

Эта область виртуальной памяти ядра содержит два региона:

  • Статическую область, содержащую ссылки из таблицы страниц на каждую доступную физическую страницу памяти в системе, так что используется простая трансляция физического адреса в виртуальный при исполнении кода ядра.
  • Остаток зарезервированной части не используется ни для какой другой цели; его элементы таблицы страниц могут быть модифицированы и указывать на любые страницы в памяти.
< Лекция 25 || Лекция 26: 1234 || Лекция 27 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков