информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ага. Функции это функции синхронизации. 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) то планировщик на вполне законных основаниях забирает у нее время, когда она отработает свой квант. Заснуть в вызванной функции программа может по многим причинам. Тут и длительные вычисления и ожидание на каком либо событии ввода/вывода и т.д.
<operating systems> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach