>:-) Я знал что вы мне это скажите. Всё это верно, но >с небольшой добавочкой... Механизм сообщений обслуживает ядро, а так как оно >является самостоятельным процессом и очень маленьким, то оно может просто сидеть >(если его жёстко привязать к конкретному процессору) на одном из процессоров >и не выгружаясь и не приостанавливаясь на блокировки, быстро выполнять свою >работу. Это возможно из-за того, что никто не лезет внутрь ядра >боковыми путями, а взаимодействуют через внешний интерфейс. Более того. Это только >то, что есть сейчас, а концепция микроядерных ОС позволяет иметь более >одного обработчика сообщений или даже более одного ядра в системе, хотя >я это ещё нигде не видел и не продумывал сам. ну шо тебе сказать :) Хороший ты человек, Белкин, и даже в микроядро веришь (как и я ;) Но вот то как ты описал работу обработчика очереди сообщений - так не бывает :) Он не может быть "маленьким" :) Он будет таким как нужно, и должен уметь хранить очень много сообщений в очереди (на всякий случай каких-то затыков в других модулях) Его _нельзя_ привязывать к одному/двум/не_всем процессорам - будет потеря скорости реакции :) Ну вот если есть простаивающий проц и нужно какому-то модулю поставить сообщение в очередь и никто больше в данный момент подобного делать не хочет (не лочит очередь) - ну неужели ты бы этого не сделал на свободном проце? :) Лезть "внутрь ядра" конечно же никто не будет и трогать эту очередь "своими грязными модульными руками" - ессьно все будет через интерфейс системных вызовов к этому самому обработчику очереди. Но все равно, хоть ты трижды герой компартии - любая постановка в очередь - это лок этой очереди на небольшое время. Ну и отсюда - все шо я написал ранее. Ну а про "много ядер в системе" - это уже виртуализация. Это тоже может быть, но я тоже пока о таком не слышал :) (тут бы нормальное микроядро с адресной защитой увидеть в жизни, не то что виртуалить его)
|