Chapter 2: System Structures: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Chapter 2: System Structures: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Chapter 2: System Structures: Silberschatz, Galvin and Gagne ©2013 Operating System Concepts - 9 Edition
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
System Calls
Programming interface to the services provided by the OS
Three 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), and Java API for the Java virtual machine
(JVM)
(Note that the system-call names used throughout this text are
generic)
Operating System Concepts – 9th Edition 2.2 Silberschatz, Galvin and Gagne ©2013
Example of System Calls
System call sequence to copy the contents of one file to another file
Operating System Concepts – 9th Edition 2.3 Silberschatz, Galvin and Gagne ©2013
Example of Standard API
Operating System Concepts – 9th Edition 2.4 Silberschatz, Galvin and Gagne ©2013
System Call Implementation
Typically, a number associated with each system call
System-call interface maintains a table indexed according to
these numbers
The caller need know nothing about how the system call is
implemented
Just needs to obey API and understand what OS will do as a
result call
Most details of OS interface hidden from programmer by API
Managed by run-time support library (set of functions built into
libraries included with compiler)
Operating System Concepts – 9th Edition 2.5 Silberschatz, Galvin and Gagne ©2013
API – System Call – OS Relationship
Operating System Concepts – 9th Edition 2.6 Silberschatz, Galvin and Gagne ©2013
System Call Parameter Passing
Often, more information is required than simply identity of desired
system call
Exact type and amount of information vary according to OS and
call
Operating System Concepts – 9th Edition 2.7 Silberschatz, Galvin and Gagne ©2013
Parameter Passing via Table
Operating System Concepts – 9th Edition 2.8 Silberschatz, Galvin and Gagne ©2013
Types of System Calls
Process control
end, abort
load, execute
create process, terminate process
get process attributes, set process attributes
wait for time
wait event, signal event
allocate and free memory
Operating System Concepts – 9th Edition 2.9 Silberschatz, Galvin and Gagne ©2013
Types of System Calls
File management
create file, delete file
open, close file
read, write, reposition
get and set file attributes
Device management
request device, release device
read, write, reposition
get device attributes, set device attributes
logically attach or detach devices
Operating System Concepts – 9th Edition 2.10 Silberschatz, Galvin and Gagne ©2013
Types of System Calls (Cont.)
Information maintenance
get time or date, set time or date
get system data, set system data
get and set process, file, or device attributes
Communications
create, delete communication connection
send, receive messages if message passing model to host name or
process name
From client to server
Shared-memory model create and gain access to memory regions
transfer status information
attach and detach remote devices
Operating System Concepts – 9th Edition 2.11 Silberschatz, Galvin and Gagne ©2013
Types of System Calls (Cont.)
Protection
Control access to resources
Get and set permissions
Allow and deny user access
Operating System Concepts – 9th Edition 2.12 Silberschatz, Galvin and Gagne ©2013
Examples of Windows and
Unix System Calls
Operating System Concepts – 9th Edition 2.13 Silberschatz, Galvin and Gagne ©2013
Standard C Library Example
C program invoking printf() library call, which calls write() system call
Operating System Concepts – 9th Edition 2.14 Silberschatz, Galvin and Gagne ©2013
Operating System Design
and Implementation
Operating System Concepts – 9th Edition 2.15 Silberschatz, Galvin and Gagne ©2013
Operating System Design and
Implementation (Cont.)
Operating System Concepts – 9th Edition 2.16 Silberschatz, Galvin and Gagne ©2013
Implementation
Much variation
Early OSes in assembly language
Then system programming languages like Algol, PL/1
Now C, C++
Actually usually a mix of languages
Lowest levels in assembly
Main body in C
Systems programs in C, C++, scripting languages like PERL,
Python, shell scripts
More high-level language easier to port to other hardware
But slower
Emulation can allow an OS to run on non-native hardware
Operating System Concepts – 9th Edition 2.17 Silberschatz, Galvin and Gagne ©2013
Operating System Structure
General-purpose OS is very large program
Various ways to structure one as follows
1. Simple Structure
2. Layered Approach
3. Microkernel Approach
4. Module Based Approach
5. Hybrid Systems
Operating System Concepts – 9th Edition 2.18 Silberschatz, Galvin and Gagne ©2013
1. Simple Structure
I.e. MS-DOS – written to provide
the most functionality in the least
space
Not divided into modules
Although MS-DOS has some
structure, its interfaces and
levels of functionality are not
well separated
Drawback : Difficult to Implement
and Maintain and also not
Scalable
Operating System Concepts – 9th Edition 2.19 Silberschatz, Galvin and Gagne ©2013
2. Layered Approach
The operating system is
divided into a number of
layers (levels), each built
on top of lower layers.
The bottom layer (layer 0),
is the hardware; the
highest (layer N) is the
user interface.
Operating System Concepts – 9th Edition 2.20 Silberschatz, Galvin and Gagne ©2013
2. Layered Approach ….
Advantages:
1. Operating System is decomposable and therefore effects
separation of concerns and different abstraction levels.
2. Allows good maintenance, where you can make changes
without affecting layer interfaces
Disadvantages:
1. It is difficult to exactly assign of functionalities to the correct
and appropriate layer
2. Because of having too many layers, performance of the
system is degraded
Operating System Concepts – 9th Edition 2.21 Silberschatz, Galvin and Gagne ©2013
3. Microkernel System Structure
Key Features:
1. Essential and Non-Essential Services/Components of Operating System are
Separated
2. Non-Essential Services/Components are Implemented as system and user-level
programs
3. Essential/Key Services are implemented as separate module known as
microkernel [Smaller Kernel]
4. Mach Operating example of microkernel
5. Communication takes place between user modules using Message Passing
6. Client/User Level Program Interact/communicate with servers indirectly by
exchanging messages via microkernel [See Next Slide]
Operating System Concepts – 9th Edition 2.22 Silberschatz, Galvin and Gagne ©2013
3. Microkernel System Structure ….
messages messages
microkernel
hardware
Operating System Concepts – 9th Edition 2.23 Silberschatz, Galvin and Gagne ©2013
3. Microkernel System Structure ….
Benefits:
Easier to extend a microkernel
Easier to port the operating system to new architectures
More reliable (less code is running in kernel mode)
More secure-If a service fails rest of the OS remain untouched
Detriments:
Performance overhead of user space to kernel space communication
Operating System Concepts – 9th Edition 2.24 Silberschatz, Galvin and Gagne ©2013
4. Modules Based Approach
Most modern operating systems implement loadable kernel modules
Uses object-oriented approach
Each core component is separate
Each talks to the others over known interfaces
Each is loadable as needed within the kernel
Operating System Concepts – 9th Edition 2.25 Silberschatz, Galvin and Gagne ©2013
Solaris Modular Approach
Operating System Concepts – 9th Edition 2.26 Silberschatz, Galvin and Gagne ©2013
5. Hybrid Systems
Most modern operating systems actually not one pure model
Hybrid combines multiple approaches to address performance, security,
usability needs
Linux and Solaris kernels in kernel address space, so monolithic, plus
modular for dynamic loading of functionality
Windows mostly monolithic, plus microkernel for different subsystem
personalities
Apple Mac OS X hybrid, layered, Aqua UI plus Cocoa programming
environment
Below is kernel consisting of Mach microkernel and BSD Unix parts,
plus I/O kit and dynamically loadable modules (called kernel
extensions)
Operating System Concepts – 9th Edition 2.27 Silberschatz, Galvin and Gagne ©2013