Transcript Lecture 13
the Operating System (OS)
Datorteknik OperatingSystem bild 1
The Operating System (OS)
P1:
Editor
P2:
Compiler
P3:
Quake
Arena
Operating
System
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 2
The Operating System (OS)
P1:
Editor
P2:
Compiler
P3:
Quake
Arena
Operating
System
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 3
The Operating System (OS)
P1:
Editor
P2:
Compiler
P3:
Quake
Arena
Operating
System
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 4
The Operating System (OS)
P1:
Editor
P2:
Compiler
P3:
Quake
Arena
Operating
System
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 5
The Operating System (OS)
P1:
Editor
P2:
Compiler
P3:
Quake
Arena
Operating
System
MIPS
At any one time the processor (MIPS) is only excecuting one program (process).
Datorteknik OperatingSystem bild 6
Our Assembler
.text
.data
.ktext
.kdata
User
Kernel
Datorteknik OperatingSystem bild 7
The Hardware
.text
.data
User
ERROR!
OK
.ktext
.kdata
Kernel
Datorteknik OperatingSystem bild 8
How does the User program pass
control to the Operating System?
Take control on ERROR
Pass control explicitly
Datorteknik OperatingSystem bild 9
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 10
Signed/Unsigned Arithmetics
The only difference is that
– Unsigned never causes ERROR
– Signed causes ERROR on Overflow etc.
Signed
Unsigned
ADD
SUB
ADDI
..
ADDU
SUBU
ADDIU
..
Datorteknik OperatingSystem bild 11
Memory Error
Instruction Memory = Bad PC
Data Alignment Error
Access Protected Memory from User mode
Nonexistent Memory
(Page fault Chapter 7)
Datorteknik OperatingSystem bild 12
Do not confuse !
A Memory that tells the pipeline to Wait
– relate to “cache miss”
A Memory Error or Page Fault
– relate to “TLB miss”
Datorteknik OperatingSystem bild 13
The Consequence
A Memory that tells the pipeline to Wait
– Pipeline Stall
A Memory Error or Page Fault
– Exception
Datorteknik OperatingSystem bild 14
Pass Control Explicitly
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 (causes an exception)
Datorteknik OperatingSystem bild 15
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’
ori $a0 $r0 0x00
syscall
ori $a0 $r0 0x01
syscall
or $a1 $r0 $v0
ori $a0 $r0 0x00
syscall
; Char ‘A’
; Write Char
; Read Char
; Move result $v0->$a1
; Echo Char
Datorteknik OperatingSystem bild 16
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 17
Coprocessor CP0
8 Bad Memory Address
12 Status Register
13 Cause Register
14 Exception Address (EPC)
Datorteknik OperatingSystem bild 18
Status Register CP0 ($12)
“Mode Stack”
External Interrupt enable/disable
Datorteknik OperatingSystem bild 19
“Mode Stack”
5
OLD
KU
PREVIOUS
IE
KU
IE
CURRENT 0
KU
IE
KU 0 Kernel Mode
1 User Mode
IE
0 External Interrupt Disable
1 External Interrupt Enable
Datorteknik OperatingSystem bild 20
Exception / Interrupt Occurs
OLD
PREVIOUS
CURRENT
KU
IE
KU
IE
KU
IE
KU
IE
KU
IE
0
0
KU 0 Kernel Mode
1 User Mode
IE 0 External Interrupt Disable
1 External Interrupt Enable
Datorteknik OperatingSystem bild 21
RFE Instruction (priviliged)
OLD
KU
?
PREVIOUS
IE
?
CURRENT
KU
IE
KU
IE
KU
IE
KU
IE
We restore the PREVIOUS (KU,IE) into CURRENT
Datorteknik OperatingSystem bild 22
External Interrupts
Bit 0, (Current Interrupt Enable)
– All External Interrupts Enable/ Disable
Bit 15..10, (individual interrupt enable)
15
INT 5
INT 4
INT 3
INT 2
INT 1
10
0
INT 0
Current
IE
............
Datorteknik OperatingSystem bild 23
Enable External Interrupt 2
Bit 0 = 1, (External Interrupt Enabled)
Bit 12 = 1, Interrupt 2 Enabled
15
10
INT 5
INT 4
0
0
INT 3
0
0
INT 2
INT 1
INT 0
1
0
0
............
Current
IE = 1
Datorteknik OperatingSystem bild 24
Cause Register (CP0 $13)
31
BS
Bit 5..2, Exception Cause Code
Bit 15..10, Interrupt Pending
Bit 31, Exception Occur In Branch Slot
15
....
10
INT 5 INT 4 INT 3 INT 2 INT 1 INT 0
Pending Interrupts
5
....
Ex 3
2
Ex 2
Ex 1
Ex 0
...
Exception Cause Code
see LSI Logic User’s Manual
Datorteknik OperatingSystem bild 25
Check if Interrupt 2 Pending
Mask with bit 12
15
CP0 $13
AND
10
INT 5
INT 4
0
0
0
0
INT 3
INT 2
INT 1
INT 0
0
1
0
0
0
INT 2
0
0
Datorteknik OperatingSystem bild 26
Resume User Program
CP0 $14 Holds the Exception Address
(Addr to instruction in EX stage)
mfc0 $k0 $14
jr
$k0
rfe
; resume address
; $k0 kernel reg
; “delayed branch”
Datorteknik OperatingSystem bild 27
Shared “Stack”
Assume that the User program uses the stack:
Can the Kernel use the same stack ($sp)?
Yes, but remember never to use memory below
$sp, it will be destroyed (overwritten)!!
$sp
Kernel Data
Kernel Data
$sp
User Data
User Data
User Data
User Data
Datorteknik OperatingSystem bild 28