Date: Fri, 9 Aug 1996 14:13:10 +0200 (DFT) From: "Garrido Freire, Fco. Javier ((R)JA.GAR. SOFT)" Reply-To: Garrido Freire To: Orlando Andico cc: djgpp AT delorie DOT com Subject: Was: Re: Multitasking in DOS In-Reply-To: Message-ID: Organization: Infoalum Mail Gateway MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1764323956-1258419266-839589228=:11912" Content-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info. ---1764323956-1258419266-839589228=:11912 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: On Thu, 27 Jun 1996, Orlando Andico wrote: Sorry for not answering before. I've been out of net. > On Wed, 26 Jun 1996, Garrido Freire, Fco. Javier ((R)JA.GAR. SOFT) wrote: > > > Of course, this's not enough, I know, to implement multitasking. > > One of the most important things is to manage Input/Output devices. > > There should be a lot to say just about this: keyboard, screen, disk, > > memory, ... And functions: pipe, exec, dup, dup2, kill, getpid, > > getpgrp, popen, exit, chdir, ... and surely fork and wait, :) > > Multitasking under DOG ain't hard. And it ain't authentic. It's possible > to write multithreaded programs using setjmp() and longjmp() -- and people > have done that. I also tried setjmp()/longjmp() method with TURBO C, but it didn't work. It probably was my fault. > Your biggest problem is: the *&&%$%%^ non-reentrance of > DOG itself (although the BIOS is more robust..) which precludes a > multithreaded filesystem! what's "multitasking" without it? (although yes, > I put my foot in my mouth, Minix doesn't have a multithreaded filesystem > last I looked). > The *&&%$%%^ non-reentrance of DOS shouldn't be a problem so big. Synchronizing the access to the filesystem is a way. All the scheduler has to do is wait until INT 21h System Call had finished. Then save the answer and give CPU to another process (Rendez-vous method?). The cons is that this could be slow. Not only INT 21h is non-reentrant, INT 10h or whatever syscall are. BWT, anybody saw my demo. I got 3 process (up to 10) running in DOS 6.2 concurrently. No trick, no fake just synchronizing w/ some ordinary undocumented DOS calls, :-) > > Another good source of information is "Operating Sistems: Design > > and Implementation" by Andrew S. Tanenbaum. He gets a much better, > > authentic 'preentive' multitasking at a *8088*!! > > That would be Minix.. Tanenbaum got into an argument with Linus Torvalds > over that.. but why stop there? I don't know how far along Linux ELKS is > (this is the version that will run on an 8088 and Z80) but if you're that, > incredibly insane to want multitasking on an XT.. > That's right. Minix I meant. Tanenbaum got multitasking on an 8088. Then here you are. Obiously, on an 386's PM is easier. But, there is where DJGPP starts to play. Just join the pieces. A lot of that work is already done! A debugger can run a child. Why can't a debugger run several children? BWT, Minix used (slow) Rendez-vous method for didactical purposes. > If you desperately want multitasking under something-like-DOG, check out > the RSXWDK and RSXNT packages. I got these, but they don't seem to work > with DJGPP v2 (written for 1.x and the OS/2 EMX-GCC). I've taken a look at > the source, and DJGPP 1.x with the RSXNT libraries *does* support fork(). > You'd have to be running under Windog though. > I'm still checking out aetsk102, jkthpack and looking for ctask22. I'll see it, too. Thanks for your comments. PS: I enclose my demo attached ------------------------------------------------------------------- F. Javier Garrido F. (R)JA.GAR. SOFT Dpto. de Computacion e IA MINIX User. (USENET comp.os.minix & SCS) Facultad de Informatica Email: Francisco-Javier DOT Garrido AT cs DOT us DOT es y Estadistica de Sevilla URL: http://www.cs.us.es/~garridof (SPAIN) "The light that burns twice as bright, burns half as long ... ... and you have burned so very, very brightly, Roy." TYRREL from Blade Runner ---1764323956-1258419266-839589228=:11912 Content-Type: APPLICATION/ZIP; NAME="multi.zip" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: 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 ---1764323956-1258419266-839589228=:11912--