1
History and Goals of Operating System What is Operating System? Software designed to control the hardware of a specific data-processing system in order to allow users and application programs to make use of it.
History of Operating System The first computers did not have operating systems. However, software tools for managing the system and simplifying the use of hardware appeared very quickly afterwards, and gradually expanded in scope. By the early 1960s, commercial computer vendors were supplying quite extensive tools for streamlining the development, scheduling, and execution of jobs on batch processing systems. Examples were produced by UNIVAC and Control Data Corporation, amongst others. Through the 1960s, several major concepts were developed, driving the development of operating systems. The development of the IBM System/360 produced a family of mainframe computers available in widely differing capacities and price points, for which a single operating system OS/360 was planned (rather than developing ad-hoc programs for every individual model). This concept of a single OS spanning an entire product line was crucial for the success of System/360 and, in fact, IBM's current mainframe operating systems are distant descendants of this original system; applications written for the OS/360 can still be run on modern machines. OS/360 also contained another important advance: the development of the hard disk permanent storage device (which IBM called DASD). Another key development was the concept of time-sharing: the idea of sharing the resources of expensive computers amongst multiple computer users interacting in real time with the system. Time-sharing allowed all of the users to have the illusion of having exclusive access to the machine; the Multics timesharing system was the most famous of a number of new operating systems developed to take advantage of the concept. The first microcomputers did not have the capacity or need for the elaborate operating systems that had been developed for mainframes and minis; minimalistic operating systems were developed. One notable early operating system was CP/M, which was supported on many early microcomputers and was largely cloned in creating MS-DOS, which became wildly popular as the operating system chosen Multics, particularly, was an inspiration to a number of operating systems developed in the 1970s, notably Unix. Another commercially popular minicomputer operating system was VMS. For the IBM PC (IBM's version of it was called IBM-DOS or PC-DOS), its successors making Microsoft one of the world's most profitable companies. The major alternative throughout the 1980s in the microcomputer market was Mac OS, tied intimately to the Apple Macintosh computer.
2 By the 1990s, the microcomputer had evolved to the point where, as well as extensive GUI facilities, the robustness and flexibility of operating systems of larger computers became increasingly desirable. Microsoft's response to this change was the development of Windows NT, which served as the basis for Microsoft's entire operating system line starting in 1999. Apple rebuilt their operating system on top of a Unix core as Mac OS X, released in 2001. Hobbyist-developed reimplementations of Unix, assembled with the tools from the GNU Project, also became popular; versions based on the Linux kernel are by far the most popular, with the BSD derived UNIXes holding a small portion of the server market. The growing complexity of embedded devices has led to increasing use of embedded operating systems.
Today Modern operating systems have a Graphical user interface, which uses a pointing device such as a mouse or stylus for input in addition to the keyboard. Older models and Operating Systems not designed for direct-human interaction (such as webservers) typically use a Command line interface (or CLI) typically with only the keyboard for input. Both models are centered around a "shell" which accepts and processes commands from the user (e.g. clicking on a button, or a typed command at a prompt). The choice of OS may depend on the hardware architecture, specifically the CPU, with only Linux and BSD running on almost any CPU. Windows NT has been ported to a few other CPUs (DEC Alpha and MIPS Magnum). Since the early 1990s the choice for personal computers has largely been limited to the Microsoft Windows family and the Unix-like family, of which Linux and Mac OS X are becoming the major alternatives. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix, but typically more similar to Unix than window User Interface All graphics based today, the user interface includes the windows, menus and method of interaction between you and the computer. Prior to the Mac, Windows and Motif (Unix) interfaces, all interaction was based on commands entered by the user. Operating systems may support optional interfaces (different shells) for different functionality and appearance.
Goals of Operating System
Job Management Job management controls the order and time in which programs are run and is more sophisticated in the mainframe environment where scheduling the daily work has always been routine. IBM's job control language (JCL) was developed decades ago. In a desktop environment, batch files can be written to perform a sequence of operations which can be scheduled to start at a given time.
3
Task Management Multitasking, which is the ability to simultaneously execute multiple programs, is available in all operating systems today. Critical in the mainframe and large server environment, applications can be prioritized to run faster or slower depending on their purpose. In the desktop world, multitasking is necessary just for keeping several applications open at the same time so you can bounce back and forth among them. See multitasking.
Data Management Data management keeps track of the data on disk, tape and optical storage devices. The application program deals with data by file name and a particular location within the file. The operating system's file system knows where that data are physically stored (which sectors on disk) and interaction between the application and operating system is through the programming interface. Whenever an application needs to read or write data, it makes a call to the operating system.
Device Management Device management controls peripheral devices by sending them commands in their own proprietary language. The software routine that knows how to deal with each device is called a "driver." The operating system contains all the drivers for the peripherals attached to the computer. When a new peripheral is added, that device's driver is installed into the operating system.
Security Multiuser operating systems provide password protection to keep unauthorized users out of the system. Large operating systems also maintain activity logs and accounting of the user's time for billing purposes. They also provide backup and recovery routines for starting over in the event of a system fail.
Linux What is Linux? Linux is a computer operating system and its kernel. It is one of the most famous examples of free software and of open-source development: unlike other major operating systems (such as Windows or MacOS), its underlying source code is available to the public and anyone can freely use, modify, and redistribute it.
Linux's directory structure
4 As it may have noticed, Linux organizes its files differently from Windows. First the directory structure may seem unlogical and strange and you have no idea where all the programs, icons, config files, and others are.
< / > The root directory. The starting point directory structure. This is where the Linux system begins. Every other file and directory on system is under the root directory. Usually the root directory contains only subdirectories, so it's a bad idea to store single files directly under root. Don't confuse the root directory with the root user account, root password (which obviously is the root user's password) or root user's home directory.
< /boot > As the name suggests, this is the place where Linux keeps information that it needs when booting up. For example, this is where the Linux kernel is kept. If we list the contents of /boot, we'll see a file called vmlinuz - that's the kernel.
< /etc > The configuration files for the Linux system. Most of these files are text files and can be edited by hand. Some interesting stuff in this directory:
/etc/inittab A text file that describes what processes are started at system bootup and during normal operation. For example, here we can determine if we want the X Window System to start automatically at bootup, and configure what happens when a user presses Ctrl+Alt+Del.
/etc/feta This file contains descriptive information about the various file systems and their mount points, like floppies, cdroms, and so on.
/etc/passwd A file that contains various pieces of information for each user account. This is where the users are defined.
< /bin, /usr/bin > These two directories contain a lot of programs (binaries, hence the directory's name) for the system. The /bin directory contains the most important programs
5 that the system needs to operate, such as the shells, ls, grep, and other essential things. /usr/bin in turn contains applications for the system's users. However, in some cases it really doesn't make much difference if we put the program in /bin or /usr/bin.
< /sbin, /usr/sbin > Most system administration programs are stored in these directories. In many cases we must run these programs as the root user.
< /usr > This directory contains user applications and a variety of other things for them, like their source codes, and pictures, docs, or config files they use. /usr is the largest directory on a Linux system, and some people like to have it on a separate partition. Some interesting stuff in /usr:
/usr/doc Documentation for the user apps, in many file formats.
/usr/share Config files and graphics for many user apps.
/usr/src Source code files for the system's software, including the Linux kernel.
/usr/include Header files for the C compiler. The header files define structures and constants that are needed for building most standard programs. A subdirectory under /usr/include contains headers for the C++ compiler.
/usr/X11R6 The X Window System and things for it. The subdirectories under /usr/X11R6 may contain some X binaries themselves, as well as documentation, header files, config files, icons, sounds, and other things related to the graphical programs.
< /usr/local > This is where we install apps and other files for use on the local machine. If our machine is a part of a network, the /usr directory may physically be on another machine and can be shared by many networked Linux workstations. On this kind of a network, the /usr/local directory contains only stuff that is not supposed to be used on many machines and is intended for use at the local machine only.
6 Most likely your machine isn't a part of a network like this, but it doesn't mean that /usr/local is useless. If we find interesting apps that aren't officially a part of distro, we should install them in /usr/local. For example, if the app would normally go to /usr/bin but it isn't a part of our distro, you should install it in /usr/local/bin instead. When we keep our own programs away from the programs that are included in our distro, we'll avoid confusion and keep things nice and clean.
< /lib > The shared libraries for programs that are dynamically linked. The shared libraries are similar to DLL's on Winblows.
< /home > This is where users keep their personal files. Every user has their own directory under /home, and usually it's the only place where normal users are allowed to write files. You can configure a Linux system so that normal users can't even list the contents of other users' home directories. This means that if your family members have their own user accounts on your Linux system, they won't see all the w4r3z we keep in our home directory. ;-)
< /root > The superuser's (root's) home directory. Don't confuse this with the root directory (/) of a Linux system.
< /var > This directory contains variable data that changes constantly when the system is running. Some interesting subdirectories:
/var/log A directory that contains system log files. They're updated when the system runs, and checking them out can give us valuable info about the health of our system. If something in our system suddenly goes wrong, the log files may contain some info about the situation.
/var/mail Incoming and outgoing mail is stored in this directory.
/var/spool This directory holds files that are queued for some process, like printing.
7
< /tmp > Programs can write their temporary files here.
< /dev > The devices those are available to a Linux system. Remember that in Linux, devices are treated like files and we can read and write devices like they were files. For example, /dev/fd0 is your first floppy drive, /dev/cdrom is your CD drive, /dev/hda is the first IDE hard drive, and so on. All the devices that a Linux kernel can understand are located under /dev, and that's why it contains hundreds of entries.
< /mnt > This directory is used for mount points. The different physical storage devices (like the hard disk drives, floppies, CD-ROM's) must be attached to some directory in the file system tree before they can be accessed. This attaching is called mounting, and the directory where the device is attached is called the mount point. The /mnt directory contains mount points for different devices, like /mnt/floppy for the floppy drive, /mnt/cdrom for the CD-ROM, and so on. However, we're not forced to use the /mnt directory for this purpose, we can use whatever directory we wish. Actually in some distros, like Debian and SuSE, the default is to use /floppy and /cdrom as mount points instead of directories under /mnt.
< /proc > This is a special directory. Well, actually /proc is just a virtual directory, because it doesn't exist at all! It contains some info about the kernel itself. There's a bunch of numbered entries that correspond to all processes running on the system, and there are also named entries that permit access to the current configuration of the system. Many of these entries can be viewed.
< /lost+found > Here Linux keeps the files that it restores after a system crash or when a partition hasn't been unmounted before a system shutdown. This way you can recover files that would otherwise have been loss.
8
References: Consulted Books 1. Operating System Concepts By Deitel, Harvey M., Paul, David 2. Operating System (Design and Implementation) By Tanenbaum, Andrew s, wood hull 3. Operating System Concepts By Silberschatz, Galvin, Gagne
Consulted Website 1. www.wikipedia.com 2. www.tuxfiles.com 3.www.answers.com 4. www.wordnet.com