Защиты не будет, любая программа может уронить систему. У БК0010 есть пультовый режим (типа режима отладки с подключением альтернативного ПЗУ, с возможностью пошаговой отладки), но он требует железной поддержки (доп платы) и пока я его не планирую использовать. Так же можно сделать полноценный пейджинг (блокирование чтения или записи блоков размером 64 байта) на внешнем контроллере памяти, но это то же паяльник.
DLL
DLL выполняется в контексте задачи. То есть все созданные окна и выделенная память будет принадлежать вызвавшему процессу. Завершается процесс, уничтожаются все созданные окна.
DLL может обладать собственными данными, только если будет модифицировать свой сегмент данных.
(Но не должна. И если будет использоваться пейджинг, то это вызовет ошибку.)
Взаимодействие задач
Задачи должны будут общаться только через функцию SendMessage. Она переключает страницы памяти и изменяет контекст задачи. То есть все созданные ресурсы будут принадлежать новой задаче.
Если одна задача передает другой задаче блок памяти (например строку), то эта строка должна быть создана функцией GlobalMemAlloc. Что бы строка гарантированно была создана в общей памяти. А принимающая задача должна изменить владельца блока на себя.
(Если будет использоваться пейджинг, то любое обращение к строке, до изменения владельца, вызовет исключение. В адресном пространстве будет дыра).
Еще будут файловые трубы (CreatePipe). Одна задача пишет в виртуальный файл, другая читает.
---------- Post added at 14:43 ---------- Previous post was at 14:37 ----------
Внешнем или встроенным в процессор MMU (менеджером памяти). Он обеспечивает что то похожее на защищенный режим 286/386 процессоров.
В БК0010 этого нет.
---------- Post added at 15:15 ---------- Previous post was at 14:43 ----------
Вообще разные бывают MMU, я видел такой:
Адресное пространство 64Кб делится на 8 блоков по 8 килобайт.
К каждому блоку можно подключить любую область физической памяти. Например 4 Мб с шагом 64 байта.
(Аналог сегментных регистров, только тут их 8 и шаг 64 байта.)
Плюс контроллируется, имеет ли право процесс обращаться к определенной области памяти. Попытался прочитать чужие данные, произошло исключение.
(Аналог защищенного режима)





Ответить с цитированием