CS/운영체제

[운영체제] 시스템 콜(System Call)

Heeyeon Choi 2024. 10. 31. 20:41
728x90

시스템 콜의 역할

시스템 콜은 응용 프로그램과 운영체제 간의 인터페이스 역할을 합니다. 사용자는 운영체제의 커널에 직접 접근할 수 없으므로, 시스템 콜을 통해 안전하게 커널 기능을 사용할 수 있습니다. 시스템 콜을 이용하여 사용자 프로그램은 하드웨어 자원에 접근하고 관리할 수 있게 됩니다.

시스템 콜의 종류

시스템 콜은 기능에 따라 여러 종류로 나눌 수 있습니다.

  1. 프로세스 제어 (Process Control)
    • 기능: 프로세스 생성, 종료, 일시 중단 및 재개, 프로세스 우선순위 변경 등.
    • : fork(), exec(), exit(), wait()
  2. 파일 관리 (File Management)
    • 기능: 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 파일 속성 변경 등.
    • : open(), read(), write(), close(), unlink()
  3. 장치 관리 (Device Management)
    • 기능: 장치 할당, 해제, 읽기 및 쓰기, 장치 속성 설정 등.
    • : ioctl(), read(), write()
  4. 정보 유지 (Information Maintenance)
    • 기능: 시스템 시간과 날짜 조회, 프로세스나 파일의 속성 조회, 시스템 환경 설정 등.
    • : getpid(), alarm(), sleep(), gettimeofday()
  5. 통신 (Communication)
    • 기능: 프로세스 간 메시지 전달, 소켓을 통한 네트워크 통신 등.
    • : pipe(), shmget(), mmap(), socket()

시스템 콜의 동작 과정

  1. 시스템 콜 호출: 사용자 프로그램이 특정 작업을 요청하면, 해당 작업에 맞는 시스템 콜을 호출합니다.
  2. 커널 모드 전환: 시스템 콜이 호출되면, CPU는 **사용자 모드(User Mode)**에서 **커널 모드(Kernel Mode)**로 전환되어 권한이 상승됩니다.
  3. 작업 수행: 커널 모드에서 운영체제가 필요한 작업을 수행하고, 결과를 반환합니다.
  4. 사용자 모드 복귀: 작업이 완료되면 CPU는 사용자 모드로 전환하여, 프로그램이 정상적으로 진행됩니다.

시스템 콜의 예

  • 파일 열기: open(filename, flags)는 파일을 열고, 파일 디스크립터를 반환하는 시스템 콜입니다.
  • 프로세스 생성: fork()는 새로운 프로세스를 생성하여 부모 프로세스를 복제하는 시스템 콜입니다.
  • 데이터 읽기: read(fd, buffer, count)는 특정 파일 디스크립터로부터 데이터를 읽어오는 시스템 콜입니다.

시스템 콜의 중요성

  • 안정성 및 보안성: 시스템 콜은 사용자 프로그램이 커널에 접근할 수 있는 경로를 제한하여 시스템의 안정성과 보안성을 보장합니다.
  • 하드웨어 추상화: 시스템 콜을 통해 프로그램이 하드웨어와 직접 소통하지 않고 운영체제를 통해 제어할 수 있게 되어, 하드웨어 독립성이 유지됩니다.
  • 자원 관리 효율성: 시스템 자원은 운영체제가 관리하는 것이 효율적이며, 시스템 콜을 통해 이를 효과적으로 사용할 수 있습니다.

시스템 콜은 운영체제의 기능을 안전하고 효율적으로 제공하여, 사용자 프로그램이 시스템 자원을 활용할 수 있도록 돕는 중요한 메커니즘입니다.

 
4o
728x90