Linux Anecdotes
Doug Muth writes: "Earlier today, I came across an old document on
Lars Wirzenius's website titled
Linux Anecdotes, which tells about the side of Linux that we never knew. An excerpt: 'At one point, Linus had implemented device files in /dev, and wanted to dial up the university computer and debug his terminal emulation code again. So he starts his terminal emulator program and tells it to use /dev/hda. That should have been /dev/ttyS1. Oops. Now his master boot record started with "ATDT" and the university modem pool phone number. I think he implemented permission checking the following day. '"
One other reason why Linus and others might have been staying away from BSD was the whole legal morass it was involved in at the time. Who would want to spend time on a project which might well be declared contraband if AT&T's lawsuit against Berkeley succeeded?
It turns out that I didn't actually lose that much, but I had to write my own version of tar to suck off the parts of the disk that I could still reach (I had a terminal open in an affected (the most important!) subdirectory, I just couldn't doi any thing that tried to access the mount point (like 'pwd').
I had a hot date the next evening that didn't turn out that hot, when I pretty much fell flat on my face and didn't get up.
--
Free Software: Like love, it grows best when given away.
For a more detailed answer, get Andy Tanenbaums OS Design & Implentation, but for now, i'll try & explain.
An OS is just a peice of software, just like any other peice of software. To the CPU, it's the same opcodes (With a special exception, but we'll skip that for now) The only reason that an OS is thought of as "special" is because it is the lowest level of software that you run on your computer. But it doesn't perform magic.
Now, on the Intel x86, task switching (Which is what Linus's terminal emulator was doing) is fairly simple. You set up a few CPU tables (The Global Descriptor Table & Interupt Descriptor Table), and point a software interupt to your interupt handler. That is, and interupt occures every n nanoseconds, and your code is automatically jumped to by the CPU. Now, you can do anything in that peice of code, but an Operating System does something called scheduling, were it saves the status of the currently running "process", and loads the status of a previously saved process. (All this involves is pushing the CPU flags onto the stack, changing a few CPU registers, and then poping data off the stack) Then your interupt code exits and the CPU goes back to running the code. Except you've changed the CPU registers, so it actually goes back to running the code from the process you've just swaped in.
This is all there is too it, in theory. Your two (Or however many) processes can do anything a program normally would.
Just having the scheduler though, does not make your code into a kernel. You need things like memory allocators, device drivers, process loaders, a filesystem, and a callable API, before your code can be considered an Operating System.
Syllable : It's an Operating System
The evaluation of an action as 'practical' . . . depends on what it is that one wishes to practice.
http://www.softpanorama.org/People/Torvalds/linus_ finland_period.shtml is a fairly detailed story about the beginnings of Linux and the problems that folks were having getting a PC version of BSD out.
When I hear the word 'innovation', I reach for my pistol.
The "Dry Finnish Humor" patch is currently being reviewed by Alan Cox and should be available Real Soon Now. Linus sees no need for it, as he already gets the jokes.
He who joyfully marches in rank and file has already earned my contempt. - "Big Al" Einstein