Exceptional Control Flow
youngwiki
개요

프로세서는 한번에 하나씩 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[2]에서의 모든 변화에 대응하기에는 불충분하다. 아래는 그 예시이다.
- disk, network adapter 등으로부터 Data를 받을 때[3]
- 0 나누기를 시도할 때
- Ctrl - C 를 시도할 때
- System Timer가 만료되었을 때(expire)[4]
- 오버플로우(언더플로우)가 발생할 때[5]
각주
- ↑ 프로그램이 실행 중일 때의 상태를 의미한다. 주로 프로그램 내의 변수 값, 레지스터 값, 프로그램 카운터(PC), 스택 포인터 등과 관련이 있다. 즉, 프로그램이 현재 어떤 명령어를 실행하고 있고, 실행 중인 함수나 연산의 중간 결과 등이 프로그램 상태에 포함된다.
- ↑ 운영체제와 하드웨어의 상태를 의미한다. 이는 CPU, 메모리, 디스크, 네트워크, 장치 드라이버 상태, 그리고 시스템이 외부 이벤트에 어떻게 반응하고 있는지 등과 관련이 있다. 예를 들어, 네트워크에서 데이터가 수신되는 상태, 디스크 읽기/쓰기 상태, 시스템 시간 등이 시스템 상태에 포함된다.
- ↑ CPU가 disk보다 100만배는 빠르므로 disk에 작업을 요청한 후 다른 작업을 실행함
- ↑ S.T 만료 -> 인터럽트 발생 -> 현재 프로그램 중단 후 스케줄링 처리 -> 다음 프로그램 실행
- ↑ Exceptional Control Flow가 필요함