이 포스팅은 공부를 위해서 "면접을 위한 CS 전공지식 노트 책" 을 참고했다.
🔊 시스템 콜(System Call)??
밑의 그림은 운영체제의 구조를 나타낸것이다.
여기서 인터페이스와 커널 사이에 시스템 콜이 존재하는 걸 알 수 있다.
이렇게 시스템 콜은 운영체제의 커널에 접근하기위한 인터페이스이다. 유저 프로그램이 운영체제의 기능을 사용하기 위해서 커널 함수를 호출하려면 시스템 콜을 거쳐야 한다.
사용자 모드에서 실행되는 유저 프로그램이 직접 커널 모드에 접근할 수 없다. 따라서 시스템 콜을 통해 안전하게 커널의 기능을 사용할 수 있게 하는 것이다.

즉 시스템 콜이란, 운영체제의 커널에 있는 기능을 사용자 프로그램이 사용할 수 있게 하는 인터페이스이다.
💻 시스템 콜의 예시
그럼 시스템 콜의 작동 예시를 한번 살펴보자.
예를 들어 내가 파일을 I/O 의 요청으로 트랩(trap)이 발생해서 파일을 열려고 한다.
1) 유저모드에서 open() 함수를 호출한다. 그러면 유저모드는 파일을 직접 열지 않는다.
2) open() 함수는 파일 이름과 접근 권한을 인자로 받아서, 시스템 콜을 통해 커널에 요청을 보낸다.
3) 커널 모드에서 커널은 파일 시스템에서 해당 파일을 찾고, 열 수 있는지 여부를 확인한 후 파일 디스크립터를 반환한다.
4) 유저모드는 이 파일 디스크립터를 이용해 파일 작업을 수행한다.

이렇게 작동한다. 근데 왜 이렇게 작동해야하는건가? 장점이 뭘까?
📌 시스템 콜의 역할과 필요한 이유
1. 안정성과 보안 : 시스템 콜은 사용자 프로그램이 커널 모드의 자원에 직접 접근하지 못하게 하여 시스템의 안정성과 보안을 유지한다. 이렇게 다른 프로그램이나 시스템 자원으로부터 보호할 수 있다.
2. 자원 접근 제어 : 사용자 프로그램이 하드웨어 자원에 직접 접근하지 못하도록해서 충돌이나 데이터 손상을 방지한다. 시스템콜을 통해 커널이 지원에 대한 접근을 제어한다.
3. 기능 제공 : 유저모드 레벨의 프로그램은 다양한 기능을 구현하기 힘들다. 따라서 직접 구현하기 어려운 다양한 기능을 커널이 제공하고, 시스템 콜을 통해 이러한 기능을 사용할 수 있게 한다.
📝 모드 비트(Modebit)란?
그렇다면, 여기서 Modebit은 뭐고, 시스템 콜이랑 무슨 상관일까??
시스템 콜이 작동할때, Modebit을 이용해서 커널모드와 유저모드를 구분한다. Modebit는 0 또는 1을 가진 플래그 변수이다. 1은 유저모드, 0은 커널 모드를 가리킨다.
👀 Modebit 의 작동 방식
1) 프로그램이 시작되면 기본적으로 유저 모드에서 실행된다. 즉 modebit는 1이다. 이상태에서는 커널 모드의 자원에 접근할 수 없다.
2) 프로그램이 시스템 콜을 호출하면, modebit 가 0으로 변경되어 커널 모드로 전환된다. 이때 커널은 요청을 처리하고 결과를 반환한다.
3) 시스템 콜이 완료되면 modebit 가 다시 유저모드 1로 변경되어 사용자 프로그램이 계속 실행된다.

이렇게 시스템 콜에 대해서 살펴보았다.
'📚 CS > 운영체제' 카테고리의 다른 글
| [OS] 가상 메모리 (1) | 2024.10.14 |
|---|---|
| [OS] 메모리 계층 (레지스터, 캐시, 주기억장치, 보조기억장치) (2) | 2024.10.01 |
| [OS] 인터럽트 & DMA 컨트롤러 (0) | 2024.09.25 |
| [OS] CPU에 대해서 (1) | 2024.08.12 |
| [OS] 운영체제란 ? - 종류, 역할, 구조 (0) | 2024.08.11 |