Pull to refresh

Comments 9

Интересно, что почти этот же подход можно применить и без эмулятора на живой линукс системе с заоффлайненым ядром:
загрузить ядро с дыркой в физ. памяти, например memmap=64M$0x19000000
заоффлайнить ядро в линуксе с echo 0 > /sys/devices/system/cpu/cpu2/online
скопировать бинарник в 0x19000000 физической памяти через /dev/mem,mmap. (в бинарник добавить настройку gdt,idt по вкусу)
и небольшой загрузчик в соответствующий адрес (линкскрипт настроить соответственно),
инициировать INIT/SIPIx2 через LAPIC адрес на ACPI ID заоффлайненого ядра (warning: ACPI ID не всегда = Linux kernel core ID)

Общаться потом можно через шаренную физ. память и например mwait.
Мне это напомнило диалоги из House M.D
Ух ты, это же просто гениально!
Правда, с приходом аппаратной виртуализации уже не так актуально. То же самое, в принципе может сделать гипервизор, но при этом он ещё и виртуализирует ком-порт, например. Можно будет аттачиться дебаггером. И не нужно танцы с бубном для загрузки в память и перезапуска остановленного ядра.

Но вообще идея хороша.
Кстати, нечто очень похожее сейчас используется в мобильных процессорах. Например в TI OMAP на паре Cortex A9 работает линукс, а на паре Cortex M3 запускается проприетарная Realtime OS, на которой бегают аппаратные медиа-кодеки. И общение как раз происходит через shared memmory + аппаратные mailbox.
Любой ARM с MMU это вполне может с одним ядром начиная с ARM9. Стартует реалтаймовое ядро и из-под него запускается паравиртуализированный линукс. Собственно так работают телефоны на андроиде у quallcom — есть реалтаймовость для bb и аппаратная защита проприетарного кода от линукса.
Узнаю знакомые признаки наличия микроядра L4. ;)
UFO just landed and posted this here
UFO just landed and posted this here
Sign up to leave a comment.