Ricardo Rocha
Department of Computer Science Faculty of Sciences
Operating Systems 2014/2015 Part I – Basic Concepts
Faculty of Sciences University of Porto
Slides based on the book
‘Operating System Concepts, 9th Edition,
Abraham Silberschatz, Peter B. Galvin and Greg Gagne, Wiley’
Chapters 1 and 2
Operating Systems 2014/2015 Part I – Basic Concepts
What is an Operating System?
Motivation
Hardware alone is not particularly easy to use, thus some kid of software is required
Different software programs usually require common operations to operate the hardware resources
A good idea would be to brought together into one piece of software the common functions of controlling and allocating hardware resources
DCC-FCUP # 1
common functions of controlling and allocating hardware resources
This common piece of software can be seen as the operating system
Operating Systems 2014/2015 Part I – Basic Concepts
What is an Operating System?
How can we then define an operating system or what is part of an operating system?
Sorry, but no universally accepted definition
A good approximation is “Everything a vendor ships when you order an operating system”, but varies wildly
A more restricted definition is “The one program running at all times on the
DCC-FCUP # 2
A more restricted definition is “The one program running at all times on the computer”, everything else is either a system program (ships with the operating system) or an application program
Operating Systems 2014/2015 Part I – Basic Concepts
What is an Operating System?
An operating system is what manages a computer’s hardware
Acts as an intermediary between the user and the hardware
Provides a basis for application programs
Some operating systems are designed to make the computer system convenient to use, others are designed to use the computer hardware in an efficient manner, and others to be some combination of the two
DCC-FCUP # 3
an efficient manner, and others to be some combination of the two
Mainframe operating systems are designed primarily to optimize hardware utilization
Personal computer (PC) operating systems support complex games, business applications, and everything in between
Mobile computer operating systems provide an environment in which a user can easily interface with the computer to execute programs
Operating Systems 2014/2015 Part I – Basic Concepts
What Operating Systems Should Do?
Shared computers, such as mainframes, workstations and/or servers, must keep all users happy
The operating system is designed to maximize resource utilization and to assure that all available CPU time, memory, and I/O are used efficiently and fairly between all users
PCs are optimized for the single-user experience rather than the
DCC-FCUP # 4
PCs are optimized for the single-user experience rather than the requirements of multiple users
The operating system is designed mostly for ease of use, with some attention paid to performance and almost none paid to resource utilization
Operating Systems 2014/2015 Part I – Basic Concepts
What Operating Systems Should Do?
Mobile computers, such as smartphones and tablets, are optimized for usability and battery life
The operating system is designed mostly for ease of use, with particular attention paid to resource utilization
Many computers, such as embedded computers in home devices and automobiles, have little or no user interface
DCC-FCUP # 5
automobiles, have little or no user interface
The operating system is designed to run with no/minimal user intervention
Operating Systems 2014/2015 Part I – Basic Concepts
Computer System Structure
A computer system can be divided into four main components:
Hardware – the basic system resources (CPU, memory, I/O devices, …)
Operating system – controls and coordinates use of hardware among various applications and users
Programs – define the way in which the system resources are used to
DCC-FCUP # 6
resources are used to solve the users’ needs (word processors, web browsers, database systems, video games, compilers, …)
Users (people, other programs/computers)
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Views
Operating system as a illusionist
Provide illusion of dedicated machine with infinite memory and infinite processors (make hardware limitations go away)
Operating system as a government
Allocate resources efficiently and fairly
DCC-FCUP # 7
Protect users from each other
Operating system as a complex system
Constant tension between simplicity, functionality and performance
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Principles
Operating system as a resource allocator/controller
Acts as a manager of all resources: CPU time, memory space, I/O devices, …
Decides between conflicting requests for efficient and fair resource use
Prevents errors and improper use of the computer
Especially important where many users access the same resources
DCC-FCUP # 8
Operating system as a facilitator
Provides facilities/services that everyone needs
Make application programming easier, faster, less error-prone
Especially concerned with the operation of various programs
Most features reflect both principles
For example, file system is needed by everyone (facilitator) but must be efficiently used and protected (controller)
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Major Components
Modern operating system usually include the following major components:
Process management
Memory management
Storage management
I/O management
DCC-FCUP # 9
Operating Systems 2014/2015 Part I – Basic Concepts
Process Management
Main activities
Creating and terminating both user and system processes
Suspending and resuming processes
Providing mechanisms for process communication
Providing mechanisms for process synchronization
Providing mechanisms for deadlock handling
DCC-FCUP # 10
Providing mechanisms for deadlock handling
Operating Systems 2014/2015 Part I – Basic Concepts
Memory Management
Main activities
Allocating and deallocating memory space as needed
Tracking which parts of memory are currently being used and by whom
Deciding which processes and data to move into and out of memory
Optimizing what is in memory and when
DCC-FCUP # 11
Operating Systems 2014/2015 Part I – Basic Concepts
Storage Management
Main activities
Providing uniform, logical view of information storage (abstracts physical properties into files and directories logical view)
Creating and deleting files and directories
Supporting primitives to manipulate files and directories
Mapping/backing up files onto nonvolatile secondary storage media
DCC-FCUP # 12
Mapping/backing up files onto nonvolatile secondary storage media
Supporting access control policies to determine who can access what
Operating Systems 2014/2015 Part I – Basic Concepts
I/O Management
Main activities
Hide peculiarities of hardware devices from the user
General device-driver interface
Drivers for specific hardware devices
Responsible for memory management of I/O including:
Buffering – storing data temporarily while it is being transferred
DCC-FCUP # 13
Buffering – storing data temporarily while it is being transferred
Caching – storing parts of data in faster storage for performance
Spooling – the overlapping of output of one job with input of other jobs
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Common Services
Operating systems provide an environment for the execution of programs and, for that, they provide specific services to programs and users
DCC-FCUP # 14
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Common Services
The services provided differ from one operating system to another, but we can identify common classes:
User interfaces – to allow effective operation and control of the system
Program execution – to load a program into memory and to run that program
I/O operations – to provide a means to do I/O operations
File systems – to allow effective manipulation of files and directories
DCC-FCUP # 15
File systems – to allow effective manipulation of files and directories
Communications – to allow exchange of information between processes on the same computer or between computers over a network
Error detection – to be constantly aware of possible errors that may occur in the CPU/ memory hardware, in I/O devices or in user programs in order to take the appropriate action to ensure correct and consistent computing
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Common Services
Another set of services exists not for helping the user but rather for ensuring the efficient operation of the system itself:
Resource allocation – when multiple processes are running concurrently, the available resources (such as CPU cycles, main memory, file storage, I/O devices) must be efficiently allocated to each of them
Accounting – to keep track of which users use how much and what kinds of computer resources
DCC-FCUP # 16
computer resources
Protection and security – to avoid concurrent processes to interfere with each other or with the OS itself and to secure the system from outsiders
Operating Systems 2014/2015 Part I – Basic Concepts
Computer Startup
Bootstrap program, generally known as firmware, is loaded at power-up or reboot
Typically stored in read-only memory (ROM or EPROM)
Initializes all aspects of the system
Loads operating system kernel and starts its execution
DCC-FCUP # 17
Once the kernel is loaded, it can start providing services to the users
Some services are provided outside of the kernel, by system processes that are loaded at boot time (on UNIX, the first system process is the init process that starts many other system processes)
Once this phase is complete, the system is fully booted, and starts
waiting for some event to occur
Operating Systems 2014/2015 Part I – Basic Concepts
Interrupts
The occurrence of an event is usually signaled by an interrupt from either the hardware or the software
Hardware devices may trigger an interrupt at any time by sending a signal to the CPU to communicate that they require attention from the OS
Software may trigger an interrupt by executing a special operation called a system call
DCC-FCUP # 18
When the CPU is interrupted, it suspends the current activity, saving its state, and immediately transfers execution to a fixed function called an interrupt handler to deal with the event
An interrupt vector contains the addresses of all the interrupt service routines
On completion, the CPU resumes the interrupted computation
Interrupt architecture must save the address of the interrupted instruction
Operating Systems 2014/2015 Part I – Basic Concepts
I/O Devices
General-purpose computer systems consist of several device controllers (hardware components) that are connected through a common bus
Some examples are the USB controller, the PCI controller, the IDE controller, the SCSI controller, …
Each device controller is in charge of a specific type of device (for example, a SCSI controller can be in charge of 4 SCSI devices)
DCC-FCUP # 19
A device controller maintains some local buffer storage and a set of special- purpose registers
The device controller is responsible for moving data between the devices it controls and its local buffer storage
To communicate with each device controller, operating systems require a specific device driver (software component)
The device driver understands the device controller and provides the rest of the operating system with a uniform interface to the device
Operating Systems 2014/2015 Part I – Basic Concepts
I/O Devices
To start an I/O operation, the device driver loads the appropriate registers within the device controller
The controller, in turn, examines the contents of these registers to determine what action to take (e.g., read a character from the keyboard)
The controller then starts the transfer of data from the device to its local buffer
Once the I/O operation has completed, the device controller informs the
DCC-FCUP # 20
Once the I/O operation has completed, the device controller informs the device driver via an interrupt
The device driver then returns control to the operating system
Operating Systems 2014/2015 Part I – Basic Concepts
Interrupt Timeline
DCC-FCUP # 21
Operating Systems 2014/2015 Part I – Basic Concepts
Direct Memory Access (DMA)
This form of interrupt-driven I/O is fine for moving small amounts of data but can produce high overhead when used for bulk data movement such as disk I/O
For high-speed I/O devices, able to transmit information at close to memory speeds, this problem is solved by using direct memory access
Examples of hardware devices that use DMA include disk drive controllers,
DCC-FCUP # 22
Examples of hardware devices that use DMA include disk drive controllers, graphics cards, network cards, sound cards, …
Device controller transfers blocks of data from its own buffer storage directly to main memory, without device driver (CPU) intervention
Only one interrupt is generated per block, to tell the device driver that the operation has completed, rather than the one interrupt per byte generated for low-speed devices
Operating Systems 2014/2015 Part I – Basic Concepts
Putting All Together
device driver memory
CPU
DCC-FCUP # 23
device controller
Operating Systems 2014/2015 Part I – Basic Concepts
Multiprogramming
One of the most important aspects of operating systems is the ability to have multiple programs running
Multiprogramming increases CPU utilization by organizing jobs so that the CPU can always execute one job. The idea is as follows:
The operating system begins to execute one job via job scheduling
DCC-FCUP # 24
Eventually, the job may have to wait for some task, such as an I/O operation
In a non-multiprogrammed system, the CPU would sit idle
In a multiprogrammed system, the operating system switches to another job.
When that job needs to wait, the CPU switches again to another job, and so on. Eventually, the first job finishes waiting and gets the CPU back.
As long as at least one job needs to execute, the CPU is never idle
Operating Systems 2014/2015 Part I – Basic Concepts
Multitasking (or Time Sharing)
Multiprogramming increases CPU utilization, but does not necessarily provide for user interaction with the computer system
Multitasking (or time sharing) is a logical extension of multiprogramming that increases response time in which CPU switches jobs so frequently that users can interact with each job while it is running
Gives the impression that the entire computer system is dedicated to a user’s
DCC-FCUP # 25
Gives the impression that the entire computer system is dedicated to a user’s use, even though it is being shared among many users
Time-sharing is based on the idea that while any single user would make inefficient use of a computer, a large group of users together would not
Developing a system supporting multitasking was, at the time, a
completely different concept: the state of each user and their programs
would have to be kept in the system and then switched between
quickly (response time should be < 1 second)
Operating Systems 2014/2015 Part I – Basic Concepts
CPU Protection
We cannot allow a user program to get stuck or fail and never return control back to the operating system
To accomplish this goal, we can use a timer
A timer can be set to interrupt the computer after a specified period
The operating system sets a counter
DCC-FCUP # 26
Every time the clock ticks, the counter is decremented
When the counter reaches 0, an interrupt occurs
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 to continue executing
Before turning over control back to the user, the operating system ensures that the timer is set to interrupt
Operating Systems 2014/2015 Part I – Basic Concepts
Dual-Mode Operation
A properly designed operating system must ensure that an incorrect or malicious program cannot cause other programs to execute incorrectly
Examples include software errors (division by zero, infinite loops, …), processes modifying parts of others or even parts of the operating system
The approach taken by most computer systems is to provide hardware support that allows us to differentiate among, at least, two separate
DCC-FCUP # 27
support that allows us to differentiate among, at least, two separate modes of operation:
User mode
Kernel mode (also called supervisor, system or privileged mode)
Dual-mode operation allows the operating system to protect itself and
other system components
Operating Systems 2014/2015 Part I – Basic Concepts
Dual-Mode Operation
A mode bit, provided by the hardware, indicates the current mode:
Allows to distinguish when system is running user code or kernel code
Some instructions, designated as privileged instructions, are only executable in kernel mode (instructions for I/O control, timer management, interrupt management, …)
Interrupts or system calls change mode to kernel, return from interrupts or system calls reset it to user mode
DCC-FCUP # 28
system calls reset it to user mode
Operating Systems 2014/2015 Part I – Basic Concepts
System Calls
System calls provide an interface to the operating system services
Typically written in a high-level language (C or C++)
System calls are mostly accessed via a high-level Application Program Interface (API) rather than direct system call use
Most common APIs are Win32 API for Windows, POSIX API for POSIX- based systems (including virtually all versions of UNIX, Linux, and Mac OS X),
DCC-FCUP # 29
based systems (including virtually all versions of UNIX, Linux, and Mac OS X), and Java API for the Java virtual machine (JVM)
Why use APIs rather than invoking directly the system calls?
Program portability, the same program must compile and run on any system that supports the same API
System calls can be more detailed and difficult to work with than the API available to an application programmer (nevertheless, many of the POSIX and Windows APIs are similar to the native system calls provided by the OS)
Operating Systems 2014/2015 Part I – Basic Concepts
Example of System Calls
System call sequence to copy the contents of one file to another file
DCC-FCUP # 30
Operating Systems 2014/2015 Part I – Basic Concepts
System Call Implementation
Typically, a number is associated with each system call and the system call interface maintains a table indexed according to these numbers
The system call interface invokes the intended system call in the OS kernel and returns status of the system call and any return values
The caller need to know nothing about how the system call is implemented
DCC-FCUP # 31
The caller need to know nothing about how the system call is implemented
Just needs to obey API and understand what OS will do as a result
Most details of OS interface are hidden from the programmer by the API
Operating Systems 2014/2015 Part I – Basic Concepts
System Call Implementation
DCC-FCUP # 32
Operating Systems 2014/2015 Part I – Basic Concepts
Examples of Types of System Calls
System calls can be grouped roughly into six major categories:
Process control
File manipulation
Device manipulation
DCC-FCUP # 33
Device manipulation
Information maintenance
Communication
Protection
Operating Systems 2014/2015 Part I – Basic Concepts
Operating System Structure
A system as large and complex as a modern operating system must be engineered carefully if it is to function properly and be modified easily
A common approach is to partition the task into small components, or modules, rather than have one monolithic system
Each of these modules should be a well-defined portion of the system,
DCC-FCUP # 34
Each of these modules should be a well-defined portion of the system,
with carefully defined inputs, outputs, and functions
Operating Systems 2014/2015 Part I – Basic Concepts
Simple Structure – MS-DOS
Designed to provide the most functionality in the least space
Although it has some structure, its interfaces and levels of functionality are not well separated (not divided into modules)
Application programs are able to access the basic I/O routines to write directly to
DCC-FCUP # 35
the basic I/O routines to write directly to the display and disk drives
Vulnerable to errant or malicious programs, causing entire system crashes when user programs fail
No dual mode and no hardware protection because the Intel 8088 for which it was written provided no such support
Operating Systems 2014/2015 Part I – Basic Concepts
Simple Structure – Original UNIX
Limited by hardware functionality, the kernel provides an enormous amount of functionality combined into a single monolithic structure
Everything below the system call interface and above hardware is the kernel
Difficult to implement and maintain
Very little overhead in system call interface or in communication within the kernel
DCC-FCUP # 36
kernel
Operating Systems 2014/2015 Part I – Basic Concepts
Layered Approach – Multics + UNIX
The operating system is divided into a number of layers, each built on top of lower layers
The bottom layer is the hardware and the highest layer is the user interface
Layers are selected such that each layer uses functions and services of only lower level layers (this simplifies debugging and system verification but requires careful planning)
DCC-FCUP # 37
Tends to be less efficient (e.g., when a program executes an I/O operation, it executes a system call that is trapped to the I/O layer, which calls the memory- management layer, which in turn calls the CPU-scheduling layer, which is only then passed to the hardware)
Operating Systems 2014/2015 Part I – Basic Concepts
Microkernels – Mach
Removes all nonessential components from the kernel and moves them into user space, resulting in a smaller kernel
Little consensus regarding which services should remain in the kernel
Main function is to provide communication between the running programs and the various services that also run in user space (performance overhead since all communications require messages through the microkernel)
DCC-FCUP # 38
Application Program
File System
Device Driver
Interprocess Communication
memory managment
CPU scheduling
messages messages
microkernel
hardware
user mode
kernel mode
More reliable and
secure (less code runs in kernel mode)
Easier to extend and to port (all new services are added to user space)
Operating Systems 2014/2015 Part I – Basic Concepts
Modules – Solaris + Linux + Windows
Kernel provides the core services while other services are implemented dynamically via modules, either at boot time or during run time
The kernel has only core functions and knowledge of how to load and communicate with other modules (similar to the microkernel approach)
Modules are loadable as needed within the kernel
Any module can call any
DCC-FCUP # 39
other module and talks directly to the others over well-defined interfaces (more efficient than the microkernel approach)
Most modern operating systems implement loadable kernel modules
Operating Systems 2014/2015 Part I – Basic Concepts
Hybrid Systems
Most modern operating systems actually not adopt a single, strictly defined structure. Instead, they combine different structures, resulting in hybrid systems:
Linux and Solaris are monolithic, since they have the kernel in a single address space for efficient performance, but they are also modular, so that new functionality can be dynamically added to the kernel
Windows is largely monolithic as well (again for performance reasons), but it
DCC-FCUP # 40
Windows is largely monolithic as well (again for performance reasons), but it also provides support for dynamically loadable kernel modules and retains some behavior typical of microkernel systems (supports separate subsystems that run as user-mode processes)
Apple Mac OS X is a hybrid layered system. The top layers include the user interface and a set of application environments and services. The kernel layer consists primarily of the Mach microkernel and the BSD UNIX kernel, plus I/O kit and dynamically loadable modules (called kernel extensions)
Operating Systems 2014/2015 Part I – Basic Concepts
System Virtual Machines
Software that emulates an abstract machine (e.g., VMware, Virtual PC, VirtualBox, Parallels Desktop)
Supports the execution of an entire OS and its applications
Give programs illusion that they own the machine
Make it look like hardware
DCC-FCUP # 41
has features you want
Useful for OS development
When OS crashes, restricted to one VM
Can aid testing programs on other OSs