..

컴퓨터 구조 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 등