System Calls & Libraries Vivek Pai Lecture 4, COS318 Sep 25, 2001

advertisement
System Calls & Libraries
Vivek Pai
Lecture 4, COS318
Sep 25, 2001
Gedankundmathematics
Recall the pointer verification case for fread( )
 Can you speed up the checking process?
 What’s the best you could achieve? O(n)?
O(logn)? O(1)?
 What happens if you have >32 bits?


Aside: # atoms in universe = 1080, or 2256
Does this provide any other benefits?
System Calls & Libraries
2
Mechanics

Is the project workable?



Has everyone started?
Barring major problems, due Tuesday
midnight
Readings updated
System Calls & Libraries
3
Protection Issues

I/O protection


Memory protection


Prevent users from performing illegal I/Os
Prevent users from modifying kernel code
and data structures
CPU protection

Prevent a user from using the CPU for too
long
System Calls & Libraries
4
Protection Is Not Safety/Security



Protection is a prerequisite
Safety can be separation of concerns
Security related to overall design
Examples?
 Bad pointer access causing seg fault
 Sniffing cleartext passwords on the wire
System Calls & Libraries
5
Support in Modern Processors:
User  Kernel
An interrupt or exception (INT)
User mode
Regular instructions
Access user-mode memory
Kernel (privileged) mode
Regular instructions
Access user-mode memory
A special instruction (IRET)
System Calls & Libraries
6
Why a Privileged Mode?

Special Instructions




Mode Bits


Mapping, TLB, etc
Device registers
I/O channels, etc.
Processor features
Device access
System Calls & Libraries
7
x86 Protection Rings
Privileged instructions
Can be executed only
When current privileged
Level (CPR) is 0
Operating system
kernel
Operating system
services
Applications
Level 0
Level 1
Level 2
Level 3
System Calls & Libraries
8
Other Design Approaches

“Capabilities”



Fine-grained access control
Crypto-like tokens
Microkernels


OS services in user space
Small core “hypervisor”
System Calls & Libraries
9
Monolithic



All kernel routines
are together
A system call
interface
Examples:



User
program
Linux
Most Unix OS
NT
User
program
entry
Kernel
many many things
System Calls & Libraries
10
Monolithic Pros and Cons
Pros
 Relatively few crossings
 Shared kernel address space
 Performance
Cons
 Flexibility
 Stability
 Experimentation
System Calls & Libraries
11
Layered Structure



Hiding information at
each layer
Develop a layer at a
time
Examples


THE (6 layers)
MS-DOS (4 layers)
System Calls & Libraries
Level N
..
.
Level 2
Level 1
Hardware
12
Layering Pros and Cons
Pros
 Separation of concerns
 Simplicity / elegance
Cons
 Boundary crossings
 Performance?
System Calls & Libraries
13
Microkernel




Micro-kernel is “micro”
Services are
implemented as regular
process
Micro-kernel get
services on behalf of
users by messaging with
the service processes
Examples: Taos, Mach,
L4
User
program
System Calls & Libraries
Services
entry
m-kernel
14
Microkernel Pros and Cons
Pros
 Easier to develop services
 Fault isolation
 Customization
 Smaller kernel => easier to optimize
Cons
 Lots of boundary crossings
 Really poor performance
System Calls & Libraries
15
Virtual Machine

Virtual machine monitor



provide multiple virtual
“real” hardware
run different OS codes
Example




IBM VM/370
virtual 8086 mode
Java
VMWare
user
user
OS1
OSn
VM1
...
VMn
Small kernel
Bare hardware
System Calls & Libraries
16
Hardware Support

What is the minimal support?
Can virtual machine be protected without such
support?

Hint: what is a Turing machine?

System Calls & Libraries
17
System Call Mechanism






User code can be arbitrary
User
User
User code cannot modify
program
program
kernel memory
Makes a system call with
parameters
The call mechanism switches
entry
code to kernel mode
Kernel in
Execute system call
protected memory
Return with results
System Calls & Libraries
18
Interrupt and Exceptions

Interrupt Sources



Exceptions




Hardware (by external devices)
Software: INT n
Program error: faults, traps, and aborts
Software generated: INT 3
Machine-check exceptions
See Intel document chapter 5, volume 3 for
details
System Calls & Libraries
19
Interrupt and Exceptions (1)
Vector #
Mnemonic
Description
Type
0
#DE
Divide error (by zero)
Fault
1
#DB
Debug
Fault/trap
NMI interrupt
Interrupt
2
3
#BP
Breakpoint
Trap
4
#OF
Overflow
Trap
5
#BR
BOUND range exceeded
Trap
6
#UD
Invalid opcode
Fault
7
#NM
Device not available
Fault
8
#DF
Double fault
Abort
Coprocessor segment overrun
Fault
9
10
#TS
Invalid TSS
System Calls & Libraries
20
Interrupt and Exceptions (2)
Vector #
Mnemonic
Description
Type
11
#NP
Segment not present
Fault
12
#SS
Stack-segment fault
Fault
13
#GP
General protection
Fault
14
#PF
Page fault
Fault
Reserved
Fault
15
16
#MF
Floating-point error (math fault)
Fault
17
#AC
Alignment check
Fault
18
#MC
Machine check
Abort
19-31
Reserved
32-255
User defined
System Calls & Libraries
Interrupt
21
System Calls


Interface between a process and the
operating system kernel
Categories





Process management
Memory management
File management
Device management
Communication
System Calls & Libraries
22
OS Kernel: Trap Handler
HW Device
Interrupt
System Service Call
HW exceptions
Sys_call_table
System
service
dispatcher
Interrupt
service
routines
System
services
SW exceptions
Virtual address
exceptions
Exception
dispatcher
Exception
handlers
VM manager’s
pager
HW implementation of the boundary
System Calls & Libraries
23
Passing Parameters

Affects and depends on




Architecture
Compiler
OS
Different choices for different purposes
System Calls & Libraries
24
Passing Parameters - Registers
Place parameters in registers
 # of registers
 # of usable registers
 # of parameters in system call
 Spill/fill code in compiler
Really fast
System Calls & Libraries
25
Passing Parameters - Vector
Register holds vector address
 Single register
 Vector in user’s memory
 Nothing horrible, just not common
System Calls & Libraries
26
Passing Parameters - Stack
Place parameters on stack
 Similar to vector approach
 Stack already exists
 Gets copied anyway
System Calls & Libraries
Top
frame
frame
27
Library Stubs for System Calls

Use read( fd, buf, size) as
an example:
int read( int fd, char * buf, int
size)
{
move fd, buf, size to
R1, R2, R3
move READ to R0 Linux: 80
int $0x80
NT: 2E
move result to Rresult
}
User
stack
User
memory
Registers
Registers
Kernel
stack
System Calls & Libraries
Kernel
memory
28
System Call Entry Point

Assume passing parameters
in registers
EntryPoint:
switch to kernel stack
save context
check R0
call the real code pointed by
R0
restore context
switch to user stack
iret (change to user mode and
return)
User
stack
User
memory
Registers
Registers
Kernel
stack
System Calls & Libraries
Kernel
memory
29
Design & Performance Issues




Can user code lie?
One result register – large results?
Parameters in user memory
Multiprocessors
System Calls & Libraries
30
General Design Aesthetics



Simplicity, obviousness
Generality – same call handles many cases
Composition / decomposition
But:
 Expressiveness
 Performance
System Calls & Libraries
31
Separation Of Concerns
Memory management
 Kernel allocates “pages” – hw protection
 Programs use malloc( ) – fine grained
 Kernel doesn’t care about small allocs


Allocates pages to library
Library handles malloc/free
System Calls & Libraries
32
Library Benefits

Call overhead


Flexibility – easy to change policy



Chains of alloc/free don’t go to kernel
Fragmentation
Coalescing, free list management
Easier to program
System Calls & Libraries
33
Feedback To The Program


System calls, libraries are program to OS
What about other direction?



Various exceptional conditions
General information, like screen resize
When would this occur?
Answer: signals
System Calls & Libraries
34
Download