OS Module 1
OS Module 1
OS Module 1
Module I
INTRODUCTION TO OPERATING SYSTEM
What is an Operating System?
An operating system is a system software that acts as an intermediary between a user
of a computer and the computer hardware.
It is a software that manages the computer hardware. Operating System allows the user
to execute programs in a convenient and efficient manner.
The basic hardware components comprise of CPU, memory, I/O devices. The
application program uses these components. The OS controls and co-ordinates the use of
hardware, among various application programs (like compiler, word processor etc.) for various
users.
The OS allocates the resources among the programs such that the hardware is efficiently
used. The operating system is the program running at all the times on the computer. It is usually
called as the kernel.
Kernel functions are used always in system, so always stored in memory. Non kernel functions
are stored in hard disk, and it is retrieved whenever required.
Views of OS
Operating System can be viewed from two viewpoints–User views & System views
1. User Views:- The user’s view of the operating system depends on the type of user.
If the user is using standalone system, then OS is designed for ease of use and high
performances. Here resource utilization is not given importance.
If the users are at different terminals connected to a mainframe or minicomputers,
by sharing information and resources, then the OS is designed to maximize resource
utilization. OS is designed such that the CPU time, memory and i/o are used efficiently
and no single user takes more than the resource allotted to them.
If the users are in workstations, connected to networks and servers, then the user have
a system unit of their own and shares resources and files with other systems. Here the
OS is designed for both ease of use and resource availability (files).
Users of hand held systems, expects the OS to be designed for ease of use and
performance per amount of battery life.
Other systems like embedded systems used in home devise (like washing m/c) &
automobiles do not have any user interaction. There are some LEDs to show the status
of its work.
2. System Views:-Operating system can be viewed as a resource allocator and control
program.
Resource allocator - The OS acts as a manager of hardware and software resources.
CPU time, memory space, file-storage space, I/O devices, shared files etc. are the
Introduction to OS, System Structures 3
When system is switched on, ‘Bootstrap’ program is executed. It is the initial program to run
in the system. This program is stored in read-only memory (ROM) or in electrically erasable
programmable read-only memory(EEPROM). It initializes the CPU registers, memory, device
controllers and other initial setups. The program also locates and loads, the OS kernel to the
memory. Then the OS starts with the first process to be executed (ie. ‘init’ process) and then
wait for the interrupt from the user.
Switch on --------‘Bootstrap’ program
Initializes the registers, memory and I/O devices
Locates & loads kernel into memory
Starts with ‘init’ process
Waits for interrupt from user.
Interrupt handling – The occurrence of an event is usually signalled by an interrupt. The
interrupt can either be from the hardware or the software. Hardware may trigger an interrupt at
Introduction to OS, System Structures 4
any time by sending a signal to the CPU. Software triggers an interrupt by executing a special
operation called a system call (also called a monitor call).
When the CPU is interrupted, it stops what it is doing and immediately transfers
execution to a fixed location. The fixed location (Interrupt Vector Table) contains the starting
address where the service routine for the interrupt is located. After the execution of interrupt
service routine, the CPU resumes the interrupted computation.
Interrupts are an important part of computer architecture. Each computer design has its
own interrupt mechanism, but several functions are common. The interrupt must transfer
control to the appropriate interrupt service routine
Storage Structure
Computer programs must be in main memory (RAM) to be executed. Main memory is
the large memory that the processor can access directly. It commonly is implemented in a
semiconductor technology called dynamic random-access memory (DRAM). Computers
provide Read Only Memory(ROM), whose data cannot be changed.
All forms of memory provide an array of memory words. Each word has its own
address. Interaction is achieved through a sequence of load or store instructions to specific
memory addresses.
A typical instruction-execution cycle, as executed on a system with a Von Neumann
architecture, first fetches an instruction from memory and stores that instruction in the
instruction register. The instruction is then decoded and may cause operands to be fetched from
memory and stored in some internal register. After the instruction on the operands has been
executed, the result may be stored back in memory.
Ideally, we want the programs and data to reside in main memory permanently. This
arrangement usually is not possible for the following two reasons:
1. Main memory is usually too small to store all needed programs and data permanently.
2. Main memory is a volatile storage device that loses its contents when power is turned
off.
Introduction to OS, System Structures 5
Every device has a device controller, maintains some local buffer and a set of special purpose
registers. The device controller is responsible for moving the data between the peripheral
devices. The operating systems have a device driver for each device controller.
To start an I/O operation, the device driver loads the registers within the device controller. The
device controller, examines the contents of these registers to determine what action to take
(such as "read a character from the keyboard"). The controller starts the transfer of data from
the device to its local buffer. Once the transfer of data is complete, the device controller informs
the device driver(OS) via an interrupt that it has finished its operation. The device driver then
returns control to the operating system, and also returns the data. For other operations, the
device driver returns status information. This form of interrupt-driven I/O is fine for moving
small amounts of data, but very difficult for bulk data movement. To solve this problem, direct
memory access (DMA) is used.
DMA is used for high-speed I/O devices, able to transmit information at close to
memory speeds
Device controller transfers blocks of data from buffer storage directly to main memory
without CPU intervention.
Only one interrupt is generated per block, rather than the one interrupt per byte
Computer System Architecture
Categorized roughly according to the number of general-purpose processors used –
Single-Processor Systems –
Most systems use a single processor. The variety of single-processor systems range
from PDAs through mainframes. On a single-processor system, there is one main CPU capable
of executing instructions from user processes. It contains special-purpose processors, in the
Introduction to OS, System Structures 7
form of device-specific processors, for devices such as disk, keyboard, and graphics
controllers.
All special-purpose processors run limited instructions and do not run user processes.
These are managed by the operating system, the operating system sends them information
about their next task and monitors their status. For example, a disk-controller processor,
implements its own disk queue and scheduling algorithm, thus reducing the task of main CPU.
Special processors in the keyboard, converts the keystrokes into codes to be sent to the CPU.
The use of special-purpose microprocessors is common and does not turn a single-processor
system into a multiprocessor. If there is only one general-purpose CPU, then the
system is a single-processor system.
Multiprocessor Systems (parallel systems or tightly coupled systems) –
Systems that have two or more processors in close communication, sharing the computer bus,
the clock, memory, and peripheral devices are the multiprocessor systems.
Multiprocessor systems have three main advantages:
1. Increased throughput - In multiprocessor system, as there are multiple processors
execution of different programs take place simultaneously. Even if the number of processors
is increased the performance cannot be simultaneously increased. This is due to the overhead
incurred in keeping all the parts working correctly and also due to the competition for the shared
resources. The speed-up ratio with N processors is not N, rather, it is less than N. Thus the
speed of the system is not has expected.
2. Economy of scale - Multiprocessor systems can cost less than equivalent number of many
single-processor systems. As the multiprocessor systems share peripherals, mass storage, and
power supplies, the cost of implementing this system is economical. If several processes are
working on the same data, the data can also be shared among them.
3.Increased reliability- In multiprocessor systems functions are shared among several
processors. If one processor fails, the system is not halted, it only slows down. The job of
the failed processor is taken up, by other processors.
Two techniques to maintain ‘Increased Reliability’ - graceful degradation & fault tolerant
Graceful degradation – As there are multiple processors when one processor fails
other process will take up its work and the system goes down slowly.
Fault tolerant – When one processor fails, its operations are stopped, the system
failure is then detected, diagnosed, and corrected.
The HP Non Stop system uses both hardware and software duplication to ensure continued
operation despite faults. The system consists of multiple pairs of CPUs. Both processors in the
Introduction to OS, System Structures 8
pair execute same instruction and compare the results. If the results differ, then one CPU of the
pair is at fault, and both are halted. The process that was being executed is then moved to
another pair of CPUs, and the instruction that failed is restarted. This solution is expensive,
since it involves special hardware and considerable hardware duplication.
There are two types of multiprocessor systems –
• Asymmetric multiprocessing
• Symmetric multiprocessing
1) Asymmetric multiprocessing – (Master/Slave architecture) Here each processor is
assigned a specific task, by the master processor. A master processor controls the other
processors in the system. It schedules and allocates work to the slave processors.
2) Symmetric multiprocessing (SMP) – All the processors are considered as peers. There is
no master-slave relationship. All the processors have its own registers and CPU, only memory
is shared.
The benefit of this model is that many processes can run simultaneously. N processes can run
if there are N CPUs—without causing a significant deterioration of performance. Operating
systems like Windows, Windows XP, Mac OS X, and Linux—now provide support for SMP.
A recent trend in CPU design is to include multiple compute cores on a single chip. The
communication between processors within a chip is faster than communication between two
single processors.
Clustered Systems
Clustered systems are two or more individual systems connected together via network
and sharing software resources. Clustering provides high-availability of resources and services.
The service will continue even if one or more systems in the cluster fail. High availability is
generally obtained by storing a copy of files (s/w resources) in the system.
Introduction to OS, System Structures 9
Multi-programmed systems provide an environment in which the various system resources (for
example, CPU, memory, and peripheral devices) are utilized effectively, but they do not
provide for user interaction with the computer system.
In Time sharing (or multitasking) systems, a single CPU executes multiple jobs by switching
among them, but the switches occur so frequently that the users can interact with each program
Introduction to OS, System Structures 10
while it is running. The user feels that all the programs are being executed at the same time.
Time sharing requires an interactive (or hands-on) computer system, which provides direct
communication between the user and the system. The user gives instructions to the operating
system or to a program directly, using a input device such as a keyboard or a mouse, and waits
for immediate results on an output device. Accordingly, the response time should be short—
typically less than one second.
A time-shared operating system allows many users to share the computer simultaneously. As
the system switches rapidly from one user to the next, each user is given the impression that
the entire computer system is dedicated to his use only, even though it is being shared among
many users.
A multiprocessor system is a computer system having two or more CPUs within a single
computer system, each sharing main memory and peripherals. Multiple programs are executed
by multiple processors parallel.
Distributed Systems
Individual systems that are connected and share the resource available in network is called
Distributed system. Access to a shared resource increases computation speed, functionality,
data availability, and reliability.
A network is a communication path between two or more systems. Distributed systems
depend on networking for their functionality. Networks vary by the protocols used, the
distances between nodes, and the transport media. TCP/IP is the most common network
protocol. Most operating systems support TCP/IP.
Networks are characterized based on the distances between their nodes. A local-area network
(LAN) connects computers within a room, a floor, or a building. A wide-area network (WAN)
usually links buildings, cities, or countries. A global company may have a WAN to connect its
offices worldwide. A metropolitan-area network (MAN) links buildings within a city. A
small-area network connects systems within a several feet using wireless technology. Eg.
Bluetooth and 802.11.
The media to carry networks also vary - copper wires, fibre strands, and wireless transmissions
between satellites, microwave dishes, and radios.
Introduction to OS, System Structures 11
A network operating system is an operating system that provides features such as file sharing
across the network and that allows different processes on different computers to exchange
messages. A computer running a network operating system acts autonomously from all other
computers on the network, although it is aware of the network and is able to communicate with
other networked computers.
Operating-System Operations
Modern operating systems are interrupt driven. If there are no processes to execute,
no I/O devices to service, and no users to whom to respond, an operating system will sit quietly,
waiting for something to happen. Events are signalled by the occurrence of an interrupt or a
trap. A trap (or an exception) is a software-generated interrupt. For each type of interrupt,
separate segments of code in the operating system determine what action should be taken. An
interrupt service routine is provided that is responsible for dealing with the interrupt.
a) Dual-Mode Operation
Since the operating system and the user programs share the hardware and software resources
of the computer system, it has to be made sure that an error in a user program cannot cause
problems to other programs and the Operating System running in the system.
The approach taken is to use a hardware support that allows us to differentiate among
various modes of execution.
The system can be assumed to work in two separate modes of operation:
• user mode and
• kernel mode (supervisor mode, system mode, or privileged mode).
A hardware bit of the computer, called the mode bit, is used to indicate the current mode: kernel
(0) or user (1). With the mode bit, we are able to distinguish between a task that is executed by
the operating system and one that is executed by the user.
When the computer system is executing a user application, the system is in user mode.
When a user application requests a service from the operating system (via a system call), the
transition from user to kernel mode takes place.
Introduction to OS, System Structures 12
At system boot time, the hardware starts in kernel mode. The operating system is then
loaded and starts user applications in user mode. Whenever a trap or interrupt occurs, the
hardware switches from user mode to kernel mode (that is, changes the mode bit from 1 to 0).
Thus, whenever the operating system gains control of the computer, it is in kernel mode. The
dual mode of operation provides us with the means for protecting the operating system from
errant users—and errant users from one another.
The hardware allows privileged instructions to be executed only in kernel mode. If an attempt
is made to execute a privileged instruction in user mode, the hardware does not execute the
instruction but rather treats it as illegal and traps it to the operating system. The instruction to
switch to user mode is an example of a privileged instruction.
Initial control is within the operating system, where instructions are executed in kernel
mode. When control is given to a user application, the mode is set to user mode. Eventually,
control is switched back to the operating system via an interrupt, a trap, or a system call.
b) Timer
Operating system uses timer to control the CPU. A user program cannot hold CPU for
a long time, this is prevented with the help of timer.A timer can be set to interrupt the computer
after a specified period. The period may be fixed (for example, 1/60 second) or variable (for
example, from 1 millisecond to 1 second).
Fixed timer – After a fixed time, the process under execution is interrupted
Variable timer – Interrupt occurs after varying interval. This is implemented using a
fixed-rate clock and a counter. The operating system sets the counter. Every time the clock
ticks, the counter is decremented. When the counter reaches 0, an interrupt occurs.
Before changing to the user mode, the operating system ensures that the timer is set to
interrupt. If the timer interrupts, control transfers automatically to the operating system, which
may treat the interrupt as a fatal error or may give the program more time.
Process Management
A program under execution is a process. A process needs resources like CPU time,
memory, files, and I/O devices for its execution. These resources are given to the process when
it is created or at run time. When the process terminates, the operating system reclaims the
resources.
The program stored on a disk is a passive entity and the program under execution is an
active entity. A single-threaded process has one program counter specifying the next
instruction to execute. The CPU executes one instruction of the process after another, until the
Introduction to OS, System Structures 13
process completes. A multithreaded process has multiple program counters, each pointing to
the next instruction to execute for a given thread.
The operating system is responsible for the following activities in connection with
process management:
• Scheduling process and threads on the CPU
• Creating and deleting both user and system processes
• Suspending and resuming processes
• Providing mechanisms for process synchronization
• Providing mechanisms for process communication
Memory Management
Main memory is a large array of words or bytes. Each word or byte has its own address. Main
memory is the storage device which can be easily and directly accessed by the CPU. As the
program executes, the central processor reads instructions and also reads and writes data from
main memory.
To improve both the utilization of the CPU and the speed of the computer's response to
its users, general-purpose computers must keep several programs in memory, creating a need
for memory management.
The operating system is responsible for the following activities in connection with
memory management:
• Keeping track of which parts of memory are currently being used by user.
• Deciding which processes and data to move into and out of memory.
• Allocating and deallocating memory space as needed.
Storage Management
There are three types of storage management i) File system management ii) Mass-storage
management iii) Cache management.
File-System Management
File management is one of the most visible components of an operating system. Computers can
store information on several different types of physical media. Magnetic disk, optical disk, and
magnetic tape is the most common. Each of these media has its own characteristics and physical
organization. Each medium is controlled by a device, such as a disk drive or tape drive, that
also has its own unique characteristics.
A file is a collection of related information defined by its creator. Commonly, files
represent programs and data. Data files may be numeric, alphabetic, alphanumeric, or binary.
Introduction to OS, System Structures 14
Files may be free-form (for example, text files), or they may be formatted rigidly (for example,
fixed fields).
The operating system implements the abstract concept of a file by managing mass
storage media. Files are normally organized into directories to make them easier to use. When
multiple users have access to files, it may be desirable to control by whom and in what ways
(read, write, execute) files may be accessed.
The operating system is responsible for the following activities in connection with file
management:
• Creating and deleting files
• Creating and deleting directories to organize files
• Supporting primitives for manipulating files and directories
• Mapping files onto secondary storage
• Backing up files on stable (non-volatile) storage media
Mass-Storage Management
As the main memory is too small to accommodate all data and programs, and as the data that
it holds are erased when power is lost, the computer system must provide secondary storage to
back up main memory. Most modern computer systems use disks as the storage medium for
both programs and data.
Most programs including compilers, assemblers, word processors, editors, and formatter are
stored on a disk until loaded into memory and then use the disk as both the source and
destination of their processing. Hence, the proper management of disk storage is of central
importance to a computer system. The operating system is responsible for the following
activities in connection with disk management:
• Free-space management
• Storage allocation
• Disk scheduling
As the secondary storage is used frequently, it must be used efficiently. The entire speed
of operation of a computer may depend on the speeds of the disk. Magnetic tape drives and
their tapes, CD, DVD drives and platters are tertiary storage devices. The functions that
operating systems provides include mounting and unmounting media in devices, allocating and
freeing the devices for exclusive use by processes, and migrating data from secondary to
tertiary storage.
Caching Caching is an important principle of computer systems. Information is normally kept
in some storage system (such as main memory). As it is used, it is copied into a faster storage
Introduction to OS, System Structures 15
TCP/IP is the most common network protocol. The operating systems support of
protocols also varies. Most operating systems support TCP/IP, including the Windows and
UNIX operating systems.
Networks are characterized based on the distances between their nodes. A local-area
network (LAN) connects computers within a room, a floor, or a building. A wide-area network
(WAN) usually links buildings, cities, or countries. A global company may have a WAN to
connect its offices worldwide. These networks may run one protocol or several protocols. A
metropolitan-area network (MAN) connects buildings within a city. Bluetooth and 802.11
devices use wireless technology to communicate over a distance of several feet, in essence
creating a small-area network such as might be found in a home.
The transportation media to carry networks are also varied. They include copper wires,
fibre strands, and wireless transmissions between satellites, microwave dishes, and radios.
When computing devices are connected to cellular phones, they create a network.
Special-Purpose Systems
There are different classes of computer systems, whose functions are more limited and
specific and it deal with limited computation domains. The systems can be classified as Real-
Time Embedded Systems, Multimedia Systems and Handheld Systems.
Real-Time Embedded Systems
Embedded computers are the most prevalent form of computers in existence. These devices are
found everywhere, from car engines and manufacturing robots to VCRs and microwave ovens.
They tend to have very specific tasks. Usually, they have little user interface, and more time is
spent for monitoring and managing hardware devices, eg. automobile engines and robotic arms.
The Operating Systems, in these embedded systems vary considerably. Some systems
have standard operating systems—such as UNIX—with special-purpose applications. Others
have special-purpose embedded operating system providing just the functionality desired.
Embedded systems always run real-time operating systems. A real-time system is
used when there is restricted time for an operation or for the flow of data. A real-time system
functions correctly only if it returns the correct result within its time constraints. Sensors bring
data to the computer. The computer must analyze the data and perform certain action.
Some medical imaging systems, automobile-engine fuel-injection systems, home
appliance controllers, and weapon systems are real-time systems. A real-time system has well
defined, fixed time constraints. Processing must be done within the defined constraints, or the
Introduction to OS, System Structures 18
system will fail. For instance, the robot arm should be halted before it has smashed into the car,
it was building.
Entire houses can be computerized, so that a computer —can control heating and
lighting, alarm systems, and even coffee makers. Web access can enable a home owner to tell
the house to heat up before she arrives home.
Multimedia Systems
Multimedia data consist of audio and video files as well as conventional files. These
data differ from conventional data in that multimedia data—such as frames of video—must be
delivered (streamed) according to certain time restrictions (for example, 30 frames per second).
Multimedia describes a wide range of applications like audio files - MP3, DVD movies, video
conferencing, and short video clips of movie previews or news. Multimedia applications may
also include live webcasts of speeches or sporting events and even live webcams. Multimedia
applications can be either audio or video or combination of both. For example, a movie may
consist of separate audio and video tracks.
Handheld Systems
Handheld systems include personal digital assistants (PDAs), such as Palm and Pocket-
PCs, and cellular telephones. Developers of these systems face many challenges, due to the
limited memory, slow processors and small screens in such devices.
The amount of physical memory in a handheld depends upon the device, the operating
system and applications must manage memory efficiently. This includes returning all allocated
memory back to the memory manager when the memory is not being used. A second issue of
concern to developers of handheld devices is the speed of the processor used in the devices.
Processors for most handheld devices run at faster speed than the processor in a PC. Faster
processors require more power and so, a larger battery is required. Another issue is the usage
of I/O devices.
Generally, the limitations in the functionality of PDAs are balanced by their
convenience and portability. Their use continues to expand as network connections become
more available and other options, such as digital cameras and MP3 players, expand their utility.
Computing Environments
The different computing environments are -
Traditional Computing
The current trend is toward providing more ways to access these computing
environments. Web technologies are stretching the boundaries of traditional computing.
Introduction to OS, System Structures 19
Companies establish portals, which provide web accessibility to their internal servers. Network
computers are essentially terminals that understand web-based computing. Handheld
computers can synchronize with PCs to allow very portable use of company information.
Handheld PDAs can also connect to wireless networks to use the company's web portal. The
fast data connections are allowing home computers to serve up web pages and to use networks.
Some homes even have firewalls to protect their networks.
In the latter half of the previous century, computing resources were scarce. Years
before, systems were either batch or interactive. Batch system processed jobs in bulk, with
predetermined input (from files or other sources of data). Interactive systems waited for input
from users. To optimize the use of the computing resources, multiple users shared time on these
systems. Time-sharing systems used a timer and scheduling algorithms to rapidly cycle
processes through the CPU, giving each user a share of the resources.
Today, traditional time-sharing systems are used everywhere. The same scheduling
technique is still in use on workstations and servers, but frequently the processes are all owned
by the same user (or a single user and the operating system). User processes, and system
processes that provide services to the user, are managed so that each frequently gets a slice of
computer time.
Client-Server Computing
Designers shifted away from centralized system architecture to - terminals connected
to centralized systems. As a result, many of today’s systems act as server systems to satisfy
requests generated by client systems. This form of specialized distributed system, called client
server system.
Server systems can be broadly categorized as compute servers and file servers:
• The compute-server system provides an interface to which a client can send a
request to perform an action (for example, read data); in response, the server executes the action
and sends back results to the client. A server running a database that responds to client requests
for data is an example of such a system.
Introduction to OS, System Structures 20
• The file-server system provides a file-system interface where clients can create,
update, read, and delete files. An example of such a system is a web server that delivers files
to clients running the web browsers.
Peer-to-Peer Computing
In this model, clients and servers are not distinguished from one another; here, all nodes
within the system are considered peers, and each may act as either a client or a server,
depending on whether it is requesting or providing a service.
In a client-server system, the server is a bottleneck, because all the services must be
served by the server. But in a peer-to-peer system, services can be provided by several nodes
distributed throughout the network.
To participate in a peer-to-peer system, a node must first join the network of peers.
Once a node has joined the network, it can begin providing services to and requesting services
from other nodes in the network. Determining what services are available is accomplished in
one of two general ways:
• When a node joins a network, it registers its service with a centralized lookup service
on the network. Any node desiring a specific service first contacts this centralized lookup
service to determine which node provides the service. The remainder of the communication
takes place between the client and the service provider.
• A peer acting as a client must know, which node provides a desired service by
broadcasting a request for the service to all other nodes in the network. The node (or nodes)
providing that service responds to the peer making the request. To support this approach, a
discovery protocol must be provided that allows peers to discover services provided by other
peers in the network.
Web-Based Computing
Web computing has increased the importance on networking. Devices that were not
previously networked now include wired or wireless access. Devices that were networked now
have faster network connectivity.
The implementation of web-based computing has given rise to new categories of
devices, such as load balancers, which distribute network connections among a pool of similar
servers. Operating systems like Windows 95, which acted as web clients, have evolved into
Linux and Windows XP, which can act as web servers as well as clients. Generally, the Web
has increased the complexity of devices, because their users require them to be web-enabled.
The design of an operating system is a major task. It is important that the goals of the new
Introduction to OS, System Structures 21
system be well defined before the design of OS begins. These goals form the basis for choices
among various algorithms and strategies.
2.1 Operating-System Services
• Error Detection - Both hardware and software errors must be detected and handled
appropriately by the OS. Errors may occur in the CPU and memory hardware (such as power
failure and memory error), in I/O devices (such as a parity error on tape, a connection failure
on a network, or lack of paper in the printer), and in the user program (such as an arithmetic
overflow, an attempt to access an illegal memory location).
OS provide services for the efficient operation of the system, including:
• Resource Allocation – Resources like CPU cycles, main memory, storage space, and I/O
devices must be allocated to multiple users and multiple jobs at the same time.
• Accounting – There are services in OS to keep track of system activity and resource usage,
either for billing purposes or for statistical record keeping that can be used to optimize future
performance.
• Protection and Security – The owners of information(file) in multiuser or networked
computer system may want to control the use of that information. When several separate
processes execute concurrently, one process should not interfere with other or with OS.
Protection involves ensuring that all access to system resources is controlled. Security of the
system from outsiders must also be done, by means of a password.
2.2 User Operating-System Interface
There are several ways for users to interface with the operating system.
1) Command-line interface, or command interpreter, allows users to directly enter commands
to be performed by the operating system.
2) Graphical user interface(GUI), allows users to interface with the operating system using
pointer device and menu system.
Command Interpreter
Command Interpreters are used to give commands to the OS. There are multiple command
interpreters known as shells. In UNIX and Linux systems, there are several different shells,
like the Bourne shell, C shell, Bourne-Again shell, Korn shell, and others.
The main function of the command interpreter is to get and execute the user-specified
command. Many of the commands manipulate files: create, delete, list, print, copy, execute,
and so on.
The commands can be implemented in two general ways
1) The command interpreter itself contains the code to execute the command. For example, a
command to delete a file may cause the command interpreter to jump to a particular section of
its code that sets up the parameters and makes the appropriate system call.
Introduction to OS, System Structures 23
2) The code to implement the command is in a function in a separate file. The interpreter
searches for the file and loads it into the memory and executes it by passing the parameter.
Thus by adding new functions new commands can be added easily to the interpreter without
disturbing it.
Graphical User Interface, GUI Another way of interfacing with the operating system is through
a user friendly graphical user interface, or GUI.
Graphical user interfaces first appeared on the Xerox Alto computer in 1973.
Here, rather than entering commands directly via a command-line interface, users employ a
mouse-based window and menu system. The user moves the mouse to position its pointer on
images, or icons on the screen (the desktop) that represent programs, files, directories, and
Introduction to OS, System Structures 24
system functions. Depending on the mouse pointer's location, clicking a button on the mouse
can invoke a program, select a file or directory-known as a folder-or pull down a menu that
contains commands.
2.3 System Calls
• System calls is a means to access the services of the operating system.
Generally written in C or C++, although some are written in assembly for optimal
performance.
• The below figure illustrates the sequence of system calls required to copy a file content
from one file(input file) to another file (output file).
There are number of system calls used to finish this task. The first system call is to write
a message on the screen (monitor). Then to accept the input filename. Then another system call
to write message on the screen, then to accept the output filename. When the program tries to
open the input file, it may find that there is no file of that name or that the file is protected
against access. In these cases, the program should print a message on the console(another
system call) and then terminate abnormally (another system call) and create a new one (another
system call). Now that both the files are opened, we enter a loop that reads from the input
file(another system call) and writes to output file (another system call).
Finally, after the entire file is copied, the program may close both files (another system
call), write a message to the console or window (system call), and finally terminate normally
(final system call).
• Most programmers do not use the low-level system calls directly, but instead use an
"Application Programming Interface", API.
• The APIs instead of direct system calls provides for greater program portability between
different systems. The API then makes the appropriate system calls through the system call
Introduction to OS, System Structures 25
interface, using a system call table to access specific numbered system calls, as shown in Figure
2.6.
• Each system call has a specific numbered system call. The system call table (consisting of
system call number and address of the particular service) invokes a particular service routine
for a specific system call.
• The caller need know nothing about how the system call is implemented or what it does
during execution.
Figure 2.6 The handling of a user application invoking the open() system call
• File management
• Device management
• Information management
• Communications
• Protection
Introduction to OS, System Structures 27
a) Process Control
• Process control system calls include end, abort, load, execute, create process, terminate
process, get/set process attributes, wait for time or event, signal event, and allocate and free
memory.
• Processes must be created, launched, monitored, paused, resumed, and eventually stopped.
• When one process pauses or stops, then another must be launched or resumed
• Process attributes like process priority, max. allowable execution time etc. are set and
retrieved by OS.
• After creating the new process, the parent process may have to wait (wait time), or wait for
an event to occur (wait event). The process sends back a signal when the event has occurred
(signal event).
In DOS, the command interpreter loaded first. Then loads the process and transfers control to
it. The interpreter does not resume until the process has completed, as shown in Figure 2.10:
Figure 2.10
o Because UNIX is a multi-tasking system, the command interpreter remains completely
resident when executing a process, as shown in Figure 2.11 below.
▪ The user can switch back to the command interpreter at any time, and can place the running
process in the background even if it was not originally launched as a background process.
▪ In order to do this, the command interpreter first executes a "fork" system call, which creates
a second process which is an exact duplicate (clone) of the original command interpreter. The
original process is known as the parent, and the cloned process is known as the child, with its
own unique process ID and parent ID.
▪ The child process then executes an "exec" system call, which replaces its code with that of
the desired process.
▪ The parent (command interpreter) normally waits for the child to complete before issuing a
new command prompt, but in some cases it can also issue a new prompt right away, without
Introduction to OS, System Structures 28
waiting for the child process to complete. (The child is then said to be running "in the
background", or "as a background process".)
b) File Management
The file management functions of OS are –
• File management system calls include create file, delete file, open, close, read, write,
reposition, get file attributes, and set file attributes.
• After creating a file, the file is opened. Data is read or written to a file.
• The file pointer may need to be repositioned to a point.
• The file attributes like filename, file type, permissions, etc. are set and retrieved using system
calls.
• These operations may also be supported for directories as well as ordinary files.
c) Device Management
• Device management system calls include request device, release device, read, write,
reposition, get/set device attributes, and logically attach or detach devices.
• When a process needs a resource, a request for resource is done. Then the control is granted
to the process. If requested resource is already attached to some other process, the requesting
process has to wait.
• In multiprogramming systems, after a process uses the device, it has to be returned to OS, so
that another process can use the device.
• Devices may be physical ( e.g. disk drives ), or virtual / abstract ( e.g. files, partitions, and
RAM disks ).
d) Information Maintenance
• Information maintenance system calls include calls to get/set the time, date, system data, and
process, file, or device attributes.
• These system calls care used to transfer the information between user and the OS. Information
like current time & date, no. of current users, version no. of OS, amount of free memory, disk
space etc. are passed from OS to the user.
e) Communication
• Communication system calls create/delete communication connection, send/receive
messages, transfer status information, and attach/detach remote devices.
• The message passing model must support calls to:
Identify a remote process and/or host with which to communicate.
Establish a connection between the two processes.
Open and close the connection as neededTransmit messages along the connection.
Introduction to OS, System Structures 29
• Benefit of microkernel - System expansion can also be easier, because it only involves adding
more system applications, not rebuilding a new kernel.
• Mach was the first and most widely known microkernel, and now forms a major component
of Mac OSX.
• Disadvantage of Microkernel: - it suffers from reduction in performance due to increases
system function overhead.
2.7.4 Modules
• Modern OS development is object-oriented, with a relatively small core kernel and a set of
modules which can be linked in dynamically.
• Modules are similar to layers in that each subsystem has clearly defined tasks and interfaces,
but any module is free to contact any other module, eliminating the problems of going through
multiple intermediary layers.
• The kernel is relatively small in this architecture, similar to microkernels, but the kernel does
not have to implement message passing since modules are free to contact each other directly.
Eg: Solaris, Linux and MacOSX.
• The Max OSX architecture relies on the Mach microkernel for basic system management
services, and the BSD kernel for additional services. Application services and dynamically
loadable modules (kernel extensions) provide the rest of the OS functionality.
• Resembles layered system, but a module can call any other module.
• Resembles microkernel, the primary module has only core functions and the knowledge of
how to load and communicate with other modules.
2.8 Virtual Machines
The fundamental idea behind a virtual machine is to abstract the hardware of a single computer
(the CPU, memory, disk drives, network interface cards, and so forth) into several different
execution environments, thereby creating the illusion that each separate execution environment
is running its own private computer.
Creates an illusion that a process has its own processor with its own memory. Host OS
is the main OS installed in system and the other OS installed in the system are called guest OS.
Figure 2.17 System modes. (A) Nonvirtual machine (b) Virtual machine
• Virtual machines first appeared as the VM Operating System for IBM mainframes in
1972.
Benefits
• Able to share the same hardware and run several different execution environments(OS).
• Host system is protected from the virtual machines and the virtual machines are protected
from one another. A virus in guest OS, will corrupt that OS but will not affect the other guest
systems and host systems.
• Even though the virtual machines are separated from one another, software resources can be
shared among them. Two ways of sharing s/w resource for communication are: a)To share a
Introduction to OS, System Structures 35
• More commonly configuration tables determine which modules to link into the new kernel,
and what values to set for some key important parameters. This approach may require the
configuration of complicated make files, which can be done either automatically or through
interactive configuration programs; Then make is used to actually generate the new kernel
specified by the new parameters.
• At the other extreme a system configuration may be entirely defined by table data, in which
case the "rebuilding" of the system merely requires editing data tables.
• Once a system has been regenerated, it is usually required to reboot the system to activate the
new kernel. Because there are possibilities for errors, most systems provide some mechanism
for booting to older or alternate kernels.
2.11 System Boot
The general approach when most computers boot up goes something like this:
• When the system powers up, an interrupt is generated which loads a memory address into the
program counter, and the system begins executing instructions found at that address. This
address points to the "bootstrap" program located in ROM chips (or EPROM chips) on the
motherboard.
• The ROM bootstrap program first runs hardware checks, determining what physical resources
are present and doing power-on self-tests (POST) of all HW for which this is applicable. Some
devices, such as controller cards may have their own on-board diagnostics, which are called by
the ROM bootstrap program.
• The user generally has the option of pressing a special key during the POST process, which
will launch the ROM BIOS configuration utility if pressed. This utility allows the user to
specify and configure certain hardware parameters as where to look for an OS and whether or
not to restrict access to the utility with a password.
o Some hardware may also provide access to additional configuration setup programs, such as
for a RAID disk controller or some special graphics or networking cards.
• Assuming the utility has not been invoked, the bootstrap program then looks for a non-volatile
storage device containing an OS. Depending on configuration, it may look for a floppy drive,
CD ROM drive, or primary or secondary hard drives, in the order specified by the HW
configuration utility.
• Assuming it goes to a hard drive, it will find the first sector on the hard drive and load up the
fdisk table, which contains information about how the physical hard drive is divided up into
logical partitions, where each partition starts and ends, and which partition is the "active"
partition used for booting the system.
Introduction to OS, System Structures 38
• There is also a very small amount of system code in the portion of the first disk block not
occupied by the fdisk table. This bootstrap code is the first step that is not built into the
hardware, i.e. the first part which might be in any way OS-specific. Generally, this code knows
just enough to access the hard drive, and to load and execute a (slightly) larger boot program.
• For a single-boot system, the boot program loaded off of the hard disk will then proceed to
locate the kernel on the hard drive, load the kernel into memory, and then transfer control over
to the kernel. There may be some opportunity to specify a particular kernel to be loaded at this
stage, which may be useful if a new kernel has just been generated and doesn't work, or if the
system has multiple kernels available with different configurations for different purposes.
(Some systems may boot different configurations automatically, depending on what hardware
has been found in earlier steps.)
• For dual-boot or multiple-boot systems, the boot program will give the user an opportunity to
specify a particular OS to load, with a default choice if the user does not pick a particular OS
within a given time frame. The boot program then finds the boot loader for the chosen single-
boot OS, and runs that program as described in the previous bullet point.
• Once the kernel is running, it may give the user the opportunity to enter into single-user mode,
also known as maintenance mode. This mode launches very few if any system services, and
does not enable any logins other than the primary log in on the console. This mode is used
primarily for system maintenance and diagnostics.
Processes Concept
• A process is a program under execution.
• Its current activity is indicated by PC (Program Counter) and CPU registers.
The Process
Process memory is divided into four sections as shown in the figure below:
• The stack is used to store local variables, function parameters, function return values, return
address etc.
• The heap is used for dynamic memory allocation.
• The data section stores global and static variables.
• The text section comprises the compiled program code.
• Note that, there is a free space between the stack and the heap. When the stack is full, it grows
downwards and when the heap is full, it grows upwards.
Introduction to OS, System Structures 39
Process State
A Process has 5 states. Each process may be in one of the following states –
• New - The process is in the stage of being created.
• Ready - The process has all the resources it needs to run. It is waiting to be assigned to the
processor.
• Running – Instructions are being executed.
• Waiting - The process is waiting for some event to occur. For example, the process may be
waiting for keyboard input, disk access request, inter-process messages, a timer to go off, or a
child process to finish.
• Terminated - The process has completed its execution.
For each process there is a Process Control Block (PCB), which stores the
process-specificinformation as shown below –
Process State – The state of the process may be new, ready, running, waiting, and so on.
Program counter – The counter indicates the address of the next instruction to be executed for
this process.
CPU registers - The registers vary in number and type, depending on the computer
architecture. They include accumulators, index registers, stack pointers, and general-
purpose registers. Along with theprogram counter, this state information must be saved
when an interrupt occurs, to allow the process to becontinued correctly afterward.
Memory-management information – This include information such as the value of the base
and limit registers, the page tables, or the segment tables.
Accounting information – This information includes the amount of CPU and real time used,
time limits, account numbers, job or process numbers, and so on.
I/O status information – This information includes the list of I/O devices allocated to the
process, a listof open files, and so on.
The PCB simply serves as the repository for any information that may
Process Scheduling
These queues are generally stored as a linked list of PCBs. A queue header will
contain two pointers - the head pointer pointing to the first PCB and the tail pointer
pointing to the last PCB in the list. Each PCB has a pointer field that points to the next
process in the queue.
When a process is allocated to the CPU, it executes for a while and eventually quits,
interrupted, or waits for the completion of an I/O request. Since there are many
processes in the system, the disk may be busy with the I/O request of some other
process. The process therefore may have to wait for the disk in the device queue.
Introduction to OS, System Structures 41
A new process is initially put in the ready queue. It waits in the ready queue until it is
selected for execution and is given the CPU. Once the process is allocated the CPU
and is executing, one of several events could occur:
The process could issue an I/O request, and then be placed in an I/O queue.
The process could create a new sub process and wait for its termination.
The process could be removed forcibly from the CPU, as a result of an
interrupt, and be put backin the ready queue.
In the first two cases, the process eventually switches from the waiting state to the
ready state, and is then put back in the ready queue. A process continues this cycle
until it terminates, at which time it is removed from all queues.
Introduction to OS, System Structures 42
Schedulers
Schedulers are software which selects an available program to be assigned to
CPU.
A long-term scheduler or Job scheduler – selects jobs from the job pool (of
secondary memory,disk) and loads them into the memory.
If more processes are submitted, than that can be executed immediately, such
processeswill be in secondary memory. It runs infrequently, and can take time to
select the next process.
The short-term scheduler, or CPU Scheduler – selects job from memory and
assigns the CPUto it. It must select the new process for CPU frequently.
The medium-term scheduler - selects the process in ready queue and reintroduced
into thememory.
If the scheduler selects more I/O bound process, then I/O queue will be
full and readyqueue will be empty.
If the scheduler selects more CPU bound process, then ready queue will be
full and I/Oqueue will be empty.
Time sharing systems employ a medium-term scheduler. It swaps out the process
from ready queue and swap in the process to ready queue. When system loads get
high, this scheduler will swap one or more processes out of the ready queue for a few
Introduction to OS, System Structures 43
seconds, in order to allow smaller faster jobs to finish up quickly and clear the system.
Context Switch
The task of switching a CPU from one process to another process is called context
switching. Context-switch times are highly dependent on hardware support (Number of
CPU registers).
Whenever an interrupt occurs (hardware or software interrupt), the state of the currently
runningprocess is saved into the PCB and the state of another process is restored from the
PCB to the CPU.
Introduction to OS, System Structures 44
Context switch time is an overhead, as the system does not do useful work while switching.
Operations on Processes
Process Creation
A process may create several new processes. The creating process is called a parent
process, and the new processes are called the children of that process. Each of these new
processes may in turn create other processes. Every process has a unique process ID.
On typical Solaris systems, the process at the top of the tree is the ‘sched’ process with PID of
0. The ‘sched’ process creates several children processes – init, pageout and fsflush. Pageout
and fsflush are responsible for managing memory and file systems. The init process with a
PID of 1, serves as a parent process for all user processes.
A process will need certain resources (CPU time, memory, files, I/O devices) to
accomplish its task.When a process creates a subprocess, the subprocess may be able to obtain
its resources in two ways :
o The parent may have to partition its resources among its children
o Share the resources among several children.
There are two options for the parent process after creating the child:
Introduction to OS, System Structures 45
Wait for the child process to terminate and then continue execution. The parent makes a wait
() system call.
Run concurrently with the child, continuing to execute without waiting.
Two possibilities for the address space of the child relative to the parent:
The child may be an exact duplicate of the parent, sharing the same program and data segments
in memory. Each will have their own PCB, including program counter, registers, and PID.
This is the behaviour of the fork system call in UNIX.
The child process may have a new program loaded into its address space, with all new code
and data segments. This is the behaviour of the spawn system calls in Windows.
In UNIX OS, a child process can be created by fork() system call. The fork system
call, if successful, returns the PID of the child process to its parents and returns a zero
to the child process. If failure, it returns -1 to the parent. Process IDs of current process
or its direct parent can be accessed using the getpid( ) and getppid( ) system calls
respectively.
The parent waits for the child process to complete with the wait() system call. When the
child process completes, the parent process resumes and completes its execution.
Introduction to OS, System Structures 46
In windows the child process is created using the function createprocess( ). The
createprocess( ) returns 1, if the child is created and returns 0, if the child is not
created.
Process Termination
A process terminates when it finishes executing its last statement and asks the
operating system to delete it, by using the exit( ) system call. All of the resources
assigned to the process like memory, open files, and I/O buffers, are deallocated by
the operating system.
Note : Processes which are trying to terminate but which cannot because their parent
is not waiting for them are termed zombies. These are eventually inherited by init as
orphans and killed off. (Modern UNIX shells do not produce as many orphans and
zombies as older systems used to)
2. Useful for sending large block of data Useful for sending small data.
3. System call is used only to create shared System call is used during every read
memory and write operation.
4. Message is sent faster, as there are no Message is communicated slowly.
system calls
Shared Memory is faster once it is set up, because no system calls are required
and access occurs at normal memory speeds. Shared memory is generally
preferable when large amounts of information must be shared quickly on the
same computer.
Message Passing requires system calls for every message transfer, and is
therefore slower, but it is simpler to set up and works well across multiple
computers. Message passing is generally preferable when the amount and/or
frequency of data transfers is small.
Introduction to OS, System Structures 48
Shared-Memory Systems
The process should take care that the two processes will not write the data
to the shared memoryat the same time.
The data is passed via an intermediary buffer (shared memory). The producer puts
the data to the buffer and the consumer takes out the data from the buffer. A producer
can produce one item while the consumer is consuming another item. The producer
and consumer must be synchronized, so that the consumer does not try to consume an
item that has not yet been produced. In this situation, the consumer must wait until an
item is produced.
There are two types of buffers into which information can be put –
Unbounded buffer
Bounded buffer
With Unbounded buffer, there is no limit on the size of the buffer, and so on the
data produced byproducer. But the consumer may have to wait for new items.
With bounded-buffer – As the buffer size is fixed. The producer has to wait if the buffer
is full and theconsumer has to wait if the buffer is empty.
This example uses shared memory as a circular queue. The in and out are two pointers to
the array. Notein the code below that only the producer changes "in", and only the
consumer changes "out".
Message-Passing Systems
Message passing systems uses system calls for "send message" and "receive message".
A communication link must be established between the cooperating processes
before messages canbe sent.
There are three methods of creating the link between the sender and the receiver-
o Direct or indirect communication (namin)
o Synchronous or asynchronous communication (Synchronization)
o Automatic or explicit buffering.
Introduction to OS, System Structures 50
a) Naming
The processes that wants to communicate should have a way to refer each
other. ( using someidentity)
Direct communication the sender and receiver must explicitly know each others
name. The syntax forsend() and receive() functions are as follows-
are –
A mail box can be owned by the operating system. It must take steps to –
create a new mailbox
send and receive messages from mailbox
delete mailboxes.
b) Synchronization
The send and receive messages can be implemented as either blocking or non-
blocking.
Blocking (synchronous) send - sending process is blocked (waits)
until themessage is received by receiving process or the mailbox.
Non-blocking (asynchronous) send - sends the message and
continues (doesnotwait)
c) Buffering
when messages are passed, a temporary queue is created. Such queue can be of
three capacities:
Zero capacity – The buffer size is zero (buffer does not exist). Messages
are not stored in thequeue. The senders must block until receivers accept the
messages.
Bounded capacity- The queue is of fixed size(n). Senders must block if
the queue is full. Aftersending ‘n’ bytes the sender is blocked.
Unbounded capacity - The queue is of infinite capacity. The sender never blocks.
send(A, message) – send a message to mailbox A
receive(A, message) – receive a message from mailbox A