Path: news.funet.fi!fuug!mcsun!hp4nl!donau!dutecai!wolff
From: wolff@dutecai.et.tudelft.nl (Rogier Wolff)
Newsgroups: comp.os.minix
Subject: Garbage collecting MM.
Message-ID: <1991Nov17.154639.25752@donau.et.tudelft.nl>
Date: 17 Nov 91 15:46:39 GMT
Sender: news@donau.et.tudelft.nl (UseNet News System)
Reply-To: wolff@dutecai.et.tudelft.nl (Rogier Wolff)
Organization: Delft University of Technology, Dept. of Electrical Engineering
Lines: 149
Originator: wolff@dutecai.et.tudelft.nl
Nntp-Posting-Host: dutecai.et.tudelft.nl


I modified MM to do garbage collecting for 8086 machines.
 
It will do a garbage collect before reporting an "out of memory"
problem to the userprogram. This will effectively give you an 
extra 50-100K of usable memory.

Some people warned me that I should lock the process while 
fiddeling with the process. As of now I haven't had the time 
to implement that, but I suspect that the problem is not as
bad as it seems.

The problem is as follows:
1) a problem asks for tty input.
2) the tty driver gets the PHYSICAL address of the process.
3) a garbage collect happens, and the process is moved.
4) The tty driver can satisfy the read, and writes to the OLD
   physical address. This will instantly crash the system.

If this was the case I'd expect my system to crash every 
hour or so, but this is not the case. I think that there are
several causes: TTY writes (would give junk on the screen) 
always complete before  mm gets another chance to run.
TTY reads only get the physical address at the moment that
it has data ready. At that moment TTY is a higher process
than MM so MM will not get a chance of moving the process 
in the meantime.

Anyway, it is not absolutely guaranteed that this setup won't
cause any problems, but I am quite a happy user, and would like
to share it with you. (Let's call this a beta test: use it 
at your own risk.)

Oh. One more thing, The F1- process dump DOES get the physical
address at program startup-time, and does not change it. This
means that the program name field of a process that gets moved
becomes invalid. In 99% of the cases you will see a blank fied,
in the other cases one or two junk characters.

If someone wants to fix this, feel free to do so. (Estimated
workload: 2 hours, if you are an EXPERIENCED MINIX KERNEL
HACKER, and have a sufficiently fast machine)

begin 644 mm.cdiffs.Z
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
+'6Y> 2?BT[5^U!6)
 
end
-- 
EMail:  wolff@duteca.et.tudelft.nl   ** Tel  +31-15-783644 or +31-15-142371
