Learning
토픽 4 / 85·운영체제 개요

시스템 호출 (System Call)

시스템 호출 (System Call)

사용자 모드에서 실행되는 프로그램이 커널 모드의 서비스를 요청하는 인터페이스로, 파일·프로세스·메모리·네트워크 등 특권 연산을 안전하게 수행하도록 하는 메커니즘

목적: 커널 서비스 접근, 보안·보호, 하드웨어 추상화, 모드 전환

특징: 커널 모드 전환, 특권 연산, API 제공, 인터럽트/트랩 기반

동작 과정: ① 사용자 프로그램이 시스템 호출 → ② 트랩(소프트웨어 인터럽트) 발생 → ③ 커널 모드 전환 → ④ 커널이 요청 처리 → ⑤ 결과 반환 → ⑥ 사용자 모드 복귀

주요 시스템 호출

  • 프로세스 제어: fork(자식 생성), exec(새 프로그램 로드), exit(종료), wait(자식 대기), kill(시그널 전송)
  • 파일 관리: open(파일 열기), read(읽기), write(쓰기), close(닫기), lseek(위치 이동)
  • 디바이스 관리: ioctl(장치 제어), read/write(데이터 전송)
  • 정보 유지: getpid(PID 조회), time(시간 조회), sysinfo(시스템 정보)
  • 통신: pipe(파이프 생성), socket(소켓 생성), send/recv(데이터 송수신)
  • 메모리 관리: mmap(메모리 매핑), brk/sbrk(힙 영역 조정)

래퍼 함수: C 라이브러리(glibc)가 시스템 호출을 감싸서 편리한 API 제공

시간 오버헤드: 모드 전환, 컨텍스트 저장·복원, 수백 사이클

장점: 보안·보호, 하드웨어 추상화, 표준 인터페이스, 안정성

단점: 성능 오버헤드(모드 전환), 호출 제약

적용사례: 모든 OS(Linux, Windows, macOS), POSIX 표준, 파일 I/O, 네트워크, 프로세스 생성

비교: 시스템 호출(커널 서비스/느림) vs 라이브러리 함수(사용자 공간/빠름)

연관: 커널, 사용자 모드, 커널 모드, 트랩, POSIX