Системы с базовой виртуальной адресацией
Сложность возникает, когда ядру при исполнении вызова требуется доступ к пользовательскому адресному пространству. В простейшем случае, когда все параметры (как входные, так и выходные) размещаются в регистрах и представляют собой скалярные значения, проблемы нет, но большинство системных вызовов, особенно запросы обмена данными с внешними устройствами, в эту схему не укладываются.
В системах с базовой адресацией эту проблему обычно решают просто: "системном" режиме базовый и ограничительный регистры не используют-вообще, и ядро имеет полный доступ ко всей физической памяти, в том и к адресным пространствам всех пользовательских задач (рис. 4.21). решение приводит к тому, что, хотя система и защищена от ошибок пользовательских программах, пользовательские процессы оказываются совершенно не защищены от системы, а ядро – не защищено от самого себя. Ошибка в любом из системных модулей приводит к полной остановке работы.
Рис. 4.21. Системный и пользовательский режимы
В архитектурах с более сложной адресацией нередко предоставляются специальные инструкции для передачи данных между пользовательским и системным адресными пространствами. Однако и в этом случае ядро ОС обычно имеет полный доступ к адресным пространствам пользовательских задач.
В современных системах базовая виртуальная адресация используется редко. Дело не в том, что она плоха, а в том, что более сложные методы, такие как сегментная и страничная трансляция адресов, оказались намного лучше Часто под словами "виртуальная память" подразумевают именно сегментную или страничную адресацию.