Почему в виртуальной памяти зарезервирован сегмент ОС

  1. Почему часть виртуальной памяти зарезервирована для ОС? Почему он ограничен определенным размером? Кажется, это общеизвестный факт, потому что, когда я гуглил, я не нашел никого, кто задавал подобные вопросы.
  2. Что происходит, если осуществляется доступ к сегменту ОС (часть ВМ, зарезервированная для ОС)?
  3. Как сегмент ОС влияет на трансляцию между виртуальной и физической памятью?
  4. Например, если ваша виртуальная память составляет 128 КБ, первые 32 КБ выделены для сегмента 0, а последние 32 КБ — для сегмента 1. Затем вы резервируете первые 16 КБ для сегмента ОС. Что происходит с сегментом 0? Уменьшается ли его размер до 16 КБ, потому что 16 КБ были изменены на сегмент ОС? Или остается прежним?

person HoneyWine    schedule 04.12.2015    source источник
comment
Что, если бы не было, и у вас закончилась виртуальная машина. ядро только настолько большое.   -  person Jasen    schedule 04.12.2015
comment
что означает OS segment?   -  person Jasen    schedule 04.12.2015
comment
@Jasen Извините, я имел в виду часть виртуальной машины, зарезервированную для ОС.   -  person HoneyWine    schedule 04.12.2015


Ответы (1)


Почему часть виртуальной памяти зарезервирована для ОС? Почему он ограничен определенным размером? Кажется, это общеизвестный факт, потому что, когда я гуглил, я не нашел никого, кто задавал подобные вопросы.

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

Когда происходит прерывание, любой процесс может быть запущен. Таким образом, обработчик режима ядра должен находиться в том же месте.

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

Что происходит, если осуществляется доступ к сегменту ОС?

Это зависит от того, как к нему осуществляется доступ. Если процесс обращается к нему в режиме ядра (системный вызов, прерывание, исключение), это нормально. Если он получает доступ к зарезервированной области в пользовательском режиме, это обычно вызывает какое-либо нарушение прав доступа. Некоторые системы могут сделать некоторые области системной памяти доступными для чтения из пользовательского режима, но обычно все они защищены от записи.

Как сегмент ОС влияет на трансляцию между виртуальной и физической памятью?

Это зависит от системы. Некоторые системы делают пользовательские таблицы страниц доступными для страниц. Тогда таблицы пользовательских страниц могут находиться в выгружаемых областях системного адресного пространства. Другими словами, таблицы страниц находятся в виртуальной/логической памяти, что дает дополнительную трансляцию для пользовательских адресов, которая не выполняется для системных адресов.

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

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

Например, если ваша виртуальная память составляет 128 КБ, первые 32 КБ выделены для сегмента 0, а последние 32 КБ — для сегмента 1. Затем вы резервируете первые 16 КБ для сегмента ОС. Что происходит с сегментом 0? Уменьшается ли его размер до 16 КБ, потому что 16 КБ были изменены на сегмент ОС? Или остается прежним?

Это не хороший пример. Виртуальная память никогда не бывает такой маленькой. Представьте себе 32-битную систему. Виртуальное адресное пространство составляет 4 ГБ. Система выделяет первые 3 ГБ пользовательскому пространству пользователя, а последний 1 ГБ — системному пространству.

Все процессы используют одно и то же системное пространство объемом 1 ГБ. У них есть собственное уникальное пользовательское пространство объемом 3 ГБ.

person user3344003    schedule 04.12.2015
comment
Благодарю вас! Это очень подробное объяснение. - person HoneyWine; 04.12.2015