В винде к примеру используются только 2 уровня, 0 для ядра/дров и 3 для софта, а как с этим обстоит дело в *nix системах, как положено, или как удобне разработчикам?
Потому, что процессоров в мире много, у каких-то 2 уровня прерываний, у каких-то 64, а принципиально сильно легче от того, что умерла не вся система, а только половина из-за ошибки в ядре не становится. Линус и Вахалия говорят про это, что надо лучше отлаживать критические вещи, а не ухудшать преспективы портирования. Да они и так нормально отлажены за долгие годы.
>В винде к примеру используются только 2 уровня, 0 для ядра/дров и 3 для софта, а как с этим обстоит дело в *nix системах, как положено, или как удобне разработчикам?
кем положено? Три кольца - продукт влияния негрософта на интел времен разработки OS/2 совместно с ибм. Если мне склероз не изменяет. Индусы тогда бегали с "красивой" идеей
0 - ядро
1 - драйвера и системные сервисы (гуи опять же)
2 - пользовательские приложения
идея не прижилась, оказалось, что быстрее двухуровневая система, os/2 загнулся и т.д.
гик, ты выкрал с лора машину времени и подарил микрософту? идея аппаратной защиты памяти появилась практически одновременно с микропроцессорами - еще multics работал на машине с 6 кольцами и ВСЕ использовал
>гик, ты выкрал с лора машину времени и подарил микрософту? идея аппаратной защиты памяти появилась практически одновременно с микропроцессорами - еще multics работал на машине с 6 кольцами и ВСЕ использовал
я не говорю про идею, я говорю про появление конкретной реализации в 80386
Вообще-то можно вообще не использовать уровни привелегий, а обойтись лишь понятиями адресных пространств и отображением страниц.
Пример: супервизор владеет каждой страницей и может отобразить её в любое адресное пространство. Процесс, получивший страницу, может также её отобразить в другое адресное пространство.
Соответственно, уровни привелегий реализуются через виртуальную память. Да, чуть не забыл, при отображении страницы в другое адресное пространство, она может быть отображена с любым сочетание атрибутов rwx, при условии, что эти атрибуты установлены у владельца страницы.
полноценная эмуляция х86 - это тот еще пиздец (скажите спасибо необходимости поддерживать совместимость с мегатоннами проприетарного говна, выпущенного за 25 лет)
в инферно нет защиты памяти, потому что она не нужна
в инферно нет средств исполнить нативный код процессора, самый низкий уровень - это байт-код виртуальной машины dis
в байт-коде dis нет операций работы с указателями, кроме создания нового (указывающего на выделенный участок памяти) и разыименования, нити (процессов в обычном понимании в инферно нет - только нити) могут обмениваться значениями указателей через каналы
посему ответ такой - нет, такой код не может ничего убить, потому что в принципе нельзя изменять значения указателей
Вы ещё спросите почему ни виндовс ни линукс не используют стандартные ещё для 386х машин атрибуты доступа к страницам памяти, отведенным под стек и для них в П4 пришлось вводить ещё и избыточный бит XP, запрещающий передачу исполнения данным, сидящим в стеке..
похожа на регистровую виртуальную машину с JIT, автоматическим управлением памятью, встроенной многопоточностью и сменными HAL (по одному на каждую целевую платформу, dis + HAL + некоторые полезные либы = ядро inferno)