#operating-system
#операционная система
Вопрос:
В настоящее время я прохожу курс ОС.
В примечаниях говорилось:
В некоторых случаях ОС просто работает без отображения. Тогда все, что ему нужно сделать, это прочитать таблицы и перевести адреса пользователей в программное обеспечение. Однако адреса, которые являются смежными в виртуальном адресном пространстве, могут не быть смежными физически. Таким образом, операции ввода-вывода, возможно, придется разделить на несколько блоков.
Предположим, что ОС также работает с отображением, тогда она должна сгенерировать запись таблицы страниц для области пользователя. Обратите внимание, что ни при каких обстоятельствах пользователям не следует предоставлять доступ к таблицам сопоставления.
У меня есть три вопроса:
- Что означает ОС, работающая без отображения?
- Как насчет определения операционной системы, работающей с отображением?
- Почему операции ввода-вывода могут быть разделены на несколько блоков, когда ОС работает без отображения?
Ответ №1:
Недостаточно контекста, чтобы быть уверенным на 100%; но я подозреваю, что:
а) Когда они говорят «ОС», они на самом деле означают «ядро». Обратите внимание, что ОС — это огромная вещь, состоящая из множества частей (справочная система, файлы для интернационализации, графический интерфейс, различные библиотеки, различные утилиты для управления системой и т. Д.), Где почти вся ОС (все, кроме ядра) — это обычный пользовательский материал.
б) «ОС просто работает без отображения» на самом деле означает, что ядро работает с отключенным MMU (так что ядро имеет прямой доступ к физической памяти без участия «преобразования виртуальных адресов в физические адреса»). Для реального оборудования это ужасно (процессоры кэшируют переводы «виртуального адреса на физический адрес» в нечто, называемое буфером просмотра TLB / translation, а отключение MMU при входе в ядро и повторное включение его при возврате из ядра приводит к сбросу TLB, что снижает производительность из-за «TLB пропускает «).
c) «ОС также работает с отображением» на самом деле означает, что ядро работает с включенным MMU (так что ядро должно обеспечить отображение содержимого в виртуальное адресное пространство для доступа к нему, поскольку оно не имеет прямого доступа к физической памяти). Обратите внимание, что ядро может просто отображать часть / большую часть / всю физическую память во все виртуальные адресные пространства, чтобы оно всегда имело «почти прямой» доступ к физической памяти.
Почему операции ввода-вывода могут быть разделены на несколько блоков, когда ОС работает без отображения?
Если пользовательское пространство использует MMU (для преобразования виртуальных адресов в физические адреса), а «непрерывное в виртуальной памяти» не означает «непрерывное в физической памяти»; Ввод-вывод в / из пользовательского пространства (например read()
, write()
) должен быть разделен на «физически смежные» части для устройств. В этом случае не имеет значения, сопоставлено ли / не сопоставлено ядро (или использует / не использует MMU) — имеет значение только то, что пространство пользователя использует MMU.
Если ядро также использует MMU, а «непрерывный в виртуальной памяти» не означает «непрерывный в физической памяти» для пространства ядра; ввод-вывод в / из ядра также должен быть разделен на «физически смежные» части для устройств.