Mail Archives: djgpp/1996/07/21/12:51:06
Reply to message 7820364 from BOND AT EE DOT UBC DOT C on 07/16/96 8:03PM
>I understand that DJGPP programs run with the help of a DOS extender to
>enable execution in a 32 bit protected address space under DOS. I'm
>curious what overhead DJGPP's DOS extender imposes on programs in
>general (I've been able to find no documentation on-line pertaining to
>the functionality of DOS extenders).
You are only partially correct: DJGPP does not use a DOS extender;
it uses a DPMI host. The FAQ describes this in some detail; but
basically, DJGPP programs use whatever DPMI is available when
they run. If you are running under QEMM, 386Max, OS/2, Linux Dosemu,
Win3.1, or Win95, they will detect and use those DPMI services;
otherwise they will load and run the CWSDPMI program which comes
with the DJGPP distribution. It loads itself as a DPMI host, but is not
exactly an "extender" by the standards of DOS4GW or DJGPP v1.*'s
go32.
>In particular, I'd like to know what overhead is imposed by DJGPP's DOS
>extender for interrupt handling (in GNAT Ada - although I can't see why
>it should be any different in C).
Well, since DJGPP runs in full 32-bit protected mode, the vast majority
of interrupts are either handled by the DPMI host, or reflected to
protected mode. This is the same no matter what DPMI you use;
protected-mode interrupt handling is practically the same for every
host. As I understand it, there is always some overhead in interrupt
reflection, but it is possible to install a real-mode handler as well as
a protected-mode one. The FAQ describes this in great detail,
perhaps because of the large numbers of people who have asked
about this very subject. :)
John
- Raw text -