Article View: comp.os.linux.misc
Article #1210Re: Linux history - microkernel, monolithic
From: Rex Ballard
Date: Sat, 05 Aug 2006 18:24
Date: Sat, 05 Aug 2006 18:24
64 lines
4618 bytes
4618 bytes
Vladimirr Saigon wrote: > Hi, > > Does anybody know why Linus choose to make linux monolithic instead of > microkernel? Microkernels are very difficult to debug. It's hard enough to develope, test, and debug multithreaded applications, but imagine doing it at machine code level with no tools for debugging. Creating Mach, for instance, required In Circuit Emulators, logic analysers, and cache had to be disabled during debugging. Creating a microkernel for a $1000 PC could take $50,000 worth of tools and hardware. Linus didn't have much money (he was a college student), he wanted to play with memory management, including caching. He wanted to create a really simple kernel (version 0.10 was only 10,000 lines. He wanted to be UNIX compatible (not a true UNIX or MACH kernel), and he wanted to isolate library functions from kernel functions (using memory maps and mapping memory between processes). The design was elegantly simple. > I have been told, that there was some dispute about that > decision. Linus and Tannenbaum (author of Minix), had a rather heated and lengthy debate over the nature of the design of Linux. Although Tannenbaum made a very good case for the Microkernel vs the "monolithic" kernel, the logistics of microkernel development prevented the successful implementation of a general purpose open source kernel for PCs. Eventually, Linux did evolve beyond the "monolithic" design. Device drivers were written as "modules", which eliminated the need to compile drivers into the kernel (one of Tannenbaums best arguments for microkernels). These modules were called by the kernel, much like shared libraries. By 1994, the modules were designed to "probe" hardware to help identify which modules needed to be loaded. A configuration file made it possible to select which modules should be "probed" (initially almost everything). This almost completely eliminated the need to compile custom kernels for devices that used traditional "probe" protocols. The elegance of the Linux kernel was that provided a framework for coupling the libraries to the drivers, managed memory and time, and didn't try to do much more than that. As a result, much of the Linux "personality" resides in the libraries, which makes it easier to manage and maintain compatibility with other APIs such as BSD and X/Open Unix specifications. This makes it possible for Linux to run GNU, BSD, and even System V applications, even though it's internal design is almost nothing like Unix or Mach/BSD. IBM did contribute a scheduler, but contrary to the suspicions of SCO, it's roots went back to System 360 and MVS/CICS. IBM had provided similar code to SCO, but it was code that IBM owned, and had been using for years in it's mainframes. Rather than using pure semaphores to lock shared resources for "the duration", memory and resources were queued, which meant that the head of the queue only needed to be locked when items were being added to a queue, and the tail of the queue only needed to be locked when items were being removed from the queue. If the head and tail were the same, then the queue was empty. Mainframes often use dozens of these queues to manage resource pools and memory pools. > Best regards. Good Question.
Technical Details
Message-ID:
<1154802263.907144.62850@n13g2000cwa.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!n13g2000cwa.googlegroups.com!not-for-mailReferences:
<1154798313.919094.48780@n13g2000cwa.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: 1103af,8e4c4f981a046b4a X-Google-Thread: 10ea85,cc2780f345862e13 X-Google-Attributes: gid1103af,gid10ea85,public X-Google-Language: ENGLISH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!n13g2000cwa.googlegroups.com!not-for-mail From: "Rex Ballard" <rex.ballard@gmail.com> Newsgroups: comp.os.linux.misc,dk.admin Subject: Re: Linux history - microkernel, monolithic Date: 5 Aug 2006 11:24:23 -0700 Organization: http://groups.google.com Lines: 65 Message-ID: <1154802263.907144.62850@n13g2000cwa.googlegroups.com> References: <1154798313.919094.48780@n13g2000cwa.googlegroups.com> NNTP-Posting-Host: 67.80.98.116 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Trace: posting.google.com 1154802269 18143 127.0.0.1 (5 Aug 2006 18:24:29 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sat, 5 Aug 2006 18:24:29 +0000 (UTC) In-Reply-To: <1154798313.919094.48780@n13g2000cwa.googlegroups.com> User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 (CK-IBM) Firefox/1.5.0.6,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: n13g2000cwa.googlegroups.com; posting-host=67.80.98.116; posting-account=W7I-5gwAAACdjXtgBZS0v1SA93ztSMgH