- 컴퓨터의 제어흐름
컴퓨터는 단순히 한가지 일만을 한다.
전원이 들어간 이후에는 instruction(명령)들만 한번에 한개씩 실행한다. 이러한 실행 흐름을 시스템의 '물리적인 제어흐름' 이라고 한다.
제어흐름을 변경하는 방법에는 Jump와 branch, 혹은 스택을 사용한 return 과 Call 이 있다.
시스템은 예외상황에 대한 제어흐름을 위한 메커니즘이 필요하다.
- 예외 상황 (Exceptions)
예외 상황은 특정 사건에 대한 반응으로 OS커널로 제어가 전환되는 것을 말한다.
유저에서 사건이 일어나면 커널 모드로 돌아가서 핸들러를 통한 예외를 처리하고 다시 사건 이후의 자리로 리턴하게 된다.
예외적인 제어흐름에는 비동기형과 동기형으로 나눠지게 된다.
- 비동기형(Asynchronous) 예외 (인터럽트, interrupts)
프로세서의 외부 사건으로 부터 발생한다.
프로세서의 인터럽트 핀을 세팅해서 발생 표시, 핸들러 실행 후에 인터럽트 직전 명령어 다음 으로 복귀한다.
인터럽트의 예에는 입출력 인터럽트 (키보드의 ctrl-c), 하드 리셋 인터럽트 (컴퓨터의 reset), 소프트 리셋 인터럽트 (ctrl-alt-delete)가 있다.
- 동기형(Synchronous) 예외
- Traps
명령어 결과로 발생하는 의도적인 예외 , 처리 후에 다음 명령어로 복귀한다. (ex. system call, breakpoint trap, special instruction)
- Faults
핸들러가 정정할 수 있는 에러의 결과로 발생, Fault를 일으켰던 명령을 다시 실행하거나 Abort (ex. page fault, protection fault, floating point exception)
- Aborts
하드웨어 오류와 같이 복구 불가능한 에러의 결과로 발생하는 예외, 응용프로그램으로 복귀 불가, 현재 프로그램 종료 (패러티, 시스템 체크 에러)
- 시스템 콜(System call)
: os가 제공하는 api, 고유의 번호를 갖고 있다
0 |
read |
Read file |
1 |
write |
Write file |
2 |
open |
Open file |
3 |
close |
Close file |
4 |
stat |
Get info about file |
57 |
fork |
Create process |
59 |
exece |
Execute program |
62 |
kill |
Send signal |
참고자료 : 컴퓨터 시스템
'System ' 카테고리의 다른 글
[시스템] 프로세스 (0) | 2018.01.21 |
---|---|
어셈블리어 (assembly) -2- (명령어 예제, 조건문 ,반복문 예제) (0) | 2018.01.16 |
어셈블리어 (assembly) -1- (개념, 명령어) (0) | 2018.01.16 |
IEEE 754 floating point(부동 소수점) (0) | 2017.10.16 |