ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] Interrupt와 System Call
    Computer Science/OS 2022. 3. 3. 21:00

    Dual Mode

     

        컴퓨터가 일을 수행하는 가장 기본적인 방식은 메모리에서 instruction을 받아와서 이를 수행하는 것이다. 다만, OS는 다양한 애플리케이션들이 구동되는 환경으로부터 컴퓨터를 지키기 위해 Dual Mode operation을 사용한다. 말 그대로 2가지 모드를 기반으로 컴퓨팅 리소스를 운용한다는 것이다.

       

    User Mode와 Kernel Mode

         Processor Register에 있는 mode bit으로 mode가 전환되는데, mode bit이 0일 때 구동되는 Kernel Mode와 1일 때 구동되는User Mode가 있다. Kernel Mode는 OS 단에서 처리해야 할 명령어들을 수행한다. 예를 들어 User Application에서 시스템 콜을 통해I/O 작업이 요청되었을 때 I/O 작업을 수행한다거나, Timer Interrupt가 발생했을 때 스케줄러를 수행한다든지 하는 명령들이다. 이와 같이 OS를 통해서 critical한 작업들을 수행함으로써 컴퓨터는 Application에서의 악의적인 코드나 잘못 짜여져 컴퓨터 리소스를 낭비하게 된는 상황으로부터 보호받게 된다. User Mode는 이러한 Previleged Instruction을 수행할 수 없는 모드이다. 일반적인 User Process를 수행할 때 사용된다. 

     

     

    System Call

         System Call은 사용자 프로그램이 Kernel 함수를 호출하는 것을 지칭한다. 대표적으로 새로운 프로세스를 만들어내는 fork가 있다. 이러한 System Call을 통해 얻게 되는 이점은 크게 다음 3가지를 들 수 있다.

     

    1. Easier To Program: low-level 코드의 비중이 대폭 감소한다.
    2. Better System Security: Kernel이 해당 요청의 correctness를 interface level에서 체크해볼 수 있다.
    3. Better Program Portability: 하드웨어에 의존성이 있는 low-level 코드가 줄어듦으로써 이식성이 더 좋아진다.

    System Call 구동 원리 (Linux, Intel Architecture)

        리눅스의 경우, System Call은 위와 같이 수행된다.

     

    1. fork()가 호출됐을 때, 리눅스의 표준 라이브러리인 libc.a에 wrapper function의 형태로 구현돼있는 fork()로 점프한다.
    2. eax에 2(System Call Table에서 fork의 고유값)를 저장함으로써 fork를 수행할 것이라는 것을 명시한다.
    3. int 명령을 수행함으로써 Kernel Mode로 operation을 수행한다.
    4. IDT(Interrupt Descriptor Table)에 0x80(=128)번째 entry에 링크돼있는 System Call 게이트웨이 함수를 수행한다.
    5. Context Switching 이후에 System Call Table 2번을 수행한다.
    6. 원래의 위치로 돌아온다.

     

    Interrupt

        Interrupt는 좁은 의미로는 Hardware Interrupt를 뜻하고, 넓은 의미로는 Software Interrupt(Trap)까지 포함한다. 각각에 대한 설명은 다음과 같다. 넓은 의미에서의 Interrupt는 User Mode에서 Kernel Mode로 바뀌게 되는 모든 경우를 포함한다고 볼 수 있다.

     

    • Hardware Interrupt
      • Timer: Process에 배정된 time slice가 만료되었을 경우
      • I/O Interrupt: I/O 작업이 끝났을 경우
    • Software Interrupt(Trap)
      • Internal Trap(Exception): Page fault, Invalid operation 등 오류
      • System Call: I/O Operations, fork 등

     

    컴퓨터 시스템 아키텍처

    +) DMA

     

        DMA(Direct Memory Access) Controller CPU가 Memory에 있는 Instruction들을 수행하고, 와중에 Disk나 Printer 등 I/O Device들의 작업이 완료되면 Device Controller가 Interrupt를 걸고, CPU가 Local Buffer에 있는 내용을 Memory로 옮기게 된다. 하지만 이런 식으로 작업을 진행할 경우 CPU에 과도한 Interrupt가 걸린다는 문제가 있다. 이에 따라 DMA(Direct Memory Access) Controller가 Local Buffer에 있는 결과물을 Memory에 옮기는 일을 수행하고 완료되었을 때 CPU에 Interrupt를 걸게 된다.

    'Computer Science > OS' 카테고리의 다른 글

    동기와 비동기, 블로킹과 논블로킹  (0) 2022.02.25

    댓글

Designed by Tistory.