Your summary seems pretty good. 

So its

        384K base 
        64K window
        64K window
        (junk)

The segment switching for ramdisks is a non issue. We are either writing to
the code or data segment, so you an do large I/O's to the window boundary
using one segment for the target and one for the source.

That only gets vaguely hairy when you want to allow a smaller program to
be running across a 64K boundary. The mm handling for that kind of 'aligned
as we need within any 64K block' is fun stuff.

Another amusement here is that if you are prepared to accept 56K as the 
maximum size for data, you can pull some very interesting stunts with the
kernel stacks, allowing for many more processes - and getting it to scale
per bank.

Basically you put kernel DS at

        0x5000+8K
so it ends at
        0x5FFF+8K 

Now you put the kernel stacks at DS:E000 and you have 16 kernel stacks per
bank. As your banks grow your number of stacks and thus processes go- indeed
most of the task struct can go here too with a bit of care. This is how
V7 works on a PDP11 using the 8K segments they had. The so called
'u area' is all the crap a process needs that isnt needed when it isnt 
running.

You'd need to change the wait queue code a little to handle this but not 
much.

The memory protection is crude, but will catch accidental errors easily. You
can't catch deliberate attacks on such a box so why try.

Now how do the SSD's work 8)

Alan

Reply via email to