Operating System Structures: Bilkent University Department of Computer Engineering CS342 Operating Systems
Operating System Structures: Bilkent University Department of Computer Engineering CS342 Operating Systems
Chapter 2:
Operating System Structures
1
Outline
Objectives
Outline
• To
Operating
describeSystem
the services
Services
an operating system provides to users, processes,
• and
Userother systems
Operating System Interface
•• To discuss
System the various ways of structuring an operating system
Calls
• System Programs
• Operating System Structure
2
Operating System Services
3
OS Services
4
[User - Operating System] Interface - CLI
Many operating systems now include both CLI and GUI interfaces
Linux: command shells available (CLI); KDE as GUI
5
Bourne Shell Command Interpreter
6
The MacOS X GUI
7
System Calls
8
System Calls
Application
(a process, a Application
running program)
…. System Calls
(OS functions)
Each has a name, number, set of parameters
9
Example of System Calls
10
System Call Implementation and Calling
• Typically,
–a number associated with each system call
–Number is used as index to a table: System Call Table
–Table keeps addresses of system calls (system routines)
–System call runs and returns
• Caller does not know system call implementation
– Just knows interface
11
Linux x86-64 system calls (64 bit)
12
Invoking a system:
Linux and x86 architecture
ecx
CPU registers
13
System Call Parameter Passing
• Often, more information is required than the identity (number) of the 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
– 1) Simplest: pass the parameters in registers
• In some cases, may be more parameters than registers
– 2) Parameters stored in a block, or table, in memory, and address of the
block passed as a parameter in a register
– 3) Parameters placed, or pushed, onto the stack by the program and
popped off the stack by the operating system
Last two methods do not limit the number or length of parameters being
passed
14
Parameter Passing via Table
15
Accessing and executing System Calls
OS
• Three most common APIs are : Sys Calls
– Win32 API for Windows, Rest of Kernel
– 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)
16
Example of Standard API - Windows
• Consider the ReadFile() function in the Win32 API — a function for reading
from a file
17
Example of Standard API - Linux
18
Why use APIs rather than system calls
directly?
…
user level code
19
Standard C Library Example
• C program invoking printf() library call, which calls write() system call
20
Types of System Calls
• Process control
• File management
• Device management
• Information maintenance
• Communications
• Protection
21
Examples of Windows and Unix System
Calls
22
Hello World with direct Linux System Call
hello.c hello.S
int main() .section .data
{ string:
write(1, .ascii "hello, world\n”
“hello, world\n”, string_end:
13); .equ len, string_end - string.section
_exit(0) .text.globl
} mainmain:
movq $1, %rax # write system call number
movq $1, %rdi
movq $string, %rsi #put the string
movq $len, %rdx #put length
syscall #make the call
In 64 bit Linux movq $60, %rax #exit system call number
for x86_64 arch movq $0, %rdi
syscall
23
Hello World with direct Linux System Call
24
System Services/Programs
25
System Services/Programs
• Most users’ view of the operation system is defined by system programs, not
the actual system calls
• Some of them are simply user interfaces to system calls; others are
considerably more complex
• create file: simple system program that can just call “create” system
call or something similar
• compiler: complex system program
26
Linkers and Loaders
source main.c
• They generate and load executable program
object files.
compiler gcc -c main.c
dynamically executable
main
linked file
readelf command libraries
./main
objdump command loader
program in
memory
27
System Programs
Users (People)
System Programs Other User Applications
System Calls
Kernel
29
• Design goals
– User goals
– System goals
• Mechanisms and policies
– Separate mechanisms from policies
– Mechanism: how to do
– Policy: what to do
• Implementation
– C, C++ (high level language)
– Porting to different architectures
30
Structuring Operating System
31
OS Structure
• Layered Approach
• Microkernel Approach
• Modules Approach
32
Simple Structure
33
Layered Approach
• With modularity, layers are selected such that each uses functions
(operations) and services of only lower-level layers
Functions of L3
overall system
Functions of L2
Functions of L1
34
Layered Operating System
35
Unix
36
Traditional UNIX System Structure
system programs
and libraries
37
Unix OS architecture
System programs
and
System libraries
(one layer)
Kernel
(another layer)
From https://www.tutorialspoint.com 38
Linux OS architecture
from wikipedia 39
Microkernel System Structure
40
Microkernels
OS
from wikipedia 42
Modules
43
Solaris Modular Approach
44
Hybrid Systems
• Mac OS X
– Uses Mach and BSD kernels
– Mach: microkernel
– BSD: monolithic
45
Hybrid Systems
• Android
– Uses Linux kernel
– Layered stack of
software on Linux
kernel
• A rich set of frameworks
to develop and run
Android applications
46
Virtualization
48
Virtual Machines
Guest Guest
Guest OS
OS OS
VM1 VM2 VM3
Hardware
• .NET Framework
– Specification of an abstract computer again
51
Operating System Debugging
• Failure analysis
– Log files
– Core dump
– Crash dump
• Performance tuning
– Monitor system performance
• Add code to kernel
• Use system tools like “top”
• DTrace
– Facility for dynamically adding probes to a running system (both to
processes and to the kernel)
– Probes can be queried using D programming language to obtain info 52
Operating System Generation
53
System Boot
• Bootstrap program (loader) locates the kernel, loads it and starts the kernel.
– This can be a two-step procedure.
– Bootstrap program loads another more complex boot program
– That boot program loads the kernel
• Kernel starts the environment and makes the computer ready to interact with the user
(via a GUI or command shell).
54
Performance Monitoring and Tuning
55
Summary
56
References
• Operating System Concepts, 9th and 10th edition, Silberschatz et al. Wiley.
• Modern Operating Systems, Andrew S. Tanenbaum, 3rd edition, 2009.
• These slides are adapted/modified from the textbook and its slides: Operating System
Concepts, Silberschatz et al., 7th & 8th, 9th, 10th editions, Wiley.
• Computer Systems, A Programmer’s Perspective, 3rd edition, R. E. Bryant and D. R.
O’Hallaron, Pearson, 2016.
57
Additional Study Material
58