Download presentation
Presentation is loading. Please wait.
1
Input/Output Interface
Address bus Data bus Control bus address decoder address decoder fffffffc Addr DE I/O Interface Mem 1 ... Mem n Keyboard
2
How to do I/O By “Polling” + Very simple and fast
li $t1 0xfffffffc ;Interface address waitkey: lb $t0 0($t1) ;Poll Keybard nop beq $t0 $r0 waitkey ;no key strike + Very simple and fast - Can’t do any useful work while waiting - Only OK in a single process system, might miss data if other process takes over
3
External Interrupt Let the Interface generate an External Interrupt when data is available + Access I/O Interface only when needed + I/O handling is done by OS (Operating System) I/O addresses can be “privileged” for SAFETY + Data is never lost (if processor fast enough) - Slower than “Polling” We will address that problem later
4
Input/Output Interface
Address bus Data bus Control bus CTRL[INT2]=keyboard strike fffffffc Addr DE I/O Interface Moore about: Buffered I/O “Intelligent Devices” etc. later. Keyboard
5
An External Interrupt Occurs
The “context” of the User program must be restored User Program Kernel Program . .. bne $t0 $r0 upp mfc0 $k0 $14 jr $k0 rfe add $t0 $t1 $t2 .. .
6
Multiple Processes User 1 User 2 User 3 Kernel .text .text .text
.ktext Instructions .data .data .data .kdata Data
7
Time Slicing, Context Switch
On Each Timer Interrupt Store the User program “Context” Choose next User program (process) Round robin process scheduling Restore its “Context” Pass control to User program
8
Process Control Block (PCB)
Resume Address (next PC for this process) Global Data pointer ($gp) Stack pointer ($sp) All registers but $k0, $k1, $gp, $sp $k0, $k1 might be trashed by the Kernel code $gp, $sp stored in the PCB
9
Process Control Block PCB for Process p1 next_pc $gp $sp .text
resume addr base for global data area for p1 .data top of user p1 stack .p1 stack $pc,$sp,$gp are initiated by the OS at “run” time
10
Where are the 28 registers?
PCB p1 PCB p1 next_pc $gp $sp Let’s put them on the user program’s stack! next_pc $gp $sp And adjust the $sp $t0 $t1 … .. $t0 $t1 … .. .p1 stack .p1 stack
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.