본문으로 바로가기

[프로세스] 예외적인 제어흐름

category System 2018. 1. 18. 13:21

- 컴퓨터의 제어흐름

컴퓨터는 단순히 한가지 일만을 한다. 

전원이 들어간 이후에는 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




참고자료 : 컴퓨터 시스템