47 lines
1.2 KiB
Markdown

# Input / Output Subsystem
Handles devices that allow the computer system to:
* Communicate and interact with the outside world
- Screen, keyboard, printer
* Store information
![[io-subsystem.png]]
# The Control unit
Program stored in memory. (machine language in binary)
Task of control unit is to execute programs by:
* Fetch: from memory the next instruction
* Decode: instruction to determine what to do
* Execute: issuing signals to ALU, memory and IO systems.
Repeats until HALT instruction.
# Typical Machine Instructions
MOV: move data from a to b
ADD: add numbers
SUB: subtract numbers
JMP: transfers program control flow to the indicated instruction
![[example-machine-lang.png]]
# CPU Time vs IO Time
Total time required to run program is: CPU Time + IO Time
Typical time to read from IO: 20ms
Typical time to run instruction: 20ns
CPU can execute up to 200 million instructions while a block is read from a hard disk.
Conclusion: While I/O is executed, CPU is idling.
![[cpu-vs-io.png]]
Were waiting a lot on IO time to finish, very inefficient. We can solve this using multitasking!
# Multitasking
To speed up computers we overlap CPU time and IO Time.
While a program waits for IO, o