Станислав писал(а):
Я буду в виртуальном пространстве системы создавать для всех задач с окнами буфер для окна и при создании пространства для этой задачи ставить буфер этой задачи на то место где в системе стоит видео буфер экрана(у меня 8 мб - 20мб). Система должна видеть видео данные сразу всех окошек, чтобы их рисовать, а задача будет иметь постоянный адрес для своего окна. Т.е. виртуальное пространство задач будет хранить данные и код недоступные системе, чтобы с их помощью что то делать и результат показывать на экране, а сама задача будет видеть системный код и данные для его использования. Библиотеки можно будет грузить на пространство системы или задачи, по желанию.
Не понятно, что такое "система". Если речь идет об обычной разметке (прикладное пространство и пространство ядра - две составляющие ВАП задачи), то достаточно разместить видеобуфер в пространстве ядра, чтобы он автоматически отображался в ВАП новой задачи при ее создании. Сложнее разместить видеобуфер в прикладном пространстве, т.к. в фоновых задачах его каким-либо способом нужно отключать. А для оконного интерфейса это может быть вообще неприемлемо. Я имею возможность использовать прямой вывод в видеобуфер, находящийся в прикладном пространстве, т.к. у меня нет оконного интерфейса и переднеплановый процесс отвечает за весь вывод на физическую консоль, в то время как фоновые процессы, выполняя вывод, пишут либо во временный буфер в памяти, либо вообще в "пустоту".
Цитата:
Для объекта задача я создам поля:
1 Адрес каталога страниц реальный
2 Адрес каталога страниц виртуальный
3 Адрес объекта с кодом (сам код может находиться в системе или быть загружен в пространство задачи по любому адресу)
4 Адрес общего буфера в виртуальном пространстве системы (в пространстве задачи он будет на 8Мб)
5 Тип задачи(активность, присутствие: буфера, постоянного таймера, доступ: интернета, звука, дисков, периферии, .... .)
6 Функцию добавления памяти к задаче(добавление к задаче страниц памяти)
7 Функция освобождении памяти из задачи(освобождения страниц памяти)
8 Функция активации задачи (загрузка адреса каталога страниц)
9 Функция закрытия задачи (освобождении всех занимаемых ею страниц памяти)
Зачем нужен виртуальный адрес каталога? Лучше, чтобы в структурах процесса/потока было по минимуму или вообще не было таки специфических полей, как адрес видеобуфера (к тому же зачем оно вообще нужно, если адрес общий). Конечно с задачами могут быть связаны специфичные версии общесистемных функций, но не нужно все системные функции делать специфичными для задачи.