MinChur

운영체제 기초: 시스템 콜과 리눅스 커널의 소통

|
1 min read

운영체제의 핵심인 커널과 사용자 프로그램 사이의 가교 역할을 하는 시스템 콜의 개념을 배우고, strace를 이용해 리눅스 시스템 콜을 직접 관찰해 봅니다.

1. 운영체제와 커널

운영체제는 하드웨어를 관리하고 사용자에게 편리한 인터페이스를 제공하는 소프트웨어입니다. 그중에서도 자원 할당, 프로세스 관리 등 핵심 기능을 담당하는 부분을 **커널(Kernel)**이라고 부릅니다.

2. 시스템 콜 (System Call)

사용자 모드에서 실행 중인 프로그램이 커널 모드의 기능을 사용하고 싶을 때 보내는 '서비스 요청 신호'입니다.

🔹 대표적인 리눅스 시스템 콜

  • 파일 관련:
    text
    open
    (파일 열기),
    text
    read
    (읽기),
    text
    write
    (쓰기),
    text
    close
    (닫기)
  • 프로세스 관련:
    text
    fork
    (복제),
    text
    exec
    (덮어쓰기),
    text
    exit
    (종료),
    text
    getpid
    (PID 확인)
  • 기타:
    text
    syslog
    (로그 기록)

파일 디스크립터(File Descriptor): 리눅스에서

text
open
시스템 콜이 성공하면 반환하는 고유한 숫자로, 이후의 모든 파일 작업은 이 숫자를 통해 이루어집니다.

3. 실습: strace로 시스템 콜 추적하기

리눅스에서는

text
strace
도구를 사용하여 프로그램이 실행되는 동안 어떤 시스템 콜이 호출되는지 실시간으로 관찰할 수 있습니다.

  • 설치:
    text
    sudo apt install strace
  • 사용법:
    • text
      strace ls
      :
      text
      ls
      명령어가 호출하는 모든 시스템 콜 출력
    • text
      strace -o output.txt ls
      : 결과를 파일로 저장
    • text
      strace -c ls
      : 호출된 시스템 콜의 통계(횟수, 시간 등) 요약 출력
    • text
      strace -e trace=open,read ls
      : 특정 시스템 콜만 필터링해서 확인