24308 CSC 080A - 0 - Operating Systems
Spring 2005 |
This web page is http://www.bernstein-plus-sons.com/.dowling/CSC3080S05/CSC3080_Linux_Windows.html
Copyright © 2002, 2005 Herbert
J. Bernstein and other parties. All rights reserved.
Linux is a highly popular variant of the Unix operating system. Unix has a rich and complex history, beginning with an attempt at a single user version of Multics at Bell Laboratories in 1969. For a view on the early history of Unix, see Tom Van Vleck, "Multics: Unix and Multics", www.multicians.org/unix.html, and Peter H. Salus, "A Quarter Century of UNIX", Reading, MA: Addison-Wesley, 1994, which is the source for the site virtual.park.uga.edu/hc/unixhistory.html. Unix was an important operating system, but it became the core of a movement of almost religious intensity with the establishment of the GNU project by Richard Stallman in 1983, which used the features of Unix as a template for cooperative open source development. See www.gnu.org/gnu/gnu-history.html. Open source variants of almost all the components of Unix were created and widely used by the early 1990's. The only major missing component was a fully functional, widely accepted kernel. That piece was provided by Linux Torvalds in 1992 (see http://www.li.org/linuxhistory.php), and the entire operating system based on descendents of that kernel, using the full suite of GNU software is called Linux. Some people prefer to call it LiGNUx. Linux has been ported to a wide range of hardware platforms.
Windows is the common name for a family of operating systems sold by Microsoft. Windows started as a GUI-addon to the command-line oriented MS DOS operating system. It has become a reasonably complete statnd-alone operating system. For a history of Windows, see members.fortunecity.com/pcmuseum/windows.htm. Windows is a large, closed-source proprietary operating system. Some variants of Windows have been ported to non-Intel platforms, but Windows is primarily an operating system for hardware based on the Intel 80x86 architecture, typically Intel, Cyrix or AMD Pentium clones.
In terms of external functionality, there are many comparisons of Windows variants versus unix variants. See for example Milo's Operating System Technical Comparison, http://www.osdata.com/. Let us compare major design characteristics:
Characteristic | Linux | Windows 2000 |
---|---|---|
design paradigm | highly modular, open source | non-modular, closed source |
design goals | interactive system for multiple users, major server capabilities | interactive system for a single user, some server capabilities |
general structure | users shells, utilities, ... library kernel hardware | users programs API (Win32, Posix or OS/2) system services kernel hardware abstraction layer hardware |
command line interface | multiple shells (bash, tcsh, ksh, ...) | MS-DOS (CPM-like) command interface |
process management | fork, parent-child relationship exec to replace current program with a new one process state memory resident | CreateProcess (like exec), no parent-child relationship |
threads | POSIX threads | threads(like a process) and fibers(like a thread) |
interprocess communication | semaphore, message queue, pipe, signal, rpc, socket, shared memory | pipe, message-mode pipe, event, rpc, socket, shared memory |
scheduling | multi-level, priority- and event- driven round-robin scheduler | limited levels, event-driven, round-robin scheduler |
file systems | multiple file systems handled via virtual filesystem switch (vfs) interface, e.g. ext2, ext3, fat, hfs, xfs, iso9660, ..., journaling available. Support for remote file systems with NFS. | FAT file systems inherited from MS-DOS, (FAT12, FAT16, FAT32, VFAT) extensions added for long file names, new design in NTFS, includes on-the-fly compression. |
security | security features in file system, process management, major network applications (tcpwrapper, tripwire), access control, some vulnerabilities by exploitation of buffer overflows. | security features in NTFS, access control, security fails frequently in practice due to VBA, active-X, buggy code. |