datorteknik operatingsystem bild 1 the operating system (os)
TRANSCRIPT
Datorteknik OperatingSystem bild 1
the Operating System (OS)
Datorteknik OperatingSystem bild 2
The Operating System (OS)
Operating System
P1: Editor
P2: Compiler
P3: QuakeArena
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 3
Our Assembler
.data
.kdata
.text
.ktext
User
Kernel
Datorteknik OperatingSystem bild 4
The Hardware
.data
.kdata
.text
.ktext
User
Kernel
OKERROR!
Datorteknik OperatingSystem bild 5
How does the User program pass control to the Operating System?
Take control on ERROR Pass control explicitly
Datorteknik OperatingSystem bild 6
ERROR
Ex, Arithmetical Overflow
li $4 0x80000000
neg $4 $4
(sub $4 $0 $4)
0x00000000
- 0x80000000
0x80000000
Sign differs
Same Sign ! ERROR
Datorteknik OperatingSystem bild 7
Signed/Unsigned Arithmetics
The only difference is that– Unsigned never causes ERROR
– Signed causes ERROR on Overflow etc.
Signed
ADDSUBADDI..
Unsigned
ADDUSUBUADDIU..
Datorteknik OperatingSystem bild 8
Memory Error
Instruction Memory = Bad PC Data Alignment Error Access Protected Memory from User mode Nonexistent Memory (Page fault Chapter 7)
Datorteknik OperatingSystem bild 9
Do not confuse !
A Memory that tells the pipeline to Wait– relate to “cache miss”
A Memory Error or Page Fault– realte to “TLB miss”
Datorteknik OperatingSystem bild 10
The Consequence
A Memory that tells the pipeline to Wait
–Pipeline Stall A Memory Error or Page Fault
–Exception
Datorteknik OperatingSystem bild 11
Pass control excplicitly
The User wants some service from the Operating System– File I/O
– Graphics
– Sound
– Allocate Memory
– Terminate Program (no HALT instruction in real MIPS)
SYSCALL (casuses an exception)
Datorteknik OperatingSystem bild 12
How to choose service:
Is there different SYSCALLs? NO! Only one, use a register ($a0) to choose Use other registers ($a1,...) as parameters Use $v0 for result
ori $a1 $r0 ‘A’ ; Char ‘A’ori $a0 $r0 0x00 ; Write Charsyscallori $a0 $r0 0x01 ; Read Charsyscallor $a1 $r0 $v0 ; Move result $v0->$a1ori $a0 $r0 0x00 ; Echo Charsyscall
Datorteknik OperatingSystem bild 13
Other ways for the Operating System to take control?
External Interrupts, (not caused by User program)– Timers
– Harddisk
– Graphics
– Sound
– Keyboard, Mouse, other perhipals
Datorteknik OperatingSystem bild 14
Coprocessor CP0
8 Bad Memory Address 12 Status Register 13 Cause Register 14 Exception Address
Datorteknik OperatingSystem bild 15
Status Register CP0 ($12)
“Mode Stack” External Interrupt enable/disable
Datorteknik OperatingSystem bild 16
“Mode Stack”
OLD PREVIOUS CURRENT
KU IE
0 Kernel Mode1 User Mode
0 External Interrupt Disable1 External Interrupt Enable
KU
IE
KU IEKU IE5 0
Datorteknik OperatingSystem bild 17
Exception / Interrupt Occurs
OLD PREVIOUS CURRENT
KU IE KU IEKU IE
KU IEKU IE 0 0
0 Kernel Mode1 User Mode
0 External Interrupt Disable1 External Interrupt Enable
KU
IE
Datorteknik OperatingSystem bild 18
RFE Instruction (priviliged)
OLD PREVIOUS CURRENT
KU IE KU IEKU IE
KU IEKU IE? ?
We restore the PREVIOUS (KU,IE) into CURRENT
Datorteknik OperatingSystem bild 19
External Interrupts
Bit 0, (Current Interrupt Enable)– All External Interrupts Enable/ Disable
Bit 15..10, (individual interrupt enable)
INT 4 INT 3 INT 2 INT 1 INT 0 Current IE............
INT 5
15 10 0
Datorteknik OperatingSystem bild 20
Enable External Interrupt 2
Bit 0 = 1, (External Interrupt Enabled) Bit 12 = 1, Interrupt 2 Enabled
Current IE = 1............
15 10 0
INT 4 INT 3 INT 2 INT 1 INT 0INT 5
0 0 0 0 01
Datorteknik OperatingSystem bild 21
Cause Register (CP0 $13)
Bit 5..2, Exception Cause Code Bit 15..10, Interrupt Pending Bit 31, Exception Occur In Branch Slot
10
INT 5 INT 4 INT 3 INT 2 INT 1 Ex 3 Ex 2 Ex 1 Ex 0BS
5 231 15
INT 0.... .... ...
Exception Cause Codesee Table 4.3 LSI Logic
Pending Interrupts
Datorteknik OperatingSystem bild 22
Check if Interrupt 2 Pending
Mask with bit 12
15 10
INT 4 INT 3 INT 2 INT 1 INT 0INT 5
AND
0 0 0 0 0
CP0 $13
0 0 0 0 01
INT 2
Datorteknik OperatingSystem bild 23
Resume User Program
CP0 $14 Holds the Exception Address
(Addr to instruction in EX stage)
mfc0 $k0 $14 ; resume address
jr $k0 ; $k0 kernal reg
rfe ; “delayed branch”
Datorteknik OperatingSystem bild 24
Shared “Stack”
Assume that the User program uses the stack:
Can the Kernal use the same stack ($sp)?
Yes, but remember never to use memory below $sp, it will be destroyed (overwritten)!!
$sp
$sp User Data
User Data
User Data
User Data
Kernal Data
Kernal Data