Ну тогда надо делать(как минимум) аппаратную доработку, MMU, чтобы была память гипервизора и память виртуалок.
Ну тогда надо делать(как минимум) аппаратную доработку, MMU, чтобы была память гипервизора и память виртуалок.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
ИМХО нормальная виртуализация возможна и нужна только в современных клонах, таких как PentEvo.
Памяти много, можно организовать на ПЛИС схему виртуальных адресов и переключения страниц при обращении по нужным RST.
Задача интересная, но и сложная. ПО для такого режима нет.
как доступ к железу разруливать? памяти много, ее можно поделить, а железо - одно.
Схема может подсунуть пустышку вместо памяти, к которой незаконно обращается процесс. Так что проблема не в этом. Проблема в командах IM 0/1/2, DI, от которых невозможно защититься.
А хотя... схема может подменять опкоды во время их чтения.
Нужно или нужно - вопрос 90-х, когда действительно было актуальным запустить на одном спеке несколько системных программ. Сейчас - только и исключительно ради спортивного интереса.
Для з80 есть несколько проблем:
- непростой отлов состояния проца (включенные страницы, IM, стек наконец, который обязан быть в ОЗУ, иначе в задачу не вернемся, хорошо, если не грохнем ядро).
- отстутствие терминации кванта задачи, чтоб вернуть управление ядру или другим задачам, если задача не занимается полезным делом. ОК, можно отлавливать халт, но если задача будет висеть в цикле (опрашивая например клавишу), она будет просто грузить проц и ждать окончание своего заскедьюленого времени.
- банальная слоупочность зетника, которая в сочетании с предыдущим пунктом сильно уменьшит комфорт от работы. Ну допустим, турба, ОК.
- необходимость аппаратной доработки, которая будет а) помогать подменять/сохранять контекст, б) обеспечивать прерывание таски по скедьюлеру (приходит на ум только NMI).
Если очень захотеть, реализовать можно. Например ФПГА может вообще отлавливать все критичные изменения контекста процом (паги, стек, режим ИНТа) и хранить внутри доступными для чтения. Но это какбэ не то, а сделать подобное на ЛА3 - надо куча МГТФа.
---------- Post added at 10:15 ---------- Previous post was at 10:12 ----------
А, еще забыл про периферию. Придется виртуализировать все устройства, та же ВГ93 сойдет с ума, если ее трогать из 1+ задач.
Как вариант, не виртуализировать - а сериализировать: устроить очередь на входе таких устройств: порезать обращения на неразрывные "кадры", которые выполнять последовательно в очереди. Ну собственно, как делается во всех многозадачных ОС (один хрен какая-то же программная прослойка все обеспечивающая там же будет?).
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Не проще ли для этих целей заюзать уже готовые решения? Тот же i386, в котором все вышеуказанные проблемы решены? Когда у нас для виртуальных процев (или машин) есть свои адресные пространства, свои пространства портов ВВ. Когда проц может сам это регулировать, оперируя реальным ОЗУ? Естественно не без помощи ОСи? Зачем велосипед изобретать? Я вот к чему. Всё равно в итоге вы придёте к общеизвестным механизмам. На базе Z80 это просто не сделать, в апофеозе, вы всё таки придёте к тому, что было сделано ещё в 1982-м году. К MP/M. Не стоит ли почитать как там это организовано?
---------- Post added at 23:22 ---------- Previous post was at 23:19 ----------
Защита ОЗУ в простейшем варианте реализована в Z-280. Когда нельзя обратиться к странице, если у тебя нет прав на неё. Зачем изобретать велосипед? Читаем доки Алоний, читаем доки и учимся. Потом думаем, как это применить и надо ли оно нам?
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
Я говорю про решения, которые можно применить в ZX Evo. Процессор там заменить не получится.
Тогда советую тебе ознакомиться с ОСями, на Z80, где это уже давным давно реализовано. Да, у них есть недостатки, но они опирались на железо какое? Начала 80-х. У нас сейчас возможности шире. Подумай. Но далее того, что было сделан уйти вряд ли удастся, т.е. будет более красивее но не более.
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)