Pathoswithin wrote:
Quote:
В чём проблема? Формат совершенно тривиальный, никто не мешает скопировать себе char.mt или char2.mt и вообще не связываться с ядром.
А, ну правильно, зачем нам вообще ядро? Программа вполне в состоянии всё делать самостоятельно, рисовать окно и кнопки, отслеживать клавиатуру и мышь. Ну разве что спрашивать, кому принадлежит точка экрана, и то могут друг с другом общаться: "Не твоя точка, не? И не твоя? Ну я нарисую, вы не против?". А ядро не трогать, оно по статусу имеет право ничего не делать.
Программа не может отслеживать клавиатуру и мышь, потому что программа не одна в системе, а клавиатура и мышь - общие устройства. Более того, доступ к железу - привилегированная операция, и десктопная система - а я пишу десктопную систему - не может давать прямой доступ к железу кому попало, здесь ядро нужно.
Разделение экрана прямо в таком виде нежизнеспособно - программа сама не знает, какие части её окна видимы, другая программа может просто висеть, переключение контекста между программами ещё медленнее, чем вызов ядра, - но отрисовка в user-mode без участия ядра в принципе возможна. При условии, что а) информация о карте окон в том или ином виде хранится где-то в расшаренной памяти, б) отрисовкой занимается общая библиотека, умеющая читать информацию из пункта а и не писать куда не просят, в) мы доверяем всем программам, что они не будут рисовать текст "ваша система заблокирована, отправьте смс на номер 1234" поверх всех остальных окон в обход библиотеки из пункта б - пункт в был бы важнее, если бы фреймбуфер не был и так открыт на запись всему миру - и, главное, г) кто-то перепишет всю-всю-всю графическую подсистему и все-все-все графические программы на такую схему.