티스토리 뷰

Exceptional Control Flow와 System Call

예외적인 제어 흐름과 시스템 콜

 

[ Mode ]

  Mode Bit : 모드를 구분해주는 비트. 

  Dual Mode

    : 운영 체제를 보호하기 위해 자원에 대한 접근 권한을 모드로 나눠놓는 방법.

    : 보통 0일 때 User Mode, 1일 때 Kernel Mode라 한다.

 

    보호 영역

      1. Privileged Instruction

        : Kernel Mode에서만 사용 가능한 명령어들.

        : Interrupt의 활성·비활성 관리, 프로세스 홀팅(halting), Mode Bit 변경, I/O 직접 접근 등

      2. Memory Access

        : 유저 코드가 Kernel을 수정하지 못하도록 방지.

        : 아무 메모리나 읽고 쓰는 것을 방지.

      3. Access to Hardware

        : Kernel만 Hardware와 직접 상호작용 할 수 있도록 함.

      4. Programmable Timer Interrupt

        : Kernel만 관리 가능.

        : Context Switch를 강제하는 데 사용.

 

[ Control Flow ]

  Control Flow

    : 프로그램에서 실행되는 각 구문, 명령어나 함수가 호출되는 순서.

    : 일반적인 Control Flow는 Call과 Return, Branch로의 이동 등 Program State 반응에 최적화 되어 있음.

 

  Exceptional Control Flow

    : 일반적인 Control Flow는 반응하기 어려운 System State에 반응하기 위한 예외적인 Control Flow.

    : 이벤트가 발생하였을 때 흐름이 커널로 옮겨진다.

    : Exception Handler를 통해 예외가 처리된다.

    : Mode Switch 발생.

    : 일반적인 Control Flow의 경우 next가 있지만, Exception의 경우 없을 수 있음. → Process Kill 등

Exceptional Control Flow

 

[ Interrupt ]

  Interrupt

    : 프로그램을 실행 중에 예외 상황이 발생하여 처리가 필요한 경우 작업을 중단하고 특정 작업을 수행하는 것.

    : Control Flow에서 예상하지 못한, 프로세서 외부 이벤트로 인해 발생.

    : 통상적으로 말하는 Interrupt외부 인터럽트(External Interrupt)

    : Exception내부 인터럽트(Internal Interrupt)라고 한다.

 

[ Exception ]

  Exception

    : 프로세서 내부에서 명령 실행의 결과로 발생하는 이벤트로 인해 발생.

    : Exceptional Control Flow를 유도.

 

  Intentional Exception

    : 의도된 Exception.

    : next instruction을 반환한다.

Control Flow about Opening File

  Unintentional Exceptions and Recoverable

    : 의도되지 않은 Exception이지만 복구 가능한 Exception. Faults라고도 부른다.

    : 작업이 재실행되거나 종료된다.

Control Flow about Page Fault
Control Flow about Segmentation Fault

  Unintentional Exceptions and Unrecoverable

    : 의도되지 않았고, 복구 불가능한 Exception. Aborts라고도 부른다.

    : 현재 프로그램이 종료된다.

 

  Exception Tables

    : 예외 처리를 위해 함수 포인터로 구성 된 배열.

    : 각 이벤트마다 고유 식별자가 있으며, 시스템마다 정의가 다를 수 있음.

    : Interrupt Table 또는 Vector Table이라고도 부른다.

 

[ System Call ]

  System Call

    : OS의 Kernel이 제공하는 서비스에 대해 Kernel에 접근하기 위한 인터페이스.

    : syscall 명령어를 사용하며, %rax 레지스터에 mov로 syscall num을 전달.
    : Heavy한 Instruction.

    : 시스템 자원을 보호하기 위한 목적.
    : 다양한 이유로 실패할 수 있으며, 이때 -1이나 null을 return.

       ( -1을 return했다고 항상 실패는 아니지만, 대부분의 상황에서 그렇다 )

        1. 시스템에 리소스가 부족한 경우

        2. 시스템 콜에 대한 인자가 올바르지 않을 경우

        3. 프로그램 권한이 없는 작업을 수행하려고 하여 시스템 콜이 차단당하는 경우 (Linux 환경)

        4. 프로그램 외부의 이유로 시스템 콜이 실패하는 경우

        등의 여러 가지 이유 존재.

    : <errno.h>의 errno value로 어떤 에러가 나타났는지 알 수 있음.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함