Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ага. Функции это функции синхронизации. KeWaitForXxxx и... 10.01.05 11:29 Число просмотров: 1910
Автор: amirul <Serge> Статус: The Elderman
|
> Уверенным можно быть только в том случае, если не вызывать > ни одной функции ядра. В некоторых "ядреных" функциях есть > лазейки, которые позволяют системе перехватить управление и > передать его другому потоку. Ага. Функции это функции синхронизации. KeWaitForXxxx и целая туча функций, ставящих объекты в signalled state. Если один поток ожидает на event-е, а другой этот event выставляет, то возврат из KeSetEvent-а произойдет уже после того, как будет разбужен и отработает свой квант ожидавший поток. Именно из-за такого поведения функций синхронизации практически нет задержек при обработке прерываний и прочего I/O. А вообще самом KeSetEvent есть еще параметр Wait, который позволяет избежать переключения контекстов. Есть еще IRQL, критические секции и прочая. В общем при ПРАВИЛЬНОМ использовании виндовой синхронизации она будет вести себя В ТОЧНОСТИ так, как от нее требуется. Ядро написано очень хорошо, любые рассинхронизации - от драйверов.
> Фигу с дрыгой! "Объезд" функции по F10 позволяет > планировщику перехватить управление и передать его другому > процессу. А при чем тут планировщик? Даю алгоритм работы F10:
1. Поставить точку прерывания на адрес, непосредственно после текущей инструкции.
2. Запустить программу на ИСПОЛНЕНИЕ
То есть на втором шаге эта функция исполняется в ШТАТНОМ режиме. Никакой софтайс к ней отношения не имеет. Если по какой-то причине эта функция не возвращает управление на команду, следующую за ее вызовом (это будет int 3) то планировщик на вполне законных основаниях забирает у нее время, когда она отработает свой квант. Заснуть в вызванной функции программа может по многим причинам. Тут и длительные вычисления и ожидание на каком либо событии ввода/вывода и т.д.
|
|
|