시스템 콜 (System Call) - 2. 시스템 콜의 개념을 쉽게 이해하기

2025. 2. 8. 14:02정보기술/운영체제 (OS)

2장: 시스템 콜의 개념을 쉽게 이해하기


1. 시스템 콜은 운영체제와 대화하는 방법

앞서 1장에서 운영체제가 컴퓨터 하드웨어와 프로그램 사이에서 중개 역할을 한다고 배웠습니다. 하지만 프로그램이 운영체제와 대화하려면 어떻게 해야 할까요? 바로 **시스템 콜(System Call)**을 사용해야 합니다.

💡 시스템 콜이란?

  • 프로그램이 운영체제에게 특정 작업을 요청하는 방법입니다.
  • 파일을 열거나, 데이터를 저장하거나, 네트워크를 통해 정보를 주고받을 때 사용됩니다.
  • 운영체제의 보호 아래에서 안전하게 하드웨어를 사용할 수 있도록 도와줍니다.

📌 시스템 콜이 필요한 이유

  1. 보안: 프로그램이 직접 하드웨어를 조작하면 시스템이 불안정해지고, 악성 프로그램이 데이터를 조작할 위험이 있습니다. 시스템 콜을 사용하면 운영체제가 이를 통제합니다.
  2. 안정성: 운영체제가 직접 하드웨어를 관리하므로, 프로그램이 실수로 중요한 데이터를 손상시키는 일이 줄어듭니다.
  3. 일관성: 운영체제가 제공하는 기능을 사용하면, 프로그램을 여러 운영체제에서 쉽게 실행할 수 있습니다.

📢 프로그램과 운영체제의 관계

운영체제가 없다면 프로그램이 직접 하드웨어를 조작해야 합니다. 하지만 운영체제가 있으면 프로그램은 시스템 콜을 통해 하드웨어를 제어할 수 있습니다.

📍 예를 들어, 파일을 저장하는 과정에서 프로그램이 직접 하드디스크의 데이터를 조작하는 것이 아니라, 운영체제에게 "이 파일을 저장해 주세요"라고 요청하는 것입니다.


2. 비유로 이해하는 시스템 콜

🍽️ 시스템 콜을 식당에서 주문하는 과정에 비유하기

시스템 콜을 이해하기 위해 식당에서 음식을 주문하는 상황과 비교해 봅시다.

💡 손님(프로그램)과 식당(운영체제)

  1. 손님(프로그램)이 식당(운영체제)에 들어와서 음식을 주문하려고 합니다.
  2. 하지만 손님은 직접 주방(하드웨어)으로 들어가 요리를 할 수 없습니다.
  3. 대신, 종업원(시스템 콜)에게 주문을 합니다.
  4. 종업원은 주방장(운영체제 커널)에게 요청을 전달합니다.
  5. 주방장은 요리를 완성하고, 종업원은 이를 손님에게 가져다줍니다.

📢 이 비유를 시스템 콜에 적용해 보면

  • 손님(프로그램): 특정 작업(파일 저장, 데이터 전송 등)을 하고 싶은 애플리케이션.
  • 종업원(시스템 콜): 운영체제와 대화하는 역할, 요청을 운영체제에 전달.
  • 주방장(운영체제 커널): 실제로 파일을 저장하고, 데이터를 전송하는 등의 작업을 처리.
  • 주방(하드웨어): 실제로 프로그램이 사용하려는 리소스(CPU, 메모리, 디스크, 네트워크 등).

이 비유에서 중요한 점은 손님이 직접 주방에 들어가 요리할 수 없다는 것입니다. 즉, 프로그램이 직접 하드웨어를 조작할 수 없고, 운영체제를 통해서만 접근할 수 있다는 개념과 동일합니다.


3. 사용자 모드와 커널 모드란?

운영체제와 시스템 콜을 이해하려면 **사용자 모드(User Mode)**와 **커널 모드(Kernel Mode)**라는 개념을 알아야 합니다.

📌 운영체제의 두 가지 모드

컴퓨터의 CPU는 두 가지 모드에서 실행됩니다.

  1. 사용자 모드(User Mode)
    • 일반적인 프로그램(웹 브라우저, 게임, 텍스트 편집기 등)이 실행되는 모드입니다.
    • 이 모드에서는 하드웨어에 직접 접근할 수 없습니다.
    • 프로그램이 시스템 콜을 사용하여 운영체제에게 요청을 보내야 합니다.
  2. 커널 모드(Kernel Mode)
    • 운영체제의 핵심 부분이 실행되는 모드입니다.
    • 이 모드에서는 CPU, 메모리, 디스크, 네트워크 등 모든 하드웨어에 직접 접근할 수 있습니다.
    • 시스템의 안정성과 보안을 유지하기 위해 사용자 프로그램이 직접 커널 모드에서 실행될 수 없습니다.

💡 사용자 모드와 커널 모드의 차이

특징 사용자 모드(User Mode) 커널 모드(Kernel Mode)
실행 주체 일반 프로그램 (예: 웹 브라우저, 게임) 운영체제 (커널)
하드웨어 접근 ❌ 불가능 ✅ 가능
시스템 리소스 제어 ❌ 직접 불가능 ✅ 가능
실행 속도 상대적으로 빠름 보안 점검 때문에 다소 느림

4. 시스템 콜이 실행되는 과정 (컨텍스트 스위칭 포함)

  1. 프로그램이 시스템 콜을 호출하면 CPU는 사용자 모드(User Mode)에서 커널 모드(Kernel Mode)로 전환됩니다.
  2. 운영체제가 요청을 처리하고, 필요한 작업(예: 파일 읽기, 데이터 전송 등)을 수행합니다.
  3. 작업이 끝나면 CPU가 다시 사용자 모드로 전환되어 프로그램이 계속 실행됩니다.
  4. 이 과정에서 컨텍스트 스위칭(Context Switching)이 발생합니다.

⚡ 컨텍스트 스위칭이란?

컨텍스트 스위칭(Context Switching)은 CPU가 실행 중인 프로그램의 상태(컨텍스트)를 저장하고, 다른 작업(운영체제의 시스템 콜 처리 등)으로 전환한 후, 다시 원래 프로그램으로 돌아오는 과정입니다.

📍 시스템 콜을 호출하면 CPU는 현재 실행 중인 프로그램의 상태를 저장한 후, 운영체제의 커널 코드로 전환합니다.
📍 작업이 완료되면 다시 프로그램의 상태를 복원하고, 사용자 모드에서 실행을 계속합니다.

이 과정이 필요한 이유는 운영체제가 여러 프로그램을 동시에 실행하고 관리해야 하기 때문입니다. CPU는 순간순간 다른 프로그램이나 운영체제의 작업을 처리해야 하므로, 컨텍스트를 저장하고 복원하는 작업이 필수적입니다.


🚀 정리 및 핵심 요약

시스템 콜은 운영체제와 프로그램이 대화하는 방법이다.
✅ 프로그램이 하드웨어를 직접 조작할 수 없기 때문에, 운영체제에게 요청하는 방식(시스템 콜)을 사용한다.
식당 비유를 통해, 시스템 콜이 운영체제에게 요청을 전달하는 역할을 한다는 것을 이해할 수 있다.
✅ CPU에는 사용자 모드(User Mode)와 커널 모드(Kernel Mode)가 있으며, 프로그램이 시스템 콜을 호출하면 커널 모드에서 운영체제가 요청을 처리한다.
시스템 콜 실행 과정에서 컨텍스트 스위칭(Context Switching)이 발생하며, CPU가 실행 중인 프로그램의 상태를 저장하고 복원하는 작업이 수행된다.