Chapter1 Os
Chapter1 Os
Module I
Non Kernel
OS (User necessary functions)
Core of OS
Kernel
(Sys. necessary functions)
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.
i. 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.
iii. 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).
iv. Users of hand held systems, expects the OS to be designed for ease of use
and performance per amount of battery life.
v. Other systems like embedded systems used in home devies (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. i.
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
different resources required during execution of a program. There can be conflicting
request for these resources by different programs running in same system. The OS
assigns the resources to the requesting program depending on the priority.
ii. Control Program – The OS is a control program and manage the execution of user
program to prevent errors and improper use of the computer.
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.
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
interrupt
Processor
IVT
Interrupt
Service
Routine
Stored at a fixed
location
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.
The wide variety of storage systems in a computer system can be organized in a hierarchy
as shown in the figure, according to speed, cost and capacity. The higher levels are expensive,
but they are fast. As we move down the hierarchy, the cost per bit generally decreases, whereas
the access time and the capacity of storage generally increases.
In addition to differing in speed and cost, the various storage systems are either volatile
or nonvolatile. Volatile storage loses its contents when the power to the device is removed. In
the absence of expensive battery and generator backup systems, data must be written to
nonvolatile storage for safekeeping. In the hierarchy shown in figure, the storage systems above
the electronic disk are volatile, whereas those below are nonvolatile.
I/O Structure
A large portion of operating system code is dedicated to managing I/O, both because of
its importance to the reliability and performance of a system and because of the varying nature of
the devices.
Every device have 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
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 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 HP NonStop 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 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.
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 computing cores on a single chip.
Such systems are called multicore systems . They are more efficient than multiple
chips with single core, since the communication between processors within a chip is
more 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.
Other forms of clusters include parallel clusters and clustering over a wide-area
network (WAN). Parallel clusters allow multiple hosts to access the same data on the
shared storage. Cluster technology is changing rapidly with the help of SAN(storage-
area networks). Using SAN resources can be shared with dozens of systems in a
cluster, that are separated by miles.
Operating-System Structure
One of the most important aspects of operating systems is the ability to multiprogram.
A single user cannot keep either the CPU or the I/O devices busy at all times.
Multiprogramming increases CPU utilization by organizing jobs, so that the CPU
always has one to execute.
Job
Pool
locatio
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.
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 signaled 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.
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.
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.
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.
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 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.
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 are 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. Files may be free-form (for example, text files), or they may
be formatted rigidly (for example, fixed fields).
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 (nonvolatile) 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 formatters—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
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 system— the cache—as temporary data. When a particular piece of information
is required, first we check whether it is in the cache. If it is, we use the information
directly from the cache; if it is not in cache, we use the information from the source,
putting a copy in the cache under the assumption that we will need it again soon.
Distributed Systems
A distributed system is a collection of systems that are networked to provide the users
with access to the various resources in the network. Access to a shared resource
increases computation speed, functionality, data availability, and reliability.
The transportation media to carry networks are also varied. They include copper
wires, fiber 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.
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.
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.
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 svstem.
• 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 design of an operating system is a major task. It is important that the goals of the
new system be well defined before the design of OS begins. These goals form the
basis for choices among various algorithms and strategies.