Chapter 1: Introduction
Chapter 1: Introduction
What Operating Systems Do
Computer-System Organization
Computer-System Architecture
Operating-System Structure
Operating-System Operations
Process Management
Memory Management
Storage Management
Protection and Security
Distributed Systems
Special-Purpose Systems
Computing Environments
Open-Source Operating Systems
What is an Operating System?
A program that acts as an intermediary between a user of a
computer and the computer hardware
Operating system goals:
Execute user programs and make solving user problems easier
Make the computer system convenient to use
Use the computer hardware in an efficient manner
Computer System Structure
Computer system can be divided into four components
Hardware – provides basic computing resources
CPU, memory, I/O devices
Operating system
Controls and coordinates use of hardware among various applications and
users
Application programs – define the ways in which the system resources
are used to solve the computing problems of the users
Word processors, compilers, web browsers, database systems, video games
Users
People, machines, other computers
Four Components of a Computer System
Operating System Definition
OS is a resource allocator
Manages all resources
Decides between conflicting requests for efficient and fair resource
use
OS is a control program
Controls execution of programs to prevent errors and improper use of
the computer
Operating System Definition (Cont)
No universally accepted definition
“ “The one program running at all times on the computer” is
the kernel. Everything else is either a system program (ships
with the operating system) or an application program.
Computer System Organization
Computer-system operation
One or more CPUs, device controllers connect through common bus
providing access to shared memory
Concurrent execution of CPUs and devices competing for memory cycles
Computer-System Operation
I/O devices and the CPU can execute concurrently
Each device controller is in charge of a particular device type
Each device controller has a local buffer
CPU moves data from/to main memory to/from local buffers
I/O is from the device to local buffer of controller
Device controller informs CPU that it has finished its operation by
causing an interrupt
Computer Startup
bootstrap program is loaded at power-up or reboot
Typically stored in ROM or EPROM, generally known as firmware
Initializes all aspects of system including the CPU registers,
device controllers, and memory contents
Locates and loads operating system kernel and starts execution
of the first process (such as “init”) and waits for events to
occur.
Common Functions of Interrupts
Interrupt transfers control to the interrupt service routine
generally, through the interrupt vector, which contains the
addresses of all the service routines
Interrupt architecture must save the address of the interrupted
instruction
Incoming interrupts are disabled while another interrupt is
being processed to prevent a lost interrupt
A trap is a software-generated interrupt caused either by an
error such as divide by 0 or a user request (system call).
An operating system is interrupt driven
Interrupt Handling
The operating system preserves the state of the CPU by storing
registers and the program counter
Separate segments of code determine what action should be
taken for each type of interrupt
I/O Structure
After I/O starts, control returns to user program without
waiting for I/O completion
System call – request to the operating system to allow user to
wait for I/O completion
Device-status table contains entry for each I/O device
indicating its type, address, and state
Operating system indexes into I/O device table to determine
device status and to modify table entry to include interrupt
Direct Memory Access Structure
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
Storage Structure
Main memory – only large storage media that the CPU can access
directly
Programs and data cannot reside in main memory permanently
because:
Main memory is limited (too small) to store all programs and data
permanently
Main memory is volatile
So secondary storage is provided – extension of main memory that
provides large nonvolatile storage capacity
Magnetic disks – rigid metal or glass platters covered with magnetic
recording material
Disk surface is logically divided into tracks, which are subdivided into
sectors
The disk controller determines the logical interaction between the
device and the computer
Storage Hierarchy
Storage systems organized in hierarchy by
Speed
Cost
Volatility
The higher levels in the hierarchy are expensive but fast. As we move
down the hierarchy, the cost per bit generally decreases, whereas the
access time generally increases.
Caching – copying information into faster storage system; main
memory can be viewed as a last cache for secondary storage
Storage-Device Hierarchy
Caching
Important principle, performed at many levels in a computer
(in hardware, operating system, software)
Information in use copied from slower to faster storage
temporarily
Faster storage (cache) checked first to determine if
information is there
If it is, information used directly from the cache (fast)
If not, data copied to cache and used there
Cache smaller than storage being cached
Cache management important design problem
Cache size and replacement policy
How a Modern Computer Works
Computer-System Architecture
Most systems use a single general-purpose processor
Most systems have special-purpose processors as well
Multiprocessors systems growing in use and importance
Also known as parallel systems, tightly-coupled systems
Advantages include
1. Increased throughput
2. Economy of scale
3. Increased reliability – graceful degradation or fault tolerance
Two types
1. Asymmetric Multiprocessing
2. Symmetric Multiprocessing
Symmetric Multiprocessing Architecture
A Dual-Core Design
Distributed Systems
Computation is distributed among several processors. In contrast to
tightly-coupled systems, the processors do not share a clock or
memory. Each has its own local memory.
Communication is via a network. These systems are termed loosely-
coupled or distributed systems. The processors vary in size and
function and are called nodes.
Advantages of distributed systems:
Reliability: If one node fails, the remaining nodes can continue operating.
So by building enough redundancy, the system will not fail if one or more
nodes fail (e.g. redundant web servers).
Computation speedup: Computation can be distributed among various
nodes to run concurrently (e.g. load balanced web servers).
Distributed Systems (contd.)
Resource Sharing: Software, data, and hardware resources can be
shared. E.g. data files in node A can be accessed by a user at node
B. Files can be printed at a shared laser printer.
Communication: Processes at various nodes can exchange
information.
Clustered Systems
Are a form of distributed systems. Composed of 2 or more
independent machines coupled together.
Usually sharing storage via a storage-area network (SAN)
Provides a high-availability service which survives failures
Asymmetric clustering has one machine in hot-standby mode while other
machine/server run applications. The hot-standby machine only monitors
the active server. If it fails, the hot-standby machine becomes the active
server.
Symmetric clustering has multiple nodes running applications, monitoring
each other
Some clusters are for high-performance computing (HPC)
Applications must be written to use parallelization
Clustered Systems (contd.)
An example is the Beowulf cluster where the cluster master node does the
management and provisioning and a set of compute nodes that do computations.
Beowulf Clusters are scalable performance clusters based on commodity
hardware, on a private network, with open source software (Linux)
infrastructure. Each consists of a cluster of PCs or workstations dedicated to
running high-performance computing tasks.
Operating System Structure
Multiprogramming needed for efficiency
Single user cannot keep CPU and I/O devices busy at all times
Multiprogramming organizes jobs (code and data) so CPU always
has one to execute
A subset of total jobs in system is kept in memory
One job selected and run via job scheduling
When it has to wait (for I/O for example), OS switches to
another job
Operating System Structure (Cont.)
Timesharing (multitasking) is logical extension in which CPU switches
jobs so frequently that users can interact with each job while it is running,
creating interactive computing
Response time should be < 1 second
Each user has at least one program executing in memory process
If several jobs ready to run at the same time CPU scheduling
If processes don’t fit in memory, swapping moves them in and out to
run
Virtual memory allows execution of processes not completely in
memory
Memory Layout for Multiprogrammed System
Operating-System Operations
Interrupt driven by hardware
Software error or request creates exception or trap
Division by zero, request for operating system service
Other process problems include infinite loop, processes modifying
each other or the operating system
Dual-mode operation allows OS to protect itself and other system
components
User mode and kernel mode
Mode bit provided by hardware
Provides ability to distinguish when system is running user code or kernel
code
Some instructions designated as privileged, only executable in kernel mode
System call changes mode to kernel, return from call resets it to user
Transition from User to Kernel Mode
Timer to prevent infinite loop / process hogging resources
Set interrupt after specific period
Operating system decrements counter
When counter zero generate an interrupt
Set up before scheduling process to regain control or terminate program
that exceeds allotted time
Process Management
A process is a program in execution. It is a unit of work within the
system. Program is a passive entity, process is an active entity.
Process needs resources to accomplish its task
CPU, memory, I/O, files
Initialization data
Process termination requires reclaim of any reusable resources
Single-threaded process has one program counter specifying
location of next instruction to execute
Process executes instructions sequentially, one at a time, until
completion
Multi-threaded process has one program counter per thread
Typically system has many processes, some user, some operating
system running concurrently on one or more CPUs
Concurrency by multiplexing the CPUs among the processes /
threads
Process Management Activities
The operating system is responsible for the following activities in
connection with process management:
Creating and deleting both user and system processes
Suspending and resuming processes
Providing mechanisms for process synchronization
Providing mechanisms for process communication
Providing mechanisms for deadlock handling
Memory Management
All data in memory before and after processing
All instructions required in memory in order to execute
Memory management activities
Keeping track of which parts of memory are currently being used and
by whom
Deciding which processes (or parts thereof) and data to move into
and out of memory
Allocating and deallocating memory space as needed
Storage Management
OS provides uniform, logical view of information storage
Abstracts physical properties to logical storage unit - file
Each medium is controlled by device (i.e., disk drive, tape drive)
Varying properties include access speed, capacity, data-transfer rate, access
method (sequential or random)
File-System management
Files usually organized into directories
Access control on most systems to determine who can access what
OS activities include
Creating and deleting files and directories
Primitives to manipulate files and directories
Mapping files onto secondary storage
Backup files onto stable (non-volatile) storage media
Mass-Storage Management
Usually disks used to store data that does not fit in main memory or data
that must be kept for a “long” period of time
Entire speed of computer operation hinges on disk subsystem and its
algorithms
OS activities
Free-space management
Storage allocation
Disk scheduling
Some storage need not be fast
Tertiary storage includes optical storage, magnetic tape
Varies between WORM (write-once, read-many-times) and RW (read-
write)
Performance of Various Levels of Storage
Movement between levels of storage hierarchy can be explicit or
implicit
Migration of Integer A from Disk to Register
Multitasking environments must be careful to use most recent
value, no matter where it is stored in the storage hierarchy
Multiprocessor environment must provide cache coherency in
hardware such that all CPUs have the most recent value in their
cache
Distributed environment situation even more complex
Several copies of a datum can exist
Various solutions covered in Chapter 17
I/O Subsystem
One purpose of OS is to hide peculiarities of hardware devices
from the user
I/O subsystem responsible for
Memory management of I/O including buffering (storing data
temporarily while it is being transferred), and spooling (the
overlapping of output of one job with input of other jobs)
General device-driver interface
Drivers for specific hardware devices
Protection and Security
Protection – any mechanism for controlling access of processes or
users to resources defined by the OS.
It means being able to distinguish between authorized and
unauthorized access. E.g. userid/password, smart cards with
biometrics data etc.
A system can have adequate protection (authorization) and still
be prone to failure and inappropriate access (e.g. if a user’s
userid/password is stolen). Then data can be copied or deleted.
Protection and Security
Security – It is the job of security to defend a system against
internal and external attacks.
Huge range, including denial-of-service, worms, viruses, identity
theft, theft of service
While defending against some of these attacks may be considered
to be an O/S function on some systems, it is left to specialized
software on other systems (viruses, malware etc.) such as
Norton’s Security Suite.
Protection and Security
Most O/S’ maintain UIDs and GIDs to generally first distinguish among
users, to determine who can do what:
User identities (user IDs, security IDs) include name and associated
number, one per user
User ID then associated with all files, processes of that user to
determine access control
Group identifier (group ID) allows set of users to be defined and
controls managed, then also associated with each process, file. E.g.
in UNIX a file owner may perform all operations on a file while the
group members may only be allowed to read a file.
Privilege escalation allows user to change to effective ID with more
rights
I/O Protection
The I/O system must protect against either accidental or
deliberate erroneous I/O.
All I/O instructions are privileged instructions.
User applications are not allowed to perform I/O in user mode -
All I/O requests are handled through system calls that must be
performed in kernel mode.
Memory Protection
Need to:
1. Protect the interrupt vector from modification by a user program.
2. Protect the Interrupt Service Routines (ISRs) from modification.
3. Protect user programs from one another.
Memory Protection
There are two registers: base and limit.
Base register is the smallest legal physical memory.
Limit register is the size of the range.
Memory Protection
Every CPU address generated in user mode is compared with the base
and limit registers.
Note: Base and limit registers can only be loaded by O/S which uses
a privileged instruction to do so.
CPU Protection
CPU protection is needed to prevent a user program from getting
stuck in an infinite loop and never returning control to the O/S.
A timer is used to prevent this. The timer is set to interrupt, say
every N msecs. The O/S then switches the CPU to another process in
a multitasking O/S.
Loading/setting a timer is a privileged instruction.
Special Purpose Systems
Real-time Embedded Systems
Found in car engines, microwave ovens etc. They have specific
tasks and the systems they run on are usually primitive and so
the O/S provides limited features. They have little or no GUI.
Embedded systems almost always run RTOS. This is used when
rigid time requirements have been placed on the operation of
the CPU or flow of data.
Sensors bring data to the computer which then analyzes this
data. E.gs of real-time system include medical imaging
systems, weapon systems, automobile engine fuel injection
systems.
Special Purpose Systems
Special Purpose Systems
Handheld Systems
Include smart phones such as iPhones (iOS) and Androids.
Challenges are due to limited size of such devices. Their small size leads to a
small amount of memory, slower CPUs, and small display screens.
Memory is between 2-4 GB and so OS and apps need to manage memory
efficiently.
CPUs in handhelds run at a fraction of the speed of a CPU in a PC. Faster CPUs
require more power which means a larger battery, which requires more space
and would need to be recharged frequently. So OS and apps must be designed
not to tax the CPU.
Lack of physical space limits I/P methods to small screen-based keyboards and
touch screens.
Small screens mean that only a subset of a web page is delivered and displayed on
the handheld device.
Computing Environments
Traditional computing
Web technologies are stretching the boundaries of traditional
computing.
Company portals provide web accessibility to their internal
servers. Smart phones can connect wirelessly to their
company portals.
High-speed home networks connect multiple machines,
including mobile devices wirelessly networked through Wifi
Router/Cable Modem etc.
Computing Environments (Cont)
Client-Server Computing
Evolved from the move away from centralized
computing with terminals.
We have two types: compute servers and file servers.
Compute-server provides an interface to client to
request services such as read data (i.e. database)
File-server provides file-system interface for
clients to create, update, read, and delete files
(e.g. web server).
Peer-to-Peer Computing
Another model of distributed system
P2P does not distinguish clients and servers
Instead all nodes are considered peers
May each act as client, server or both
Advantage over traditional client-server system is that the server is a
bottleneck. But in a P2P system, services can be provided by several
nodes.
Node must first join a P2P network
Registers its service with central lookup service. Any node needing service first
contacts the lookup service to determine which node provides the service and
then then client node directly communicates with the service provider. This is a
hybrid approach.
E.g. file-sharing service Napster where the central lookup server maintains an
index of all files stored on peer nodes, with the exchange of files taking place
between peer nodes.
Peer-to-Peer Computing
Peer-to-Peer Computing
Another approach is to have a client first discover the node that
provides the desired service by broadcasting a request for 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 discover protocol must be provided that
allows peers to discover services offered by peers. This is totally
distributed approach.
E.g. Gnutella
Peer-to-Peer Computing
Web-Based Computing
Web has become ubiquitous
PCs used to be more prevalent devices but now mobile devices
(e.g. smart phones and tablets) are more prevalent modes of
access
Now load balancers are used to manage web traffic among similar
servers
Use of operating systems like Windows 95, client-side, have
evolved into Linux and Windows XP, which can be clients and
servers
Web-Based Computing
Open-Source Operating Systems
Operating systems made available in source-code format rather
than just binary closed-source
Counter to the copy protection and Digital Rights Management
(DRM) movement
Started by Free Software Foundation (FSF), which has “copyleft”
GNU Public License (GPL)
Examples include GNU/Linux, BSD UNIX (including core of Mac OS
X), and Sun Solaris
End of Chapter 1