Отслеживает ли ядро, где запускается процесс в памяти, или это делает центральный процессор?

#kernel #cpu #paging

#ядро #центральный процессор #подкачка

Вопрос:

Я пытаюсь реализовать подкачку в простом ядре, которое я пишу. Я разбираюсь в каталогах страниц и таблицах страниц и в том, как отобразить память с виртуального адреса на физический адрес. Я уже реализовал эти концепции в своем ядре. Часть, которую я не понимаю, заключается в том, должно ли ядро отслеживать, где запускается каждая программа в памяти (по смещению страницы), или это обрабатывает центральный процессор. Если центральный процессор обрабатывает это, то для этого и существует TSS? Спасибо.

Комментарии:

1. Ядро должно вести учет страниц, отображенных процессом (включая ту, которая отображается во время загрузки процесса). TSS необходим для некоторых механизмов защиты (например, переключения стека) и был в первую очередь попыткой переключения контекста с поддержкой hw, но он никогда не использовался в этой второй форме основными операционными системами (из-за переносимости, именно поэтому страницы обычно также хранятся в таблицах, специфичных для ОС)

2. Но если у меня есть два процесса, допустим, адрес виртуальной памяти процесса 1 0x0 сопоставляется с физическим адресом 0xc0000, а адрес виртуальной памяти процесса 2 0x0 сопоставляется с физическим адресом 0xd0000. Эти адреса правильно преобразуются центральным процессором? Итак, как центральный процессор проводит различие между адресом памяти процесса 1 0 и адресом памяти процесса 2 0?

3. Центральный процессор использует таблицы преобразования, и ОС, прежде чем перейти к коду процесса, устанавливает соответствующую таблицу как «активную» / «текущую». Помните: один центральный процессор может выполнить только одну программу в данный момент (см. параллельный против параллельного), поэтому в данный момент активна только одна конфигурация виртуальной памяти. ОС устанавливает ту или иную таблицу на основе уникального процесса, запущенного в центральном процессоре в данный момент.

4. Аааа, это имеет гораздо больше смысла. Спасибо.