340 likes | 805 Views
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?
E N D
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
Mechanics • Is the project workable? • Has everyone started? • Barring major problems, due Tuesday midnight • Readings updated System Calls & Libraries
Protection Issues • I/O protection • Prevent users from performing illegal I/Os • Memory protection • Prevent users from modifying kernel code and data structures • CPU protection • Prevent a user from using the CPU for too long System Calls & Libraries
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
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
Why a Privileged Mode? • Special Instructions • Mapping, TLB, etc • Device registers • I/O channels, etc. • Mode Bits • Processor features • Device access System Calls & Libraries
x86 Protection Rings Privileged instructions Can be executed only When current privileged Level (CPR) is 0 Level 3 Level 2 Level 1 Operating system kernel Level 0 Operating system services Applications System Calls & Libraries
Other Design Approaches • “Capabilities” • Fine-grained access control • Crypto-like tokens • Microkernels • OS services in user space • Small core “hypervisor” System Calls & Libraries
Monolithic User program User program • All kernel routines are together • A system call interface • Examples: • Linux • Most Unix OS • NT return call entry Kernel many many things System Calls & Libraries
Monolithic Pros and Cons Pros • Relatively few crossings • Shared kernel address space • Performance Cons • Flexibility • Stability • Experimentation System Calls & Libraries
Layered Structure • Hiding information at each layer • Develop a layer at a time • Examples • THE (6 layers) • MS-DOS (4 layers) Level N . . . Level 2 Level 1 Hardware System Calls & Libraries
Layering Pros and Cons Pros • Separation of concerns • Simplicity / elegance Cons • Boundary crossings • Performance? System Calls & Libraries
Microkernel User program Services • 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 return call entry m-kernel System Calls & Libraries
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
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
Hardware Support • What is the minimal support? • Can virtual machine be protected without such support? • Hint: what is a Turing machine? System Calls & Libraries
User code can be arbitrary User code cannot modify kernel memory Makes a system call with parameters The call mechanism switches code to kernel mode Execute system call Return with results System Call Mechanism User program User program return call entry Kernel in protected memory System Calls & Libraries
Interrupt and Exceptions • Interrupt Sources • Hardware (by external devices) • Software: INTn • Exceptions • 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
Interrupt and Exceptions (1) System Calls & Libraries
Interrupt and Exceptions (2) System Calls & Libraries
System Calls • Interface between a process and the operating system kernel • Categories • Process management • Memory management • File management • Device management • Communication System Calls & Libraries
Interrupt service routines System services Exception handlers Exception dispatcher VM manager’s pager OS Kernel: Trap Handler HW Device Interrupt Sys_call_table System service dispatcher System Service Call HW exceptions SW exceptions Virtual address exceptions HW implementation of the boundary System Calls & Libraries
Passing Parameters • Affects and depends on • Architecture • Compiler • OS • Different choices for different purposes System Calls & Libraries
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
Passing Parameters - Vector Register holds vector address • Single register • Vector in user’s memory • Nothing horrible, just not common System Calls & Libraries
Passing Parameters - Stack Place parameters on stack • Similar to vector approach • Stack already exists • Gets copied anyway Top frame frame System Calls & Libraries
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 int $0x80 move result to Rresult } Library Stubs for System Calls User stack User memory Registers Kernel stack Registers Linux: 80 NT: 2E Kernel memory System Calls & Libraries
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) System Call Entry Point User stack User memory Registers Kernel stack Registers Kernel memory System Calls & Libraries
Design & Performance Issues • Can user code lie? • One result register – large results? • Parameters in user memory • Multiprocessors System Calls & Libraries
General Design Aesthetics • Simplicity, obviousness • Generality – same call handles many cases • Composition / decomposition But: • Expressiveness • Performance System Calls & Libraries
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
Library Benefits • Call overhead • Chains of alloc/free don’t go to kernel • Flexibility – easy to change policy • Fragmentation • Coalescing, free list management • Easier to program System Calls & Libraries
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