시스템 콜(System Call)의 개념, 동작과 종류에 대해 알아보자!
시스템 콜(System Call) 개념
시스템 콜(System Call)은 서비스를 호출하는, 즉 커널에 접근하기 위한 인터페이스이다.

user mode는 시스템 콜을 이용하여 kernel mode에서의 기능을 수행할 수 있다.
C와 C++ 같은 고급 언어로 작성되는 API 함수를 호출하면 → API는 내부적으로 시스템 콜을 호출하여 OS 커널 기능을 수행한다.
❓ 왜 시스템 콜을 직접 호출하지 않고 API를 이용하여 간접적으로 호출할까?
❗️시스템 콜은 하드웨어와 직접 상호작용하기 때문에, API 함수가 시스템 콜 호출을 추상화한다면 프로그래머가 함수 호출 만으로 시스템 콜을 수행할 수 있다. 따라서 시스템 콜에 대한 변경이나 에러 처리도 유연하게 처리할 수 있으므로 유지보수가 쉽다.
참고로 OS가 사용하는 API는 제각기다! (호출하는 함수 이름이 다르다.)
- 윈도우: Win32 API
- POSIX 기반 시스템(UNIX, Linux, Mac OS X): POSIX API
- JVM: Java API
시스템 콜(System Call) 동작

다음은 시스템 콜이 동작하는 과정이다!
시스템 콜 인터페이스(System Call Interface)는 테이블에 커널이 정의한 "인덱싱 된 시스템 콜 번호"를 가진다.
예를 들어 open()을 호출하면
→ 시스템 콜 인터페이스는 테이블에서 open()에 해당하는 시스템 콜 번호인 i번을 찾아
→ 커널 내부의 서비스를 실행한다.
→ 실행을 마치면 리턴 값(파일 디스크립터 번호)과 상태 정보(성공 or 에러 코드 값)를 유저 프로그램으로 return 한다.

만약 커널로 데이터도 함께 전달하고 싶다면
레지스터에 값 또는 주소를 담은 후, 커널 내부의 서비스에서 그 값을 읽거나 주소를 참조하여 데이터를 처리한다.
- 값을 담는 경우: 레지스터에 들어갈 수 있는 크기(8바이트 이내)의 값
- 주소를 담는 경우: 레지스터에 들어갈 수 없는 크기의 값.
⇒ 값을 메모리(스택 or 힙)에 담고, 메모리의 주소를 레지스터에 담는다.
시스템 콜(System Call) 종류
다음은 커널 기능을 수행할 수 있는 시스템 콜의 종류이다.
1. 프로세스 제어 (Process Control)
- 끝내기(exit), 중지 (abort)
- 적재(load), 실행(execute)
- 프로세스 생성(create process) - fork
- 프로세스 속성 획득과 속성 설정
- 시간 대기 (wait time)
- 사건 대기 (wait event)
- 사건을 알림 (signal event)
- 메모리 할당 및 해제
2. 파일 조작 (File Manipulation)
- 파일 생성 / 삭제 (create, delete)
- 열기 / 닫기 / 읽기 / 쓰기 (open, close, read, wirte)
- 위치 변경 (reposition)
- 파일 속성 획득 및 설정 (get file attribute, set file attribute)
3. 장치 관리 (Device Manipulation)
- 하드웨어의 제어와 상태 정보를 얻음 (ioctl)
- 장치를 요구(request device), 장치를 방출 (relese device)
- 읽기 (read), 쓰기(write), 위치 변경
- 장치 속성 획득 및 설정
- 장치의 논리적 부착 및 분리
4. 정보 유지 (Information Maintenance)
- getpid(), alarm(), sleep()
- 시간과 날짜의 설정과 획득 (time)
- 시스템 데이터의 설정과 획득 (date)
- 프로세스 파일, 장치 속성의 획득 및 설정
5. 통신 (Communication)
- pipe(), shm_open(), mmap()
- 통신 연결의 생성, 제거
- 메시지의 송신, 수신
- 상태 정보 전달
- 원격 장치의 부착 및 분리
6. 보호 (Protection)
- chmod()
- umask()
- chown()
:)
출처
https://velog.io/@gang_shik/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%BD%9CSystem-Call
'Computer Science > 운영체제' 카테고리의 다른 글
| [OS] 메모리 관리- 페이징(Paging)과 세그먼테이션(Segmentation) (2) | 2025.08.21 |
|---|---|
| [OS] 프로세스 동기화(Process Synchronization) (5) | 2025.08.03 |
| [OS] IPC(Inter-Process Communication) (4) | 2025.07.31 |
| [OS] GC(Garbage Collection, 가비지 컬렉션) (1) | 2025.07.21 |
| [OS] 프로세스(Process) vs 스레드(Thread) (0) | 2025.06.19 |