280 likes | 482 Views
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 – (&local)); startAddr = &local; Loop( ); } int main(int argc, char *argv[ ]) {
E N D
Operating System Structures Vivek Pai Princeton University COS318 Lec 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
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
More Mechanics • Syllabus is now “complete”, along with goals for each lecture • Preparatory readings are listed • External readings are not yet included • Projects are being finalized • Regular lab not yet operational • How do we want to handle quizzes? • Scheduled or random? COS318 Lec 2
Reading Assignment • Sections 1.0-1.3 inclusive • Keep up with what’s on home page • I’ll try to remember to remind you COS318 Lec 2
A Typical Computer from a Hardware Point of View CPU CPU . . . Memory Chipset I/O bus Network COS318 Lec 2
A Typical Computer System Memory CPU Programs and data . . . Operating System Software CPU OS Network Apps Data COS318 Lec 2
Typical Unix OS Structure Application Libraries User space/level Kernel space/level Portable OS Layer Machine-dependent layer COS318 Lec 2
Typical Unix OS Structure Application • Written by programmer • Compiled by programmer • Uses function calls Libraries Portable OS Layer Machine-dependent layer COS318 Lec 2
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
Typical Unix OS Structure Application Libraries Portable OS Layer Machine-dependent layer • “Guts” of system calls • All “high-level” code COS318 Lec 2
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
Another Look: Unix “Onion” Applications User and Kernel boundary OS Service Device Driver Hardware COS318 Lec 2
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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