Разбор задачи 2: уровни вычислительной системы

⏱ 25 мин · 🧩 заданий: 4

Как устроен хороший ответ

Для каждого компонента ответ состоит из двух частей: уровень и почему. Пояснение опирается на три вопроса:

  1. Это аппаратура или программа?
  2. Если программа — выполняется в ядре или в режиме пользователя?
  3. С какими сущностями работает: физическими (кадры, устройства), логическими (файлы, процессы), программами (компоновка, загрузка) или задачами пользователя?
5 прикладные системы fdisk, bind, (ldd) 4 системы программирования ldd 3 упр. логическими ресурсами /proc/cpuinfo, (страничный демон) 2 упр. физическими ресурсами таблица страниц, инвертированная таблица, страничный демон, (cr3) 1 аппаратура cr3, таблица страниц (её читает MMU), (инвертированная таблица)

Образцовые ответы

(a) Программа fdisk — прикладной уровень

Прикладные системы (утилита администратора). fdisk — обычный процесс в режиме пользователя. Таблицу разделов он читает и пишет через файл блочного устройства /dev/sda вызовами open, read, write, ioctl(BLKRRPART). Сам обмен с диском выполняет драйвер ядра.

Можно упомянуть, что он управляет физическим ресурсом — разметкой диска. Поэтому отметка «упр. физическими ресурсами» с пояснением тоже допустима. Но код ядра fdisk не содержит.

(b) Программа ldd — системы программирования

Системы программирования. ldd показывает, какие разделяемые библиотеки нужны программе и где их найдёт динамический загрузчик. Технически она запускает ld-linux.so с переменной LD_TRACE_LOADED_OBJECTS=1. Это понятия компоновки и загрузки программ. Как исполняемый процесс это прикладная утилита, поэтому «+ прикладной» с пояснением тоже засчитывают.

(c) Файл /proc/cpuinfo — управление логическими ресурсами

Управление логическими ресурсами. Это не файл на диске, а псевдофайл файловой системы procfs. Ядро генерирует его текст в момент read. Он доступен через VFS, как любой файл. Содержимое — сведения об аппаратуре (модель процессора, частота, флаги). Поэтому можно добавить: «отображает аппаратный уровень и данные, собранные подсистемой управления физическими ресурсами».

(d) Таблица страниц — аппаратура и управление физическими ресурсами

Уровни 1 и 2. Это структура данных в памяти. Её формат задаёт аппаратура: MMU читает её при каждом промахе TLB и сам выставляет биты A и D. Заполняет таблицу ядро — подсистема управления памятью — при страничных отказах, fork, mmap, выгрузке страниц.

(e) Инвертированная таблица страниц — управление физическими ресурсами

Уровень 2, а на некоторых архитектурах и 1. Одна запись на физический кадр: какая виртуальная страница какого процесса в нём лежит. Её размер зависит от объёма физической памяти, а не от адресных пространств. Ядро использует такие структуры для учёта кадров (в Linux — массив struct page, обратные отображения rmap). На PowerPC и IA-64 хешированную инвертированную таблицу просматривает аппаратура, отсюда «+» в уровне 1.

(f) Страничный демон — управление физическими ресурсами

Уровень 2. Поток ядра (kswapd в Linux, pagedaemon в BSD). Следит, чтобы свободных кадров было не меньше порога. Выбирает жертвы по биту доступа (алгоритм часов), грязные страницы сначала записывает на диск, затем освобождает кадры. Работает с физическими кадрами. Можно добавить уровень 3: он оперирует страницами виртуальных адресных пространств процессов и страничным кешем файлов.

(g) DNS-сервер bind — прикладной уровень

Прикладные системы. Обычная серверная программа в режиме пользователя (named). Пользуется сокетами и файлами через системные вызовы. Решает прикладную задачу: преобразование имён в адреса.

(h) Регистр cr3 — аппаратура

Аппаратура. Управляющий регистр процессора i386. Хранит физический адрес каталога страниц текущего адресного пространства, и MMU начинает с него каждый обход таблиц. Записывать в cr3 может только ядро: это привилегированная инструкция. Подсистема управления памятью перезагружает его при переключении процессов, и при этом сбрасывается TLB. Поэтому допустимо добавить уровень 2.

Шаблон фразы

«X относится к уровню N, потому что [кто выполняет: процессор / ядро / процесс пользователя] и [с чем работает]. Также связан с уровнем M, так как [кто его использует или заполняет]». Две такие фразы на каждый пункт — и задача решена полностью.

Если какой-то ответ неочевиден, повторите урок «Уровни вычислительной системы» модуля «Вычислительная система и ядро».

Практика решено 0 из 4

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Заполнить таблицу

Задача 2 экзамена. Отметьте все уровни, к которым относится компонент.

АппаратураУпр. физическими ресурсамиУпр. логическими ресурсамиСистемы программированияПрикладные системы
(a) Программа fdisk
(b) Программа ldd
(c) Файл /proc/cpuinfo
(d) Таблица страниц
(e) Инвертированная таблица страниц
(f) Страничный демон
(g) DNS-сервер bind
(h) Регистр cr3 (i386)
Отметьте ячейку — «+», пустая — «−».
Задание 2 Заполнить таблицу

Тренировка на других компонентах. Отметьте все подходящие уровни.

АппаратураУпр. физическими ресурсамиУпр. логическими ресурсамиСистемы программированияПрикладные системы
Компилятор gcc
TLB
Драйвер диска
Динамический загрузчик ld-linux.so
Веб-сервер nginx
Таблица открытых файлов ядра
Обработчик прерывания таймера
Отладчик gdb
Отметьте ячейку — «+», пустая — «−».
Задание 3 Один вариант ответа

Какое пояснение к пункту «таблица страниц» лучше всего?

Задание 4 Один вариант ответа

Почему fdisk — прикладной уровень, хотя он работает с разделами диска?

Войдите, чтобы отмечать пройденные уроки.