Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операційні системи.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.41 Mб
Скачать

Лекція 21. Огляд архітектури й можливостей системи Linux: керування пам'яттю, ресурсами, файлові системи, драйвери пристроїв, мережі, безпека План

  • Управління фізичною пам'яттю в Linux

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

  • Виконання і загрузка користувальницьких программ в Linux

  • Системи файлів Linux

  • Ввод и вивід в Linux

  • Взаємодія процесів в Linux

  • Структура мережі в Linux

  • Безпека в Linux

  • Розвиток и використання Linux

Керування фізичною пам'яттю в Linux

Система розподілу фізичної пам'яті в Linux займається розміщенням і звільненням сторінок, груп сторінок і невеликих блоків пам'яті. Вона має додаткові механізми для віртуальної пам'яті, відображуваної в адресний простір процесів, що виконують.

Розподільник сторінок розміщає й звільняє фізичні сторінки; він може також по запиті розміщати групи суміжних сторінок.

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

  • Кожна область пам'яті, що підлягає розподілу, утворить пари з її суміжним "партнером".

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

  • Якщо не існує малої області пам'яті, щоб задовольнити невеликий запит на пам'ять, то область пам'яті більшого розміру розщеплюється на два області-партнерів для задоволення даного запиту.

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

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

Рис. 26.1.  Розщеплення пам'яті в купі в системі Linux.

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

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

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

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

  • Фізичну – за допомогою таблиці сторінок для кожного процесу.

Для керування віртуальною пам'яттю використаються:

  • Файл відкачки (backing store), щоописує, звідки беруться сторінки для заданого регіону; регіони звичайно підтримуються або файлом, або не підтримуються взагалі (пам'ять, обнуляемая на вимогу)

  • Реакція регіону на запис (спільне використання сторінок або копіювання при записі - COW).

Ядро створює новий віртуальний адресний простір:

  • Коли процес запускає нову програму системним викликом exec;

  • При створенні нового процесу системним викликом fork.

При виконанні нової програми процесу надається новий, порожній адресний простір; процедури завантаження програм наповнюють цей адресний простір регіонами віртуальної пам'яті.

Створення нового процесу за допомогою fork включає створення повної копії адресного простору існуючого процесу.

Ядро копіює дескриптори доступу до віртуальної пам'яті батьківського процесу, потім створює новий набір таблиць сторінок для дочірнього процесу.

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

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

Система керування сторінками откачивает сторінки фізичної пам'яті на диск, якщо вони потрібні для якої-небудь іншої мети.

Система керування сторінками ділиться на дві частини:

  • Алгоритм відкачки, що визначає, які сторінки й коли відкачати на диск;

  • Механізм підкачування фактично виконує передачу й підкачує дані назад у фізичну пам'ять, якщо потрібно.

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

Ця область віртуальної пам'яті ядра містить два регіони:

  • Статичну область, що містить посилання з таблиці сторінок на кожну доступну фізичну сторінку пам'яті в системі, так що використається проста трансляція фізичної адреси у віртуальний при виконанні коду ядра.

  • Залишок зарезервованої частини не використається ні для якої іншої мети; його елементи таблиці сторінок можуть бути модифіковані й указувати на будь-які сторінки в пам'яті.