> core/core 2 - это наследник p3, современная i-серия, это таки нехалемы.А i-серия - наследник коров2, еще более доработанный. Там еще больше блоков, еще больше кеша, etc. И что забавно, это в очередной раз позволило интелу взять новые высоты, эволюционным а не революционным методом. Что довольно предсказуемо.
>> Но все это не отменяет отсутствия команд для загрузки данных по смещению относительно program counter.
> Приплыли. Возьму на себя роль КО. Security model в ia32 была достаточно
> мощной для своего времени,
Дейстивтельно, приплыли! В разговоре о режимах адресации откуда-то берется секурити модель. А она тут к чему?
> и она достаточно мощна сегодня, ну существует туева хуча процов для бедных
> которые поддерживали только два уровня защиты и страничную адресацию с плоским
> линейным пространством без защиты из-за чего пришлось похерить такую мегавещь.
Не хочу ничего сказать, но MMU других процессоров (на плечи которых и ложится обеспечение защиты памяти) по общей своей идее почему-то довольно похожи на то что у х86. Примерно такие же страницы и что там еще. А плюс-минус 1-2 лишних кольца-уровня защиты - да вообще похрену, все-равно все современные операционки довольствуются 2-я, "ядром всемогущим" и "юзером бесправным". Все, включая ваш любимый MS на "лишние" кольца дружно забили и ограничились двумя. Ну и все остальные производители процов гляда на это тоже активно развивали эти 2 режима. Бывает и больше режимов, это у кого как. В этом плане тот же интел не так уж принципиально отличен от ARM или MIPS или там кого еще. Примерно как почти все легковые автомобили имеют более-менее похожий друг на друга дизайн, 4 колеса, руль и педали, так и здесь. Устоялся вот такой вот дизайн.
> В результате мы имеем такие бонусы как buffer overflow позволяющие
> загрузить и выполнить код,
Не вижу как лишние кольца помогли бы борьбе с переполнением буфера. Если не брать в расчет приколы типа эксплойта на анимированные курсоры в вашей любимой винде (да, переполнение буфера в ядре это весьма лютый фэйл, а учтя что у вас там один только win32k.sys на 2 мега вгружается - наверное он не последний), код выполняется в наименее привилегированном 3-м кольце.
> ведро костылей в виде nx/xd и, опять же, возможность пробить систему и
> вылезти в ring 0.
А вот тут стоит сказать особо. Сам по себе дизайн с разделением на кернел, юзер и страничным MMU, что у интела, что у остальных (он стал столь же типичен, как типовой дизайн автомобиля) - вполне честный и не имеющий очевидных изъянов: есть "система", которая рулит правами (ядро). И бесправный юзер который сам ничего не может и должен просить систему через сисколы делать потенциально опасные операции под чутким контролем системы. И если вдруг изоляция процесса от процесса или системы от процесса пользователя нарушилась, значит ... операционка обосралась при выполнении своей непосредственной задачи как то разделение ресурсов, управление их совместным использованием и энфорсинг прав доступа. Это - откровенный баг операционки. Сюрприз!
> А возможность загружать данные относительно (e)ip она лишняя, сегмент кода в ring
> 3 (тобишь userland) похорошему должен иметь только execute, без всяких read.
На самом деле, execute без read - это из разряда "хочу есть, но не ртом". На такие извращения процессоры никто не рассчитывал и есть такое смутное подозрение что во первых, сломается половина программ, во вторых, это ограничение наверное можно попробовать обойти окольными путями, а в третьих - мне не понятно: а кого и от чего это защитит? Ну защита на запись - понятно. Защита областей типа стека от выполнения - тоже понятно. А вот защита от чтения - ???