The UNIX Time-sharing system Linux - History The UNIX Time-sharing system Developed in 1969 by Ken Thompson and Dennis Ritchie at AT&T Bell Labs. Initially written in assembly but was shortly rewritten in C. Designed to be portable, multi-tasking, and multi-user
Linux - History The C Programming Language Developed for UNIX, has since spread to other platforms. Designed as a system implementation language, but become widely used in applications. Many different languages use similar language syntax
Linux - History The GNU Project MINIX Founded by Richard Stallman Goal: Develop a free, open-source UNIX compatible OS MINIX Developed by Andrew S. Tanenbaum Developed as an educational tool to teach students about Operating Systems, at a time when Unix source code was not freely availible
Linux - History Linus Torvalds Linux Today 1991, As a graduate student created his own OS kernel to learn about the Intel 80386 chip, the initial version of Linux. Developed up to version 0.02 by himself. Later released Linux under the GPL license. POSIX Compliant Linux Today Over 1 million lines of code… and growing. Millions and millions of users. Version 2.6.x
Linux vs. Windows Linux is open source Linux is free Linux is UNIX based Bazaar vs. Cathedral Many different distributions of Linux Linux architecture is directory base
The Linux Kernel Version 0.01 (May 1991) had no networking, ran only on 80386-compatible Intel processors and on PC hardware, had extremely limited device-drive support, and supported only the Minix file system Linux 1.0 (March 1994) included these new features: Support for UNIX’s standard TCP/IP networking protocols BSD-compatible socket interface for networking programming Device-driver support for running IP over an Ethernet Enhanced file system Support for a range of SCSI controllers for high-performance disk access Extra hardware support Version 1.2 (March 1995) was the final PC-only Linux kernel
Linux Licensing The Linux kernel is distributed under the GNU General Public License (GPL), the terms of which are set out by the Free Software Foundation Anyone using Linux, or creating their own derivative of Linux, may not make the derived product proprietary; software released under the GPL may not be redistributed as a binary-only product
Design Principles Linux is a multiuser, multitasking system with a full set of UNIX-compatible tools Its file system adheres to traditional UNIX semantics, and it fully implements the standard UNIX networking model Main design goals are speed, efficiency, and standardization Linux is designed to be compliant with the relevant POSIX documents; at least two Linux distributions have achieved official POSIX certification The Linux programming interface adheres to the SVR4 UNIX semantics, rather than to BSD behavior
Components of a Linux System
Components of a Linux System Like most UNIX implementations, Linux is composed of three main bodies of code; the most important distinction between the kernel and all other components The kernel is responsible for maintaining the important abstractions of the operating system Kernel code executes in kernel mode with full access to all the physical resources of the computer All kernel code and data structures are kept in the same single address space
Components of a Linux System (Cont.) The system libraries define a standard set of functions through which applications interact with the kernel, and which implement much of the operating-system functionality that does not need the full privileges of kernel code The system utilities perform individual specialized management tasks
Major Linux Distributors Mandrake Linux Slackware Linux SuSE Linux Turbo Linux Vector Linux Caldera Linux Corel Linux Debian Linux Kondara Linux Red Hat Linux
The Advantage of Linux Low purchase cost Open Source Software (OSS) UNIX heritage Multi User Scalability Vendor support Reliable uptime Security Logging System
The Disadvantage of Linux Step learning curve as Implementation Without standard Hardware support End-user applications
A Comparison Of Win 9x, NT, and Linux Win NT Win 9x Feature Good Poor Scalability Excellent Desktop App. Support None Enterprise App. Support Hardware Support Licensing Cost Network Performance Security
Linux File system Hierarchy Essential Binary Files /bin Boot Loader Files /boot Device Files /dev Configuration Files /etc User Home Directories /home Shared Libraries and Kernel Modules /lib Mount Point for Temporarily Mounted FS /mnt System Information Virtual File System /proc root User Home Directory /root Essential System Binaries /sbin Temporary Files /tmp Shareable Files /usr Non-Shareable Files /var