Tech Support > Computers & Technology > Programming > Dual Processor, Dual Operating System, memory
Dual Processor, Dual Operating System, memory
Posted by AK on July 1st, 2003


I have been wondering if this is possible and/or if anyone has tried
this.

Using a dual processor mother board with DOS on one and widows on the
other. Niether OS has to know the other exist. All they have to do
is share a block of memory. What I am tring to do is use a fast DOS
program to feed data to a nice looking GUI in Windows.

Thanks
A

Posted by Niki Estner on July 1st, 2003


I don't think this would work.
Just two reasons:
- a PC is more than just a processor and memory. there's the BIOS,
PCI-adapters, and, not the least: floppy/hard disks... these cannot be
shared without the OSes knowing about it. And they aren't duplicated in a
dual-processor PC
- DOS/Windows memory allocation schemes are REALLY REALLY different. It's
not trivial to find out the physical location of memory allocated in
Windows. Also, Windows may move the physical memory position without notice
(e.g. swapping). You'd probably need a device driver to get around this.
- How should the windows app tell the DOS app where the shared memory is, if
they don't have a commonications channel yet?
- How do you tell windows that it should leave the 640k 'DOS' memory alone?
I'm pretty confident it'll use those at least while booting.
- I don't know if this is true for all multiprocessor systems, but mine
immediatly restarts when both processors access the same memory are at the
same point of time (write access). You wouldn't have any synchronization
methods.

But the real question is not if this could be done, but why?
A DOS program that does nothing but dumping output into some memory area
isn't very hard to port. Make it a 32-bit windows executable (e.g. a console
application). Schedule it for Processor II and give it real-time priority.
Use any windows communication methods you like (memory-mapped files it you
need a memory block that's accessible from both sides, or named pipes,
synchronization objects).
After that, look if this is really slower than running your program under
plain DOS.
(If there is a significant difference, I would appreciate if you post your
results)

Greetings

Niki

"AK" <kettner9000@yahoo.com> schrieb im Newsbeitrag
news:b8a52d6b.0307011122.7a9ed9e1@posting.google.c om...


Posted by Robert Wessel on July 2nd, 2003


kettner9000@yahoo.com (AK) wrote in message news:<b8a52d6b.0307011122.7a9ed9e1@posting.google. com>...

In addition to what Niki said, why not just run the DOS program under
Windows? Sure it'll be a bit slower (and if you're doing physical I/O
there'll be an issue), but on a dual processor box Windows (NT/2K/XP
Pro) will happily run the DOS app on one processor and other stuff on
the other. Especially if you set the appropriate NTVDM's priority up
a bit.

If you've got really critical timing requirements on the DOS app, I'd
be a bit leery of this approach.


Similar Posts