1 / 31

Operating System Structures

Operating System Structures. Vivek Pai Princeton University. Gedankenexperiment. What does this program do? static void Loop(void) { static char *startAddr; char local; printf(“diff is %d<br>”, startAddr – (&amp;local)); startAddr = &amp;local; Loop( ); } int main(int argc, char *argv[ ]) {

yuli-briggs
Download Presentation

Operating System Structures

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. Operating System Structures Vivek Pai Princeton University COS318 Lec 2

  2. Gedankenexperiment • What does this program do? static void Loop(void) { static char *startAddr; char local; printf(“diff is %d\n”, startAddr – (&local)); startAddr = &local; Loop( ); } int main(int argc, char *argv[ ]) { Loop( ); } COS318 Lec 2

  3. Mechanics Have you: • Subscribed to pu.cs.318? • Sent me mail with your details? • Hey, it was an assignment after all… • Sent me a picture of yourself? COS318 Lec 2

  4. Next Reading Assignment • Sections 1.6-2.1 inclusive • Keep up with what’s on home page • I’ll try to remember to remind you • Coming up: x86 assembly for Proj 2 COS318 Lec 2

  5. About Quiz 0 • It didn’t count, so don’t worry • “Scores” are 5: 9 people 4: 14 people 3: 14 people 2: 8 people 1: 1 person COS318 Lec 2

  6. Quiz 0 Questions • Register – everyone correct? • Stack – data structure: last-in, first-out • Stack frame – on procedure calls, formal parameters, local variables, return address all get pushed onto stack COS318 Lec 2

  7. Question 4 (22 out of 46) int *p = 0; printf(“val is %d\n”, *p); Type of p is “pointer to integer”. Value of p is zero. Deref of p is getting value at location 0, being read as an integer. Should cause an error on any sane system. COS318 Lec 2

  8. Question 5 (29 out of 46) Func( ) { int *result; CallSomeFunc(result); } Note: value of result can not change What can change is data at location pointed to by result To change value of result, you have to pass address of result Normally, you declare result as a non-pointer, and pass in its address by &result COS318 Lec 2

  9. A Typical Computer from a Hardware Point of View CPU CPU . . . Memory Chipset I/O bus Network COS318 Lec 2

  10. A Typical Computer System Memory CPU Programs and data . . . Operating System Software CPU OS Network Apps Data COS318 Lec 2

  11. Typical Unix OS Structure Application Libraries User space/level Kernel space/level Portable OS Layer Machine-dependent layer COS318 Lec 2

  12. Typical Unix OS Structure Application • Written by programmer • Compiled by programmer • Uses function calls Libraries Portable OS Layer Machine-dependent layer COS318 Lec 2

  13. Typical Unix OS Structure Application • Written by elves • Provided pre-compiled • Defined in headers • Input to linker (compiler) • Invoked like functions • May be “resolved” when program is loaded Libraries Portable OS Layer Machine-dependent layer COS318 Lec 2

  14. Typical Unix OS Structure Application Libraries Portable OS Layer Machine-dependent layer • “Guts” of system calls • All “high-level” code COS318 Lec 2

  15. Typical Unix OS Structure Application • Bootstrap • System initialization • Interrupt and exception • I/O device driver • Memory management • Kernel/user mode switching • Processor management Libraries Portable OS Layer Machine-dependent layer COS318 Lec 2

  16. Another Look: Unix “Onion” Applications User and Kernel boundary OS Service Device Driver Hardware COS318 Lec 2

  17. What’s An Application? Four parts (“segments”) • Code/Text – instructions • Data – initialized global variables • Stack • Heap What’s a stack and heap? COS318 Lec 2

  18. OS Service Examples • Examples that are not provided at user level • System calls: file open, close, read and write • Control the CPU so that users won’t stuck by running while ( 1 ) ; • Protection: • Keep user programs from crashing OS • Keep user programs from crashing each other • Examples that can be provided at user level • Read time of the day • Protected user level stuff COS318 Lec 2

  19. Processor Management CPU I/O CPU • Goals • Overlap between I/O and computation • Time sharing • Multiple CPU allocations • Issues • Do not waste CPU resources • Synchronization and mutual exclusion • Fairness and deadlock free CPU CPU I/O CPU I/O CPU CPU CPU COS318 Lec 2

  20. Memory Management • Goals • Support programs to run • Allocation and management • Transfers from and to secondary storage • Issues • Efficiency & convenience • Fairness • Protection Register L2 10x Memory 200x Disk 10Mx Tape 100Mx COS318 Lec 2

  21. x86 Architecture Registers 16-bit 32-bit 15 31 0 15 8 7 0 AX BX CX DX EAX EBX ECX EDX EBP ESI EDI ESP CS DS SS ES FS GS AL AH BH BL CH CL DH DL BP SI DI Segment registers SP General-purpose registers EFLAGS register EIP (Instruction Pointer register) COS318 Lec 2

  22. x86 Memory 232-1 31 24 23 16 15 8 7 0 . . . Byte 7 Byte 6 Byte 5 Byte 4 Byte 3 Byte 2 Byte 1 Byte 0 Byte order is little endian 0 COS318 Lec 2

  23. I/O Device Management User 1 User n • Goals • Interactions between devices and applications • Ability to plug in new devices • Issues • Efficiency • Fairness • Protection and sharing . . . Library support Driver Driver I/O device I/O device . . . COS318 Lec 2

  24. Window Systems • All in the kernel (Windows) • Pros: efficient? • Cons: difficult to develop new services • All at user level • Pros: easy to develop new apps • Cons: protection • Split between user and kernel (Unix) • Kernel: display driver and mouse driver • User: the rest COS318 Lec 2

  25. File System User 1 User n • A typical file system • Open a file with authentication • Read/write data in files • Close a file • Can the services be moved to user level? . . . File system services File File . . . COS318 Lec 2

  26. Bootstrapping • Power up a computer • Processor reset • Set to known state • Jump to ROM code • Load in the boot loader from stable storage • Jump to the boot loader • Load the rest of the operating system • Initialize and run Boot loader Boot loader OS sector 1 OS sector 2 . . . OS sector n COS318 Lec 2

  27. Maps to FFFFFFF0h= 232-16 System Boot • Power on (processor waits until Power Good Signal) • Processor jumps on a PC (“Intel Inside”) to address FFFF0h • 1M= 1,048,576= 220 =FFFFFh+1 • FFFFFh=FFFF0h+16 is the end of the (first 1MB of) system memory • The original PC using Intel 8088 had 20 address lines :-) • (FFFFFFF0h) is a JMP instruction to the ROM BIOS startup program COS318 Lec 2

  28. SCSI disks: must often provide their own BIOS ROM BIOS startup program (1) • POST (Power-On Self-Test) • If pass then AX:=0; DH:=5 (586: Pentium); • Stop booting if fatal errors, and report • Look for video card and execute built-in ROM BIOS code (normally at C000h) • Look for other devices ROM BIOS code • IDE/ATA disk ROM BIOS at C8000h (=819,200d) • Display startup screen • BIOS information • Execute more tests • memory • system inventory COS318 Lec 2

  29. ROM BIOS startup program (2) • Look for logical devices • Label them • Serial ports • COM 1, 2, 3, 4 • Parallel ports • LPT 1, 2, 3 • Assign each an I/O address and IRQ • Detect and configure PnP devices • Display configuration information on screen COS318 Lec 2

  30. ROM BIOS startup program (3) • Search for a drive to BOOT from • Floppy or Hard disk • Boot at cylinder 0, head 0, sector 1 • Load code in boot sector • Execute boot loader • Boot loader loads program to be booted • If no OS: "Non-system disk or disk error - Replace and press any key when ready" • Transfer control to loaded program • Is it okay to boot at first sector on the floppy or disk? COS318 Lec 2

  31. Ways to Develop An Operating System • A hardware simulator • A virtual machine • A good kernel debugger • When OS crashes, always goes to the debugger • Debugging over the network COS318 Lec 2

More Related