개요
프로세서는 한번에 하나씩 instruction을 읽고 실행한다. 이때 프로세서가 실행하는 instruction의 순서를 control flow라고 한다.
Altering the Control Flow
Control FLow를 수정하는 메커니즘은 두가지가 존재한다.
- Jumps and Branches
- Jump: unconditional branch (ex: goto)
- Branches: 조건문, 반복문
- Call and Return: program state[1]에서의 변화에 반응한다.
하지만 위의 두 메커니즘은 system state에서의 모든 변화에 대응하기에는 불충분하다. 아래는 그 예시이다.
- disk, network adapter 등으로부터 Data를 받을 때[2]
- 0 나누기를 시도할 때
- Ctrl - C 를 시도할 때
- System Timer가 만료되었을 때(expire)[3]
- 오버플로우(언더플로우)가 발생할 때