..
컴퓨터 구조 CS:APP 8장
예외적 제어 흐름(Exceptional Control Flow, ECF)
- ECF는 하드웨어, 커널, 응용 프로그램 모든 수준에서 필수적인 매커니즘
- ECF는 예기치 않은 이벤트에 응답하거나, 컨텍스트 전환을 수행하거나, 인터럽트를 처리하기 위해 사용
- 시스템 호출과 같은 명시적인 흐름 전환도 ECF의 한 형태
하드웨어 수준 ECF: 예외 및 인터럽트
- 예외(Exceptions)
- 프로세서 내부 이벤트
- 예: 0으로 나누기, 페이지 폴트, 시스템 호출
- 인터럽트(Interrupts)
- 외부 디바이스가 CPU에 개입하는 매커니즘
- 트립 핸들러
- 예외/인터럽트 발생 시 커널 모드로 전환 -> 커널 코드 실행 -> 다시 사용자 모드 복귀
- 컨트롤 흐름을 커널로 전달하는 핵심
소프트웨어 수준 ECF: 프로세스 간 전환
- 프로세스(Processes)
- OS가 관리하는 실행 단위
- 컨텍스트 스위칭(Context Switching)
- 한 프로세스에서 다른 프로세스로의 전환
- 타이머 인터럽트나 I/O 인터럽트를 통해 커널이 현재 작업 저장 -> 다음 작업으로 전환
시그널(Signals): 유저 수준의 ECF
- OS가 프로세스에 보내는 작은 메시지
- 시그널 처리 방식
- 기본 동작 또는 핸들러 등록 가능
- sigaction, signal 함수로 사용자 정의 핸들러 지정 가능
- 동기/비동기 시그널
- 동기적: 오류로 인해 현재 명령어에서 발생
- 비동기적: 외부 이벤트로 인해 발생
시스템 호출(System Call)
- 사용자 프로그램이 OS 기능을 요청하는 방법
- 명령을 통해 트랩 발생 -> 커널 모드 전환
에러 처리와 프로세스 종료 흐름
- exit, _exit, abort, atexit
- 프로그램 정상 종료와 비정상 종료를 구분하는 다양한 방법 제공
- 시그널에 의한 강제 종료
- kill 또는 CTRL+C 등