OPERATING SYSTEMS
Chapter 2 -
Operating System Structures
Week 03+04, CS3104-Operating Systems
Syed Sherjeel Ahmad Gilani, F-2018
Operating-System Structures
Operating System Services
User Operating System Interface
System Calls
Types of System Calls
System Programs
Operating System Design and Implementation
Operating System Structure
Virtual Machines
System Boot
2 Operating Systems, F-2018
Objectives
To describe the services an operating system
provides to users, processes, and other
systems
To discuss the various ways of structuring an
operating system
To explain how operating systems are installed
and customized and how they boot
3 Operating Systems, F-2018
A View of Operating System Services
4 Operating Systems, F-2018
Operating System Services
Operating systems provide an environment for
execution of programs and services to programs
and users
Following are the operating-system services
provided to the users:
User interface - Almost all operating systems
have a user interface (UI). Varies between
Command-Line (CLI),
Graphics User Interface (GUI),
Batch
5 Operating Systems, F-2018
Operating System Services
Program execution - The system must be able
to load a program into memory and to run that
program, end execution, either normally or with
error
I/O operations - A running program may require
I/O, which may involve a file or an I/O device
File-system manipulation - Programs need to
read and write files and directories, create and
delete them, search them, list file Information,
permission management.
6 Operating Systems, F-2018
Operating System Services (Cont.)
Communications – Processes may exchange
information, on the same computer or between
computers over a network
Communications may be via shared memory or through
message passing
Error detection – OS needs to be constantly
aware of possible errors
May occur in the CPU and memory hardware, in I/O
devices, in user program
For each type of error, OS should take the appropriate
action to ensure correct computing
Debugging facilities can greatly enhance the user’s and
programmer’s abilities to efficiently use the system
7 Operating Systems, F-2018
Operating System Services (Cont.)
Another set of OS functions exists for ensuring the efficient
operation of the system itself via resource sharing
Resource allocation - When multiple users or multiple
jobs running concurrently, resources must be allocated to
each of them
Many types of resources:
Some may have special allocation code,
(i.e. CPU cycles, main memory, and file storage)
others may have general request and release code
(i.e. I/O devices)
Accounting - To keep track of which users use how much
and what kinds of computer resources
8 Operating Systems, F-2018
Operating System Services (Cont.)
Protection and security - The owners of
information stored in a multiuser or networked
computer system may want to control use of
that information, concurrent processes should
not interfere with each other
Protection involves ensuring that all access
to system resources is controlled
Security of the system from outsiders
requires user authentication, extends to
defending external I/O devices from invalid
access attempts
If a system is to be protected and secure,
precautions must be instituted throughout it.
A chain is only as strong as its weakest link.
9 Operating Systems, F-2018
User OS Interface - CLI
Command Line Interface (CLI) or command
interpreter allows direct command entry
Sometimes implemented in kernel, sometimes by
systems program (e.g. Windows, Linux)
Sometimes multiple flavors implemented – shells
Primarily fetches a command from user and
executes it
Sometimes commands built-in, sometimes just
names of programs
In second case, adding new features doesn’t
require shell modification
10 Operating Systems, F-2018
User OS Interface - GUI
User-friendly desktop interface
Usually with mouse, keyboard, and monitor
Icons represent files, programs, actions, etc.
Various mouse buttons over objects in the interface cause
various actions (provide information, options, execute
function, open directory (folder)
Invented at Xerox PARC (1973)
Many systems now include both CLI and GUI
interfaces
Microsoft Windows is GUI with CLI “command” shell
Apple Mac OS X as “Aqua” GUI interface with UNIX kernel
underneath and shells available
Solaris is CLI with optional GUI interfaces (Java Desktop,
KDE)
11 Operating Systems, F-2018
System Calls
Programming interface to the services
provided by the OS
Typically written in a high-level language
(C or C++)
Mostly accessed by programs via a high-
level Application Program Interface (API)
rather than direct system call use
Three most common APIs are:
Win32 API for Windows,
POSIX API for POSIX-based systems (including almost all
versions of UNIX, Linux, and Mac OS X),
Portable Operating System Interface (POSIX)
Java API for the Java virtual machine (JVM)
12 Operating Systems, F-2018
Example of System Calls
System call sequence to copy the contents of
one file to another file
13 Operating Systems, F-2018
Example of Standard API
Consider the ReadFile() function in Win32 API
Description of parameters passed to ReadFile()
HANDLE file—the file to be read
LPVOID buffer—a buffer where the data will be read into and written from
DWORD bytesToRead—the number of bytes to be read into the buffer
LPDWORD bytesRead—the number of bytes read during the last read
LPOVERLAPPED ovl—indicates if overlapped I/O is being used
14 Operating Systems, F-2018
System Call Implementation
Typically, a number is associated with each system
call
System-call interface maintains a table indexed according to
these numbers
The system call interface invokes intended system call
in OS kernel and returns status of the system call and
any return values
The caller needs to know nothing about how the
system call is implemented
Just needs to obey API and understand what OS will do as a
result of the 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)
15 Operating Systems, F-2018
API – System Call – OS Relationship
16 Operating Systems, F-2018
Standard C Library Example
C program invoking printf() library call, which calls
write() system call
17 Operating Systems, F-2018
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
Three general methods used to pass parameters
to the OS
Simplest: pass the parameters in registers
In some cases, may be more parameters than registers
Parameters stored in a block, or table, in memory, and
address of block passed as a parameter in a register
Parameters placed, or pushed, onto the stack by the
program and popped off the stack by the operating
system
Block and stack methods do not limit the number or length of parameters
being passed
18 Operating Systems, F-2018
Parameter Passing via Table
19 Operating Systems, F-2018
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
File management
create file, delete file
open, close file
read, write, reposition
get and set file attributes
20 Operating Systems, F-2018
Types of System Calls (Cont.)
Device management
request device, release device
read, write, reposition
get device attributes, set device attributes
logically attach or detach devices
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
transfer status information
21 attach and detach remote devices
Operating Systems, F-2018
Windows & Unix System Calls
22 Operating Systems, F-2018
Program Execution in MS-DOS
(a) At system startup (b) Running a program
23 Operating Systems, F-2018
Example: MS-DOS
Single-tasking OS
Shell invoked when system booted
Simple method to run program
No process created
Single memory space
Loads program into memory, overwriting all
but the kernel
Program exit -> shell reloaded
24 Operating Systems, F-2018
Example: FreeBSD UNIX
Unix variant
Multitasking OS
User login -> invoke user’s choice of shell
Shell executes fork() system call to create
process
Executes exec() to load program into process
Shell waits for process to terminate or continues
with user commands
Process exits with code:
0 means no error // return 0
>0 means error code // return 1
25 Operating Systems, F-2018
FreeBSD Running Multiple Programs
26 Operating Systems, F-2018
System Programs
System Programs (System Utilities) provide
a convenient environment for program
development and execution. They can be
divided into:
File manipulation
Status information
File modification
Programming language support
Program loading and execution
Communications
Background Services
Application programs
27 Operating Systems, F-2018
System Programs
Some of them are simply user interfaces to
system calls; others are considerably more
complex
File management - Create, delete, copy,
rename, print, dump, list, and generally
manipulate files and directories
Status information
System information e.g. date, time, amount of available
memory, disk space, number of users
Detailed performance, logging, and debugging
information
Format and print the output to the terminal or other
output devices
Some systems implement a registry - used to store and
28
retrieve configuration information
Operating Systems, F-2018
System Programs (Cont.)
File modification
Text editors to create and modify files
Special commands to search contents of files or perform
transformations of the text
Programming-language support - Compilers,
assemblers, debuggers and interpreters
Program loading and execution- Absolute loaders,
relocatable loaders, linkage editors, debugging
systems for higher-level and machine language
Communications - Provide the mechanism for
creating connections among processes, users, and
computer systems
Allow users to send messages to one another’s screens, browse
web pages, send electronic-mail messages, log in remotely,
transfer files from one machine to another
Background Services and Application Programs
29 Operating Systems, F-2018
OS Design and Implementation
No consensus on design and implementation of
OS, but some approaches have proven successful
Internal structure of different Operating Systems
vary widely
Affected by choice of hardware & type of system
User goals
OS should be convenient to use, easy to learn, reliable,
safe, and fast
System goals
OS should be easy to design, implement, and maintain, as
well as flexible, reliable, error-free, and efficient
30 Operating Systems, F-2018
Policy vs. Mechanisms
Policy is to decide what will be done
Mechanism is to determine how to do
something
The separation of policy from mechanism is
very important principle
It allows maximum flexibility if policy decisions
are to be changed later
31 Operating Systems, F-2018
OS Implementation
Early operating systems were written in assembly
language
Operating System can be written in more than one
language
lowest levels of the kernel might be assembly language
Higher-level routines might be in C
system programs might be in C or C++, in interpreted scripting
languages like PERL or Python, or in shell scripts
High level language
the code can be written faster,
more compact,
easier to understand and debug
For example,
MS-DOS was written in Intel 8088 assembly language
The Linux operating system, written mostly in C making it run on
32 different CPUs, including Intel X86, Oracle SPARC,and IBMPowerPC
OS Structure
Simple Structure e.g. MS-DOS
Microsoft - Disk Operating System
MS-DOS is designed on simple structure
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
33 Operating Systems, F-2018
Layered Approach e.g. UNIX
OS is divided into number of layers (levels)
Each layer built on top of lower layers.
The bottom most layer
(layer 0), is the hardware
The highest (layer N)
is the user interface
34 Operating Systems, F-2018
UNIX
Original UNIX operating system had limited
structuring
UNIX OS consists of two separable layers
Systems programs
The kernel
Consists of everything below the system-call
interface and above the physical hardware
Provides the file system, CPU scheduling,
memory management, and other operating-
system functions
Monolithic Kernel
Large number of functions for one level
35 Operating Systems, F-2018
Traditional UNIX System Structure
36 Operating Systems, F-2018
Microkernel System Structure
Move as much functionality from kernel
space to user space
Communication takes place between user
modules using message passing
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
Detriments
Performance overhead of user space to kernel
space communication
37 Operating Systems, F-2018
Operating System Structure
38 Operating Systems, F-2018
Modular Approach
Most modern OS implement kernel
modules
Using object-oriented approach
Each core component is separate
Each talks to others using known interfaces
Each is loadable as needed within the kernel
Overall, similar to layers but with more
flexible
39 Operating Systems, F-2018
Modules
Perhaps the best current methodology for
operating-system design involves using
loadable kernel modules.
Kernel has a set of core components and
links in additional services via modules,
either at boot time or during run time
E.g. Solaris, Linux, and Mac OS X, Windows
40 Operating Systems, F-2018
Solaris Loadable Modules
41 Operating Systems, F-2018
Hybrid Systems
In practice, very few operating systems
adopt a single, strictly defined structure.
Instead, they combine different structures,
resulting in hybrid systems
that address performance, security, and
usability issues.
E.g. Apple Mac OS X and the two most
prominent mobile operating systems—iOS
and Android
42 Operating Systems, F-2018
iOS – iPhone Operating System
Not to confuse with Cisco IOS
Company/Developer: Apple Inc.
Programmed in: C, C++
Apple does not license iOS for installation on non-
Apple hardware
OS Family: OS X, Unix
Source Model: Closed, + Open Source parts
Latest Stable Release: 9
Kernel Type: Hybrid (XNU) [Mono+Micro]
User Interface: GUI
iOS currently runs on iPhone, iPad, iPod touch and
Apple TV
[Source] http://en.wikipedia.org/wiki/IOS (2015-09-15)
43 Operating Systems, F-2018
The Mac OS X Structure
44 Operating Systems, F-2018
Architecture of Apple’s iOS
45 Operating Systems, F-2018
Android OS
Company/Developer
Google, Open Handset Alliance, Android Open
Source Project
Programmed in C, C++, Java
OS Family : Unix-like
Source model : Open Source
Initial release : September 23, 2008
Latest stable release : 5.1.1 "Lollipop" / April
21, 2015; 4 months ago
[Source] http://en.wikipedia.org/wiki/Android_(operating_system) (2015-09-15)
46 Operating Systems, F-2018
Android platform architecture
47 Operating Systems, F-2018
Dalvik Virtual Machine
It is developed by Dan Bornstein of Google.
It is a type of JVM used in android devices to run apps
Optimized for low processing power and low memory
environments.
Unlike the JVM, the Dalvik Virtual Machine doesn’t
run .class files.
It runs .dex files. .dex files are built from .class file at
the time of compilation and provides higher efficiency
in low resource environments.
The Dalvik VM allows multiple instance of Virtual
machine to be created simultaneously providing
security, isolation, memory management and
threading support.
48 Operating Systems, F-2018
Virtual Machines
Virtual Machines are logical extension of
layered approach
A virtual machine provides an interface
identical to the underlying bare hardware
Divides different operating systems into a
Host OS and number of Guest OS
Host OS creates the illusion that a process
has its own processor and virtual memory
Each Guest OS is provided with a (virtual)
copy of underlying hardware
49 Operating Systems, F-2018
Virtual Machines
Commercially first appeared in IBM mainframes in
1972
Fundamentally, multiple execution environments
(different operating systems) can share the same
hardware
Protected from each other
Some level of sharing of files can be permitted
Communicate with each other and other physical
systems via networking
Useful for development and testing
Open Virtual Machine Format standard allows
a VM to run within many different virtual machine
(host) platforms
50 Operating Systems, F-2018
Virtual Machines Design
(a) Non-Virtual Machine (b) Virtual Machine
51 Operating Systems, F-2018
Virtualization Implementation
Difficult to implement – must provide an
exact duplicate of underlying machine
Typically runs in actual user mode,
Creates Virtual User Mode and Virtual
Kernel Mode
Timing can be an issue
VM is slower than real machine
Hardware support needed
More HW support results better virtualization
52 Operating Systems, F-2018
VMware Architecture
53 Operating Systems, F-2018
The Java Virtual Machine (JVM)
54 Operating Systems, F-2018
Debugging Support
Debugging is finding and fixing errors or
bugs
OSes generate log files containing error
information
Failure of an application can generate core dump
file capturing memory of the process
Operating system failure can generate crash
dump file containing kernel memory
Kernighan’s Law:
“Debugging is twice as hard as writing the code in
the first place. Therefore, if you write the code as
cleverly as possible, you are, by definition, not
smart enough to debug it.”
55 Operating Systems, F-2018
System Boot
Operating system must be made available
to hardware so that hardware can start it
Small piece of code – bootstrap loader,
locates the kernel, loads it into memory, and
starts it
Sometimes two-step process where boot block
at fixed location loads bootstrap loader
When power initialized on system, execution
starts at a fixed memory location
Firmware used to hold initial boot code
56 Operating Systems, F-2018