2021-22 COMP3230A
ILO 1 – [Fundamentals] discuss the characteristics of
different structures of the Operating Systems (such as
microkernel, layered, virtualization, etc.) and identify the
core functions of the Operating Systems.
Principles of Operating Systems 2
Purpose and Functions of Operating Systems
Core Services
OS Architectures (Implementation design)
Principles of Operating Systems 3
Required Readings
Chapter 2, Introduction to Operating Systems, Operating
Systems: Three Easy Pieces by Arpaci-Dusseau et. al
http://pages.cs.wisc.edu/~remzi/OSTEP/intro.pdf
Section 1.10 to 1.13 of Chapter 1 of Operating Systems, 3rd
edition by Deitel et. al
http://www.deitel.com/books/os3e/os3e_01.pdf
Principles of Operating Systems 4
What OSs have you ever used?
What OSs have your heard about (but never used)?
What OSs would be created or developed by you?
Principles of Operating Systems 5
mid 1950s – mid 1960s (mainframe): Batch Systems
1960s (minicomputer): Multiprogramming Systems --
UNIX born (Ken Thompson & Dennis Ritchie)
1980s (PC):
MS-DOS (1981), SunOS (1982), ULTRIX (1982), Macintosh (1984),
Windows 1.0 (1985), IBM AIX (1986), HP HP-UX (1986), Minix (1987),
SGI IRIX (1987), Windows 2.0 (1987), NeXTSTEP (1989)
1990s (Internet):
OS support for networking tasks became standard.
Windows 3.0 (1990), 3.1 (1993), Linux (1991, Linus Torvalds), Solaris 2.0
(1992), FreeBSD (1993), NetBSD (1993), OS/2, Windows NT 3.1 (1993),
Windows 95, Windows NT 4.0 (1996), Windows 98.
Principles of Operating Systems 6
2000s and beyond (Mobile)
Mac OS X, Windows 2000, Windows Server 2003, Windows ME,
Windows XP (2001), Windows Vista (2005).
Android: Nov. 5, 2007
Mobile operating system based on the Linux kernel.
iPhone OS (iOS): March 6, 2008
For iPhone, iPad, iPod
iOS 6: Sept 19, 2012
iOS 8.4.1: Aug. 13, 2015 (800 MB)
iOS 14.7.1 : July 26, 2021
Microsoft Windows:
Windows 7 : July 22, 2009, NT kernel
Windows 8: Oct. 26, 2012, NT kernel
Windows 10 : July 29, 2015, NT kernel
Windows 10 Mobile: Dec. 08, 2015, NT kernel
Windows 11?
IoT OS
Principles of Operating Systems 7
Principles of Operating Systems 8
A PROGRAM that
controls the execution of application programs
which program runs first? for how long? which program to be suspended or
swapped out? . . . .
Two main functions
primarily as a resource manager
Managing resources – CPUs, memory, disks, files, . . .
Decides between conflicting requests for efficient and fair use of resources
An interface between applications and hardware
Separates applications from the hardware they access
OS provides the APIs (Application Program Interfaces) for programs to ask for OS
services/resources
This greatly simplifies application development
Principles of Operating Systems 9
Allow
applications to run on the system (easily, correctly,
and effectively)
Allow
running applications to use memory as well as share
the memory
Allow running applications to interact with each other
Allow applications to access and share data that stored in
persistent storage
Principles of Operating Systems 10
How does the operating system support these services?
“Note that why the OS does this is not the main question, as the
answer should be obvious: it makes the system easier to use. ”
“Thus, we focus on the how: what mechanisms and policies are
implemented by the OS to support its services? How does the OS
do so efficiently? What hardware support is needed?”
Principles of Operating Systems 11
Virtualization
Make each application believe it has each resource to itself
CPU, Memory, etc.
Concurrency
Events are occurring simultaneously and may interact with one
another
Persistence
Access information permanently
File system, hard drive, etc.
Principles of Operating Systems 12
A process is basically a program in execution
Process needs resources to accomplish its task
CPU, memory, I/O, files, initial data
Process termination requires reclamation of any reusable
resources
Typically
system has many processes, some are user
processes, some are OS/kernel/system processes, running
concurrently on one or more CPUs (cores)
Principles of Operating Systems 13
Responsibilities of OS
How to manage and control application processes?
There are many processes running in the system
How to perform restricted operations?
Processes must be allowed to perform I/O and other restricted operations
How to provide the illusion of many CPUs?
Each given to a process
How to regain control of the CPU?
Even if processes are not being cooperative
How to design an effective and efficient processor scheduler?
Even without perfect knowledge of processes’ characteristics
Principles of Operating Systems 14
Von Neumann model of computing
Instructions & data of a running process must be in physical
memory in order to execute
Main objective
With limited memory and many processes are running
concurrently, OS determines what should be in memory
To optimize CPU utilization and computer response to users
Principles of Operating Systems 15
Responsibilities of OS
How can running processes share the single pool of physical memory?
Giving an abstraction of a private memory space for each process
How to maintain control over which memory locations an application
can access?
We don’t want other processes to write to another process’s memory
How to run many processes with total memory demand higher than
physical limit?
Getting help from the larger, slower hard disks
How to manage free space? What should OS do if running out of free
space?
If running out of free space, getting back some memory from running processes
Principles of Operating Systems 16
OS is a concurrent program
Many internal kernel data structures may be updated concurrently by
multiple execution logics
Nowadays, multi-core systems and multi-thread programs are
prevalent
Threads can update shared data simultaneously
When there are many concurrently tasks running within the
same memory space, how can we build a correctly working
program?
Programs or OS have to carefully access shared data, with the uses of
proper synchronization primitives, in order to work correctly
Principles of Operating Systems 17
Responsibilities of OS
What kind of primitives are needed for synchronization?
We may have to examine different kinds of synchronization and
concurrency issues
What support do we need from hardware and OS in order to
build useful synchronization primitives?
We want the primitives to work correctly and efficiently
How can we use them to solve concurrency problems?
Principles of Operating Systems 18
The component in OS that manages storage disks is called
the file system
Responsible for storing any data the user created in a reliable
and efficient manner on the disks of the system
File System
Provides a uniform, logical view of information storage
Abstracts physical properties to logical storage unit - file
Maps files onto physical media and provides mechanisms for
applications to manage and access files
Principles of Operating Systems 19
Responsibilities of OS
How to manage a persistent device?
For example, where to find suitable storage units for a newly created file?
what will happen if deleting a file?
How to implement the file system?
We need some data structures on the disk for the file system to work
correctly and efficiently; e.g., given a file name, how to access the data
of the file?
How to reduce file system I/O costs?
Disk access is slow, is there any way to make file access faster??
Principles of Operating Systems 20
Makes the system convenient and easy to use by abstraction
Provides protection between applications and between OS and applications
Allows computer system resources to be used in an efficient manner
Can operate on many hardware configurations
Provides a high degree of reliability and will not fail due to isolated
application/hardware errors
Protect resources from unauthorized access by users and software
Security, energy-efficiency, mobility…
Principles of Operating Systems 21
Principles of Operating Systems 22
Principles of Operating Systems 23
Beyondmany possible reasons….
Computational Thinking
It’s all about problem solving
There are always more problems than you could have
imagined, but luckily there are always more solutions.
Systematic Thinking
Engineering is nothing but trade-off.
Principles of Operating Systems 24
Principles of Operating Systems 25
Usually we call it the shell,
which is the interface for
users to interact with OS
Contains a set of
utility functions
that will be used
or called by
application
programs and the
command layer Which is the core of
OS; it manages
resources and
directly interacts
with computer
hardware
26
Operating Systems tend to be complex
Provide many services (really too many!)
support variety of hardware and software
Operating system architectures help manage this complexity
Organize operating system components (functionalities)
Specify the privilege level with which each component executes
Common options (5) Hybrid Kernels: compromise between
Monolithic Architecture the monolithic and microkernel designs.
Layered Architecture Used in most commercial operating
Microkernel Architecture systems: Microsoft Windows NT 2000, XP,
Modular Approach Vista, 7, 8, 10, ..; Mac OS X (XNU)
Principles of Operating Systems 27
CPU operates in (at least) two modes
Kernel mode
Also known as privilege mode or supervisor mode
CPU is put in kernel mode when the OS kernel executes
It is at the highest privilege level and can execute any instruction the machine
is capable of executing
User mode
CPU is put in user mode when a user application is executing
Running in a lower privilege level
Only a subset of the machine instructions is available
Ensures that one user program cannot execute instruction that may interfere with
operation of other user programs
Principles of Operating Systems 28
A system call is mechanism allows an application program to
make a request to the OS for resources/services
the set of system calls is the interface (API) to the services provided by
the OS
When a system call occurs, the system switches from user
mode to kernel mode and executes the corresponding
kernel’s system function
We call this mode switch
This is achieved by some special instructions that helps the process to
trap into the kernel and return-from-trap back to user mode
Principles of Operating Systems 29
Every OS component is contained
in the kernel
Traditionally, OS code did not
structure its components as modules
with clearly defined interfaces
All its components are interwoven
into one large program that runs in
privilege mode
Any component (within kernel) can
directly communicate with any
other (e.g. by using function calls)
Data structures are easily shared as
all in one program
Principles of Operating Systems 30
Adv: Tend to be highly efficient
Disadvantages
Components can interact with hardware directly
Architecture dependent code was spread throughout the kernel
Components can access each other’s data and functions directly
Changes made in one component could affect other components
Bugs in one component can adversely affect another component
Difficulty in determining source of subtle errors
More susceptible to damage from malicious code (component)
Examples: UNIX, Linux, MSDOS, and many more.
Principles of Operating Systems 31
Groups components that
perform similar function or
specific role into a module
and layers the modules one
on top of the other
Each layer communicates
only with layers immediately
above and below it
Processes’ requests might pass
through many layers before
being serviced
System efficiency can be less
than monolithic kernels
Principles of Operating Systems 32
Pros
Simplicity of construction and debugging
Allows debugging starting at lowest layer, adding one layer at a time until
the whole system works correctly
Information hiding – each layer only knows the interface
provided by immediate lower layer
We can replace one layer by another implementation without affecting
other parts of the system
With
the layered approach, the designers have a choice
where to draw the kernel-user boundary
Principles of Operating Systems 33
Cons
Poor performance
Difficult to define and order layers
Not flexible
Disjunction between model and reality: real systems are more
complex, difficult for such layered abstraction (see Windows NT
story)
The first release of Windows NT (3.x) using the layered organization
suffered low performance compared to that of Windows 95.
Windows NT 4.0 moves layers from user space to kernel space and more closely
integrating them to improve the performance.
Principles of Operating Systems 34
Virtual machine monitor
Also named as hypervisor
Runs on top of host OS – in
user mode OR incorporated
into host OS – kernel mode
Virtualizing the hardware
resources and giving the
illusion to each running OS
that it controls the machine
(which is a virtual machine)
In essence, it serves as an OS
for OSs.
Principles of Operating Systems 35
For Your Information Only
OS-Level Virtualization: Virtualizes servers on top of the
operating system.
Anything running inside a container can only see resources that
have been assigned to that container.
Examples:
LXC (LinuX Containers), LXD, Solaris “Zones”, Docker, Google
Containers, …
Principles of Operating Systems 36
For Your Information Only
(Simplest view for comparison)
Principles of Operating Systems 37
Moves as much
functionalities from the
kernel space into user space
processes (being called as
servers)
Attempt to keep kernel small
The system becomes more
stable as only the bare
essentials are running in kernel
mode
Easier to extend and port to
other platforms
Principles of Operating Systems 38
reduce the kernel to basic process communication and I/O control, and let
the other system services reside in user space in form of normal processes
(called servers).
Monolithic Kernel Microkernel
Principles of Operating Systems 39
Pros
Extensible, portable and scalable
More secure & reliable (less code is running in kernel mode)
Con
Poor performance: Server processes (in user space) are
interacting by means of message exchanges, which need the
helps from kernel
Induce significant performance overhead because of communications
have to go through kernel
Most embedded systems adopt microkernel
Principles of Operating Systems 40
Most modern operating
systems still adopt the
monolithic architecture but
implement kernel modules
Each core component is
separated and implemented
as module
The whole kernel is a collection
of modules
E.g., Windows NT 4.0 =
monolithic + microkernel
Principles of Operating Systems 41
Overall, similar to layers but is more flexible and efficient as
each kernel module has well-defined, protected interfaces; any module can
call any other module
more efficient to communicate between modules as they are all in kernel
allows certain features to be implemented dynamically and loaded as
needed (dynamically loadable modules)
Memory is conserved as only required modules are loaded in memory
more extensible as kernel modules can be modified separately and new
modules can be added easily
Examples: Solaris, Linux, and traditional Unix kernels
Principles of Operating Systems 42
Windows System Architecture Linux System Architecture
(Source: Windows Kernel Internals by Dave Probert)
A hybrid kernel with modular design (Source: Anatomy of the Linux Kernel by M. Tim Jones)
principles A monolithic approach with the
support of loadable kernel modules
Mac OS X (XNU) Architecture Android System Architecture
(Source: Kernel Programming Guide by Apple) (Source: Android Open Source Project)
A hybrid kernel with the support of
loadable kernel extensions
Principles of Operating Systems 44
What is OS? It is a resource manager that manage &
coordinate the use of resources amongst users, and it also
provides an abstractive view on the computer to users.
DifferentOS architectures have their advantages and
disadvantages; however, modern OSs tend to use the
monolithic approach with layers and kernel modules for
extensibility.
Principles of Operating Systems 45