maximYCH wrote:
А я расскажу, как сделать. Точнее об этом когда-то говорил diamond, я просто повторюсь.
С какой стати ЯДРО проверяет необходимость обработать в каждой подсистеме (я про osloop), а не имеет буфер, в который любой драйвер может отправить запрос на обработку?
Osloop-то здесь при чем ?
Для справки: ядро сейчас отрабатывает отдельные GUI-запросы индивидуально, через системный сервис int40h. (функции 1,4,7,13-15,35-39,47,48,50,61 и 65)
Все понимают, что это неэффективная трата ресурсов. Но оно работает, причем быстрее чем Винда с аппаратным ускорителем.
Может ли оно работать еще быстрее? - да, может.
Буфер GUI-запросов был бы очень полезен. Только лучше говорить не о буфере, а о метафайле, который у каждого окна будет свой. Изменения, вносимые программой в этот метафайл, будут отражаться в изменении оконного интерфейса в следующий квант времени.
Тот же буфер, только гибче.
maximYCH wrote:
Ведь по факту, если в остальных подсистемах ничего не произошло, кроме графической подсистемы, то графика ждет, пока ядро проверит наличие действий на обработку в каждой подсистеме, вместо того, чтобы сразу сообщения от гр. подсистемы было обработано?
Вот в этом словоизвержении я нифига не понял: ты это про что и вместо чего?
maximYCH wrote:
--> нужно выносить подсистемы в драйвера
А можно и не выносить.
Смотря какие подсистемы, и зачем.
maximYCH wrote:
--> нужно переписывать драйверную модель и в osloop проверять только наличие новых сообщений в буфере на обработку событий.
При чем здесь драйверная модель вообще
Сейчас osloop графикой вообще не занимается (мышиная возня не в счет).
Ты его хочешь подключить к обработке очередей GUI-запросов.
И это будет "вынос GUI из ядра" ?!.