> ## Documentation Index
> Fetch the complete documentation index at: https://grit03.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 시스템 콜과 이중 모드

컴퓨터 내부에서 시스템 콜이 호출되면, 아래와 같은 작업이 수행된다.
핵심은, **소프트웨어 인터럽트**와 **커널 모드**, **사용자 모드**이다.

<img src="https://mintlify.s3.us-west-1.amazonaws.com/grit03/images/os/%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%BD%9C.png" alt="시스템 콜" />

운영 체제에는 인터럽트를 발생시키는 특정 명령어가 있는데, **시스템 콜**도 이러한 **소프트웨어 인터럽트**의 일종이다.

### 소프트웨어 인터럽트가 발생했을 때 수행되는 과정

<img src="https://mintlify.s3.us-west-1.amazonaws.com/grit03/images/os/%EC%9D%B4%EC%A4%91%20%EB%AA%A8%EB%93%9C.png" alt="" />

1. CPU는 현재 수행 중인 작업을 백업한다.
2. 커널 영역 내 인터럽트를 처리하기 위한 코드 (여기서는 시스템 콜을 구성하는 코드)를 실행한다.
3. 사용자 영역의 코드 실행을 재개한다.

CPU는 명령어를 실행하는 과정에서 **사용자 영역을 실행할 때의 모드**와 **커널 영역을 실행할 때 모드를 구분**하여 실행한다.

* **사용자 모드**: 사용자 영역에 적재된 코드르 실행할 때의 모드
  * 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 자원에 접근하는 명령어를 만나도 이를 실행하지 않는다.
* **커널 모드**: 커널 영역에 적재된 코드를 실행할 때의 모드

이렇게 두 가지의 모드로 구분하여 실행하는 것을 **이중 모드**라고 한다.
