Linux architecture
This is a copy from Linux Kernel. Please add more if you can.
The Linux kernel includes true multitasking, virtual memory, shared libraries, demand loading, shared copy-on-write executables, proper memory management, and TCP/IP networking.
Today Linux is a module-loading monolithic kernel. Device drivers and kernel extensions typically run in ring 0, with full access to the hardware, although some run in user space. Unlike standard monolithic kernels, device drivers are easily configured as modules, and loaded or unloaded while running the system. Also unlike standard monolithic kernels, device drivers can be pre-empted under certain conditions. This latter feature was added to handle hardware interrupts correctly, and to improve support for symmetric multiprocessing. Preemption also improves latency, increasing responsiveness and making Linux more suitable for real-time applications.
The fact that Linux is not a microkernel was the topic of a famous flame war between Linus Torvalds and Andy Tanenbaum on comp.os.minix in 1992. [1] [2]
The complete source code of various versions of the Linux kernel can be browsed at http://lxr.linux.no .
The complete source code of the latest versions of the Linux kernel can be downloaded from http://www.kernel.org .