Изучаю работу в защищенном режиме, и сразу возник вопрос, раз в сегмент кода мы не можем писать (даже нет такого бита в дескрипторе), то как операционная система туда пишет? Я не догоняю. И как мы можем менять коды функций в памяти. И где находится код операционной системы, в каком сегменте? Сори за ламерский вопрос.
Quantum А где конкретно он этот флаг выставляет? По определению дескриптора для сегмента кода он не может быть writable.
Где находится Код ОС, зависит от реализации. Обычно страницы такого кода помечаюстя (флаг global в эл-те PTE) как "всегда присутствующие" в TBL кеше. Их к тому же не сбрасывает на хард механизм подкачки. Кстати для защиты на уровне страниц не достаточно пометить флаг WRITABLE . Необходитмо еще в CR0 Добавить флаг WP (Write Protect)
Iceberg > "Мы видимо говорим о разных вещах" Скорее на разных языках, т.к. у тех, кто изучает работу процессора в защищенном режиме и добрался до понятия плоская модель памяти (flat) - подобных вопросов обычно не возникает ) Да и поиск по форуму иногда рулит К примеру, чтобы не повторяться - Сегментные регистры и 386 Если что не совсем ясно, спрашивай