· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› "Непрерывное" выполнение кода

Посл.отвђт Сообщенiе


Дата: Июл 28, 2004 23:22:10 · Поправил: PavPS

Всем привет!

Вопрос такой: Как сделать так, чтобы определенный кусок кода KernelMode выполнялся пез прерывов – т.е.
@metka1:
...
...
...
@metka2:
этот промежуток планировщик не захочет прервать.

Воттт… надеюсь на ответ…

Заранее благодарен --==PPS==--


Дата: Июл 29, 2004 02:52:57

Повысь приоритет до реалтайм. Такие потоки в режиме ядра не вытесняются. Но это грубо.


Дата: Июл 29, 2004 03:00:37

Большое спасибо! Попробую.

А вот как на счёт повышения IRQL до самого верха? Мож тоже... или я чё путаю? Правда, тогда, как подозреваю все обращения должны быть к nonepaged_pool. Это выход?


Дата: Июл 29, 2004 19:41:48 · Поправил: Four-F

Планировщик не сможет тебя прервать даже если ты повысишься всего до distatсh.


Дата: Июл 29, 2004 20:05:19

Во-во... Класс! Спасибо.
А по поводу real-time стал заблуждаться - а вдруг будут 2 такие нити одновременно - то всё равно ведь прервет. Одним словом, скорее всего, именно IRQ и нужен.


Дата: Июл 29, 2004 20:43:03

[ PavPS: а вдруг будут 2 такие нити одновременно - то всё равно ведь прервет. ]

Ну да, конечно.


Дата: Июл 29, 2004 23:22:02

Что-то я стал сомневаться, а вытесняются ли такие потоки вообще. Не помню :(


Дата: Июл 29, 2004 23:54:10

Если не вытесняются, то не разрешено бы было создавать >1 потока. Чесно - пока руки попрбывать недошли. (хорошо людям - "непомню", а вот я просто "незнаю" :((( )
А вообще тогда по ходу решения задачи попробую эксперементально это исследовать. Сюда выложу.


Дата: Июл 30, 2004 06:36:12

PavPS
вообще - то "по руски" поднять irql до уровня DPC/Dispatch, а код предварить командами cli/sti, и никто тебе не помешает


Дата: Июл 30, 2004 06:39:59

PavPS

и ещё тебе совет от глупых вопросов, возьми исходники винды и внимательно рассмотри механизм свопинга, и то, как он свопиТ, думаю, быстро всё поймёшь.


Дата: Июл 30, 2004 10:05:42

2 CARDINAL
Угу. Гляну. Спасибо.
На засыпку(мож тоже глупый): я в куске кода ставлю CLI а потом забываю про STI - система чё, висит (выполняет только мою нить)? А?


Дата: Июл 30, 2004 11:25:04

PavPS
CLI и STI - привилегированные команды, afaik winnt держит виртуальный eflags для каждого процесса.


Дата: Июл 30, 2004 12:59:50

2 q_q Спасибо
2 CARDINAL Так вот не зря и спрашивал.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.059