delorie.com/archives/browse.cgi   search  
Mail Archives: opendos/1997/03/21/09:06:58

Message-Id: <199703211359.OAA11331@math.amu.edu.pl>
Comments: Authenticated sender is <grendel AT hoth DOT amu DOT edu DOT pl>
From: "Mark Habersack" <grendel AT hoth DOT amu DOT edu DOT pl>
Organization: PPP (Pesticide Powered Pumpkins)
To: "Gints Linis" <gints AT acad DOT latnet DOT lv>
Date: Fri, 21 Mar 1997 14:53:37 +0100
MIME-Version: 1.0
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019