Что означает термин «ОПЕРАЦИОННАЯ система, работающая с отображением / без сопоставления»?

#operating-system

#операционная система

Вопрос:

В настоящее время я прохожу курс ОС.

В примечаниях говорилось:

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

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

У меня есть три вопроса:

  • Что означает ОС, работающая без отображения?
  • Как насчет определения операционной системы, работающей с отображением?
  • Почему операции ввода-вывода могут быть разделены на несколько блоков, когда ОС работает без отображения?

Ответ №1:

Недостаточно контекста, чтобы быть уверенным на 100%; но я подозреваю, что:

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

б) «ОС просто работает без отображения» на самом деле означает, что ядро работает с отключенным MMU (так что ядро имеет прямой доступ к физической памяти без участия «преобразования виртуальных адресов в физические адреса»). Для реального оборудования это ужасно (процессоры кэшируют переводы «виртуального адреса на физический адрес» в нечто, называемое буфером просмотра TLB / translation, а отключение MMU при входе в ядро и повторное включение его при возврате из ядра приводит к сбросу TLB, что снижает производительность из-за «TLB пропускает «).

c) «ОС также работает с отображением» на самом деле означает, что ядро работает с включенным MMU (так что ядро должно обеспечить отображение содержимого в виртуальное адресное пространство для доступа к нему, поскольку оно не имеет прямого доступа к физической памяти). Обратите внимание, что ядро может просто отображать часть / большую часть / всю физическую память во все виртуальные адресные пространства, чтобы оно всегда имело «почти прямой» доступ к физической памяти.

Почему операции ввода-вывода могут быть разделены на несколько блоков, когда ОС работает без отображения?

Если пользовательское пространство использует MMU (для преобразования виртуальных адресов в физические адреса), а «непрерывное в виртуальной памяти» не означает «непрерывное в физической памяти»; Ввод-вывод в / из пользовательского пространства (например read() , write() ) должен быть разделен на «физически смежные» части для устройств. В этом случае не имеет значения, сопоставлено ли / не сопоставлено ядро (или использует / не использует MMU) — имеет значение только то, что пространство пользователя использует MMU.

Если ядро также использует MMU, а «непрерывный в виртуальной памяти» не означает «непрерывный в физической памяти» для пространства ядра; ввод-вывод в / из ядра также должен быть разделен на «физически смежные» части для устройств.