Title: Operating System Structures
1Operating System Structures
- Vivek Pai
- Princeton University
2Gedankenexperiment
- 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( )
3Mechanics
- 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?
4Next Reading Assignment
- Sections 1.6-2.1 inclusive
- Keep up with whats on home page
- Ill try to remember to remind you
- Coming up x86 assembly for Proj 2
5About Quiz 0
- It didnt count, so dont worry
- Scores are
- 5 9 people
- 4 14 people
- 3 14 people
- 2 8 people
- 1 1 person
6Quiz 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
7Question 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.
8Question 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
9A Typical Computer from a Hardware Point of View
CPU
CPU
. . .
Chipset
Memory
I/O bus
Network
10A Typical Computer System
Memory
CPU
Programs and data
. . .
Operating System Software
CPU
OS
Network
Apps
Data
11Typical Unix OS Structure
Application
Libraries
User space/level
Kernel space/level
Portable OS Layer
Machine-dependent layer
12Typical Unix OS Structure
Application
Written by programmer Compiled by
programmer Uses function calls
Libraries
Portable OS Layer
Machine-dependent layer
13Typical 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
14Typical Unix OS Structure
Application
Libraries
Portable OS Layer
Machine-dependent layer
Guts of system calls All high-level code
15Typical 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
16Another Look Unix Onion
Applications
User and Kernel boundary
OS Service
Device Driver
Hardware
17Whats An Application?
- Four parts (segments)
- Code/Text instructions
- Data initialized global variables
- Stack
- Heap
- Whats a stack and heap?
18OS Service Examples
- Examples that are not provided at user level
- System calls file open, close, read and write
- Control the CPU so that users wont 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
19Processor Management
- 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
I/O
CPU
CPU
CPU
I/O
CPU
I/O
CPU
CPU
CPU
20Memory 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
21x86 Architecture Registers
16-bit 32-bit
15
31
0
8 7
15
0
EAX EBX ECX EDX EBP ESI EDI ESP
CS DS SS ES FS GS
AX BX CX DX
AL
AH
BL
BH
CL
CH
DL
DH
BP
SI
Segment registers
DI
SP
General-purpose registers
EFLAGS register
EIP (Instruction Pointer register)
22x86 Memory
232-1
31
8 7
16 15
24 23
0
. . .
Byte 4
Byte 5
Byte 6
Byte 7
Byte 0
Byte 1
Byte 2
Byte 3
Byte order is little endian
0
23I/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
. . .
24Window 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
25File 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
. . .
26Bootstrapping
- 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
27System Boot
- Power on (processor waits until Power Good
Signal) - Processor jumps on a PC (Intel Inside) to
address FFFF0h - 1M 1,048,576 220 FFFFFh1
- FFFFFhFFFF0h16 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
28ROM BIOS startup program (1)
- POST (Power-On Self-Test)
- If pass then AX0 DH5 (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
29ROM 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
30ROM 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?
31Ways 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