Operating Systems

advertisement
Kernel Types
System Calls
Operating Systems
Autumn 2013
CS4023
Kernel Types
System Calls
Outline
1
Kernel Types
2
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
CS4023
Kernel Types
System Calls
The OS Kernel
The kernel is the central component of an OS
It has complete control over everything that occurs in the
system
Kernel overview and comparison
(courtesy of Wikipedia)
CS4023
Kernel Types
System Calls
Monolithic Kernel
Older monolithic kernels were written as a mixture of
everything the OS needed, without much of a structure.
The monolithic kernel offers everything the OS needs:
CPU scheduling, memory management,
multiprogramming, interprocess communication (IPC),
device access, file systems, network protocols, etc.
Newer monolithic kernels have a modular design, which
offers run-time adding and removal of services. The whole
kernel runs in "kernel mode", a processor mode in which
the software has full control over the machine. The
processes running on top of the kernel run in "user mode",
in which programs have only access to the kernel services
Modern OS with monolithic kernels: Linux, FreeBSD,
NetBSD, Solaris
CS4023
Kernel Types
System Calls
Microkernel
Moves as much from the kernel into “user” space to run as
processes
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
Disadvantages
Performance overhead of user space to kernel space
communication
Example microkernels: L4, Minix, QNX
CS4023
Kernel Types
System Calls
Monolithic vs. Microkernel System Structure
Monolithic Kernel
Microkernel
CS4023
Kernel Types
System Calls
Hybrid Kernels
Similar to microkernels, except that they include additional
code in kernel space so that such code can run more
swiftly than it would were it in user space
These kernels represent a compromise that was
implemented by some developers before it was
demonstrated that pure microkernels can provide high
performance
Hybrid kernels should not be confused with monolithic
kernels that can load modules after booting (such as Linux)
Example OS with hybrid kernels: Microsoft Windows NT,
2000 and XP, Windows 7, DragonFly BSD
CS4023
Kernel Types
System Calls
OS Kernels Comparisons
(courtesy Wikipedia)
CS4023
Kernel Types
System Calls
Modules
Best current methodology for OS design involves using
OOP techniques to create a modular kernel
Kernel has set of core components and links in additional
services as required – either at boot time or run time
Uses dynamically loadable modules
Solaris and 7 types of loadable modules
CS4023
Kernel Types
System Calls
Mac OS X Structure
Apple’s Mac OS X uses a hybrid structure
Top layers include application environments and services
providing a graphical interface to applications
Below these layers is kernel environment, which consists
mainly of
Mach microkernel: provides memory management, thread
scheduling and support for RPCs and other types of IPC
BSD kernel: file system support, networking
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Outline
1
Kernel Types
2
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Overview
System call: a request made by any arbitrary program to
the OS for performing tasks which the said program does
not have required permissions to execute
System calls are generally available as assembly language
instructions and they are usually listed in the various
manuals used by the assembly-language programmers
Mostly accessed by programs via a high-level Application
Program Interface (API) rather than direct system call use
Managed by run-time support library (set of functions
built into libraries included with a compiler)
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Overview (contd.)
Three most common APIs are:
Windows API
POSIX API for POSIX-based systems (including virtually
all versions of UNIX, Linux, and Mac OS X)
Java API for the Java virtual machine (JVM)
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Example Use of System Calls
System call sequence to copy the contents of one file to
another file
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Linux open() Example
The Linux open() function – a function (which uses a system
call) for opening a file prior to reading / writing
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Implementing System Calls
Typically, a number 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 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)
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
API – System Call – OS Relationship
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Standard C Library Example
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
System Call Parameter Passing
Three general methods used to pass parameters to the OS
Simplest: pass the parameters in registers
...but what if there are more parameters than registers?
Parameters stored in a block, or table, in memory, and
address of block passed as a parameter in a register
Each individual system call knows how to treat the table
contents
This approach taken by Linux and Solaris
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
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Links to Explore
How to start developing your own OS kernel
Java API
POSIX API
Mac OS X API
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Outline
1
Kernel Types
2
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Categories
Process control
File management
Device management
Information maintenance
Communications
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Process Control
end, abort
load, execute
create process, terminate process
get/set process attributes
wait for time
wait/signal event
allocate and free memory
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
File Management
create/delete file
open, close
read, write, reposition
get/set file attributes
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Device Management
request device, release device
read, write, reposition
get/set device attributes
logically attach or detach devices
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Information Maintenance
get/set time or date
get/set system data
number of current users
amount of free memory
(numerous other statistics)
CS4023
Kernel Types
System Calls
System Call Overview
Types of System Calls – §2.4, SGG
Communication
create, delete communication connection
send, receive messages
transfer status information
attach or detach remote devices
CS4023
Download