> взлетал Linux, а когда появился L4. А когда этот L4 доработали до уровня OS?Линукс очень быстро стал self-hosted операционкой пригодной для разработки. Потому что автор не пускал слюни на крутые концепции, а нацелился сделать нечто работающее. Ну, потому что юзать коммерческую ось с конскими условиями и массой неустранимых ограничений ему было дико вломы. И не только ему. По поводу чего возних нехилый спрос а добровольцы готовые вкалывать над задачей выстроились в очередь.
>> дебажить все это вообще без последствий для хостовой оси.
> И, извините, виртуализированное ядро ругнётся, когда драйвер залезет не туда?
Может и ругнуться. Все-таки у современных процов есть пометки страниц как readonly, NX биты и прочая.
Кстати, если вы не в курсе современных веяний архитектуры, горбатый драйвер может положить систему одной левой. Уровни привилегий - пофигу. Современное железо умеет DMA делать и это не через процессор и его MMU вообще - там прав доступа СОВСЕМ НЕТУ. Это просто лобовая запись в память. Если драйвер попросит у железки чего-то не то, железяка накроет своей записью по DMA... чего-нибудь. Уж куда попадет. В совсем новых системах с IOMMU где он включен и используется - пролечено слегка. Ибо такое свойство очень уж мешает жить виртуализации, т.к. печально когда гуест которому отдали PCI девайс радостно выносит мозг всему хосту, прострелив ему голову кривым программированием DMA. Ну вот так можно уже и работу с PCI девайсом в отдельной виртуалочке отлаживать. Как железное, только весь хост в случае аварии не факапнется - IOMMU поймает проблемную запись. Микроядерщики про данную сторону медали почему-то тактично забывают. И да, от периферии технически сложно потребовать чтобы она разбиралась в каком там кольце код. Если проц знает это, то вот какая-нибудь видеокарта фигарящая DMA-транзакцию понятия не имеет кто и с каким уровнем привилегий это просил и насколько там правильные адреса и что по ним находится. IOMMU это частично пролечивает, но он скорее нацелен на именно отпиловку устройств от физических машин и проброс в виртуалки. И ядро которому этот монстрятник потребуется правильно программить - явно не будет микро в плане объема кода. Ну и багов.
> Защита памяти-то не работает всё равно => о многих ошибках вы даже не узнаете.
Ну так вы и о DMA транзакциях прилетевших из девайса черти-куда можете ничего не узнать в куче случаев. Особенно в системе без IOMMU, где каких либо ограничений на DMA вообще нету. Совершенно независимо от того код и в каком кольце виноват в неверном программировании железки. На железку кольца вообще не распостраняются :).
> А можно ли запустить драйвер под valgrind? ;-)
С учетом достижений типа запуска кернелмода под видом юзермода и потом грамотного на...лова средствами виртуализатора - наверное если кому реально приспичит то это не столь уж и фантастично. Ну то-есть, я в состоянии себе представить как это могло бы выглядеть, будь оно кому-то позарез надо.