1 / 29

L3: Operating Systems

L3: Operating Systems. Frans Kaashoek kaashoek@ mit.edu 6.033 Spring 2013. OS: New topic [4 lectures]. Case study of widely-used interesting system Virtual memory system, file system, processes , Illustrates ideas from first lectures:

denim
Télécharger la présentation

L3: Operating Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. L3: Operating Systems Frans Kaashoek kaashoek@mit.edu 6.033 Spring 2013

  2. OS: New topic [4 lectures] • Case study of widely-used interesting system • Virtual memory system, file system, processes, • Illustrates ideas from first lectures: • OSs supports client/server computing within a single computer • OSs have a naming system • Introduce new ideas and techniques: kernel, files, locks, etc. • Example: UNIX (Linux, BSDs, etc.)

  3. A Computer how to make it to do something useful?

  4. Inside the computer

  5. OS goal • Turn hardware into something usable • Multiplexing: run many programs • Isolation: enforce modularity between programs • Cooperation: allow programs to interact • Portability: allow same program to run on different hardware • Performance: help programs to run fast

  6. Main challenges • Isolation: • Buggy or malicious program shouldn’t crash other programs • Controlled sharing: • Programs must be able to cooperate

  7. Two main techniques • Virtualization: interpose between program & hardware, but provide same interface • Give the program the illusion of its own memory • Give the program the illusion of its own CPU • Abstraction: define new hardware-independent interfaces • Disk -> Files system • Display -> Window system

  8. Running a single program Main memory CPU • Memory holds instructions and data • CPU interpreter of instructions for (;;) { next instruction } instruction data

  9. instruction data x86 implementation • EIP is incremented after each instruction • Instructions are different length • EIP modified by CALL, RET, JMP, and conditional JMP 232-1 0

  10. Several programs CPUs Main memory for (;;) { next instruction } Instruction P1 Instruction P2 for (;;) { next instruction } Data P1 Data P2

  11. Problem: no boundaries Main memory 232-1 Program1 • A program can modify other programs data • A program jumps into other program’s code • A program may get into an infinite loop Program 2 Data for P1 Data for P2 0

  12. Goal: enforcing modularity • Give each program its private memory for code, stack, and data • Prevent one program from getting out of its memory • Allowing sharing between programs when needed • Force programs to share processor [next week]

  13. Approach: memory virtualization Physical address Virtual address • P1: LD r0, 0x0000 translated with Table 1 • P2: LD r0, 0x0000 translated with Table 2 232-1 232-1 Program1 Data for P1 0 Virtual address 232-1 Program 2 MMU Data for P2 0 0x1000 Table for P1 0x8000 Table for P2 0x1000 Physical address 0

  14. Table records mapping • Each program has its own translation map • Physical memory doesn’t have to be contiguous • P1: 0x0000 -> 0x1000 • P2: 0x0000 -> 0x2000 MMU 0x2000 P2’s PT P1’s PT Page-map register 0 0 0x1000

  15. Space-efficient map Page # Address Offset • 0x02020 -> 4 * 4096 + 0x20 = 0x4020 20 bits 12 bits vp pp 3 0 1 0 4 2 5 3

  16. Intel x86-32 two-level page table • Page size is 4,096 bytes • 1,048,576 pages in 232 • Two-level structure to translate

  17. x86 page table entry • R/W: writable? • Page fault when W = 0 and writing • U/S: user mode references allowed? • Page fault when U = 0 and user references address • P: present? • Page fault when P = 0

  18. Page fault • Switches processor to a predefined handler in OS software • Handler can stop program and raise error • Handler can update the page map and resume at faulted instruction • Allows OS to change page tables while program is running

  19. Naming view • Apply naming model: • Name = virtual address • Value = physical address • Context = Page map • Lookup algorithm: index into page map • Naming benefits • Sharing • Hiding • Indirection (demand paging, zero-fill, copy-on-write, …)

  20. Problem: how to protect tables? • Malicious program could change page table address register • Malicious program could change page fault handler

  21. User and kernel mode • Processor maintains U/K bit to distinguish between user and kernel mode • Code in K mode can set page table register and U/K bit U Code in U mode Code in K mode K

  22. What is a kernel? • The code running in kernel mode • Trusted program: e.g., sets page-map, U/K register • All interrupt handlers (e.g. page fault) run in kernel mode U sh ls Kernel K

  23. How transfer from U to K, and back? • Special instruction: e.g., int # • Processor actions on int #: • Set U/K bit to K • Lookup # in table of handlers • Run handler • Another instruction for return (e.g., reti) • Kernel sets U/K bit to U • Calls reti

  24. How to protect kernel’s memory from user programs? • Straw man plan: switch page table pointer when changing modes • Alternative: use U bit in page table entry • Pages for kernel code don’t have U bit • Kernel code and user code in a single addressspace • Kernelcanrefer to user data, but not the otherwayaround

  25. Abstractions • Pure virtualizing is often not enough • E.g., Portability • E.g., Cooperation • Example OS abstractions: • Disk -> FS • Display -> Windows • DRAM -> heap w. allocate/deallocate • Design of abstraction important • Study UNIX abstractions

  26. main() { intfd, n; char buf[512]; chdir("/usr/kaashoek"); fd = open("quiz.txt", 0); n = read(fd, buf, 512); write(1, buf, n); close(fd); }

  27. Where do abstractions live? • Library in user space? • No! Program must use disk only through abstraction • Use kernel to enforce abstractions • Each OS call changes into the kernel • Kernel code implements abstractions

  28. Kernel enforces modularity • Kernel code must set page tables correctly • Kernel code is responsible for enforcing abstractions • Any bug in kernel can lead to hole in our enforced modularity • [More about this in 2 weeks]

  29. Summary • Two key OS techniques • Virtualization allows programs to share hardware • Abstractions provide portability, cooperation • See Unix paper • OS kernel enforces modularity • Program vs program • Program vs kernel

More Related