Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!rutgers!pyrnj!pyrdc!uunet!munnari!otc!metro!ipso!runx!brucee From: brucee@runx.ips.oz (Bruce Evans) Newsgroups: comp.os.minix Subject: Re: 1.3 checksums and bugs Message-ID: <1792@runx.ips.oz> Date: 16 Oct 88 02:33:55 GMT References: <658@faui44.informatik.uni-erlangen.de> Reply-To: brucee@runx.OZ (Bruce Evans) Organization: RUNX Un*x Timeshare. Sydney, Australia. Lines: 48 Robert Regn writes: >At last: I'm very interested to have an improved fs process, which >doesn't block the system when waiting for floppy or disk tasks. >If I type : >cp image /dev/fd0 & >ls -l , >I don't believe minix is a multitasking system, because the ls runs after >the cp has finished! Let me emphasize this problem again. Minix really is multi-tasking, but fs kills it. What happens is that cp is very "efficient", and makes a few large requests, while ls makes many smaller ones. The processes probably take it in turns to get into fs, so cp finishes before ls. If fs were cleverer, it would often be able to handle ls's requests from the cache while cp was held up waiting for physical i/o. Of course when ls also needs physical i/o, some delay is necessary. Apart from the apparently major rewrite of fs needed to solve this, a hog program like cp may be difficult to handle because it will gobble up Minix's tiny cache. My solution would be to junk the RAM disk and use the memory for a cache instead. The main obstacle is that a large cache couldn't all be in fs's 64K data space. The way cp and ls take turns reminds me of another scheduling problem. Suppose 2 processes are running, (H) a CPU Hog which makes no system calls (I) and Inefficient I/O bound process which does nothing much other than making system calls, e.g. single-char output. The processes will take turns, resulting in (I) running at the glacial speed of 1 I/O operation per quantum (1/10 sec or so). This is relatively easy to fix. >[shell program to check file system against crc's posted] It requires a "then" and a non-comment statement in the "if" statement along with the "#customize for your own structure". It still fails on Minix when the sh runs out of string space. The following one-liner demonstrates the problem: while :; set 1; done Bruce Evans Internet: brucee@runx.ips.oz.au UUCP: uunet!runx.ips.oz.au!brucee