Message-Id: <199703211359.OAA11331@math.amu.edu.pl> Comments: Authenticated sender is From: "Mark Habersack" Organization: PPP (Pesticide Powered Pumpkins) To: "Gints Linis" Date: Fri, 21 Mar 1997 14:53:37 +0100 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: GDT size and limit of number of threads Reply-to: grendel AT hoth DOT amu DOT edu DOT pl CC: opendos-developer AT mail DOT tacoma DOT net In-reply-to: <199703211124.NAA01960@laima.acad.latnet.lv> Once upon a time (on 21 Mar 97 at 13:27) Gints Linis said: > Could anyone tell the following: > > - Is the 512 descriptors in GDT a principal limitation of this OS, or can it > be modified? No. both LDT and GDT have a limit of 8192 descriptors so it seems that the one to blame here is the server software yo're using > - What is the absolute maximal number of threads that can exist at a time? No limit except for the memory and the (if on DOS) server's limitation. On OpenDOS you depend on the DPMI software you're using. I don't know about OpenDOS's EMM386, but DJGPP's CWSDPMI takes full advantage of the GDT and LDT capacity. Are you using OD's TaskSwitcher and/or MultiTasker software? If so then check out Ralph Brown's Interrupt List - it has detailed information about this particular piece of software. Also soon a detailed documentation in Envoy format should be available from http://www.deltasoft.co.uk/dos/ > - If the GDT size can be changed, then can it be done by means of e.g. a > configuration option, or it is possible exclusively through recompiling the > OS? Usually it's being done when entering the protected mode - in case of OpenDOS when any DPMI client is first started. GDT and LDT size depends on the sever's configuration - again, CWSDPMI has sources and may be configured at will. > - Any ideas as to what else could be done to increase the maximal number of > threads? If I were in your shoes I wouldn't allocate a separate GDT entry for each thread - it's very inefficient. Instead use an internal dispatch table for this purpose or LDT entries if you really want to allocate each thread as separate task (the only reason I see for allocating LDT or GDT descriptors for threads) which is very slow in operation. If you want to secure the dispatch table and/or dispatch code, allocate separate descriptors for them *only*. Dispatch routine might be installed in IDT as a task gate - all the data it uses could be in separate memory pool pointed to by a descriptor allocated in GDT (for global thread management) or LDT (for local/per-application thread management) **************************************************************** You ask for my love on a strength of a kiss, But can't you just play for experience? I'm a poet, I'm a minstral, I don't need your chains Romance lies in ruin, let debauch you bewail, let it rain... --- Visit http://ananke.amu.edu.pl/~grendel