Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Реентерабельность


Автор: newalex 21.11.2005, 21:25
Хотелось бы поподробнее узнать о нереентерабельность DOS, о методах борьбы с ней. Может ссылочки кто какие посоветует? Или так напишет?
Спасибо за помощь.

Автор: Akina 21.11.2005, 21:47
А что узнавать?
1) Большинство - причем подавляющее - функций ДОС нереентабельно. Впрочем, как и большинство функций БИОС.
2) Бороться с этим невозможно, ибо by design - система то однозадачная.

Автор: Chingachguk 22.11.2005, 10:19
Абстрактный вопрос. Что именно интересует ? Видимо, нужно что-то сделать что-то в резиденте, а дос вызывать не получается?

К примеру, есть логгер чего-то, который должен сбрасывать что-то на диск из резидента. Тогда нужно смотреть флаг занятости DOS - адресок в int 28h. Если флаг сброшен, то вперед к записи или чтению в файлы...

Цитата
Впрочем, как и большинство функций БИОС.


Ни разу не сталкивался с этим. BIOS работает на стеке прерванных / вызывающих программ.

Автор: Akina 22.11.2005, 10:30
Цитата(Chingachguk @ 22.11.2005, 11:19)
BIOS работает на стеке прерванных / вызывающих программ.

Из прерывания таймера вызывать дисковое прерывание можно? нельзя. нереентабельность.
Цитата(Chingachguk @ 22.11.2005, 11:19)
нужно смотреть флаг занятости DOS - адресок в int 28h. Если флаг сброшен, то вперед к записи или чтению в файлы...

разумнее перехватить 21h и при его вызове выполнить 2 вызова - программный и свой.

Автор: newalex 22.11.2005, 10:41
Chingachguk
Да не надо мне делать ничего, просто статейки нужны какие-нибудь, где про это написано подробней. В двух словах я тоже знаю что это такое, и про псевдореентерабельность 28-го прерывания. Именно абстрактно мне и нужно, в теории, так сказать...

Автор: Akina 22.11.2005, 11:06
Цитата(newalex @ 22.11.2005, 11:41)
статейки нужны какие-нибудь, где про это написано подробней

весьма сомнительно что они есть в Инете... за ненадобностью.

Автор: newalex 22.11.2005, 11:28
Да сам знаю, что нету. Искал уже... Поэтому тут вопрос и задал smile

Автор: Akina 22.11.2005, 12:37
Кстати, а как это по-аглицки будет - реентабельность? smile

Автор: newalex 22.11.2005, 17:31
Цитата
Кстати, а как это по-аглицки будет - реентабельность?

Re enter (повторно входимый)

Автор: Chingachguk 22.11.2005, 18:21
Цитата
Из прерывания таймера вызывать дисковое прерывание можно? нельзя. нереентабельность.


Это внутри int 8 нельзя вызвать int 13h ? Нельзя ли поподробнее - почему ?

Цитата
Да сам знаю, что нету. Искал уже... Поэтому тут вопрос и задал


Есть в Зубкове СВ про int 28h, с примером.

Цитата
весьма сомнительно что они есть в Инете... за ненадобностью.


За какой такой ненадобностью ? ;) Есть утилиты, которые в целях защиты не позволяют запускать себя иначе как в чистом досе. Как их логгировать ?

Автор: newalex 22.11.2005, 23:13
Ладно... спасибо и на том. Не подеритесь тут smile

Автор: vladimir000 30.5.2006, 09:40
Цитата

статейки нужны какие-нибудь, где про это написано подробней


Написание реентерабельных программ и программ с поддержкой нитей - 
http://publib16.boulder.ibm.com/pseries/ru_RU/aixprggd/genprogc/writing_reentrant_thread_safe_code.htm
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)