콘텐츠로 이동

시스템 콜 유형 (System Call Types)

Jan 22, 2026 · Updated Jan 27, 2026

시스템 콜은 응용 프로그램이 운영체제 서비스에 접근하기 위한 인터페이스로, 각 범주는 특정 유형의 운영체제 서비스를 제공한다. 크게 6가지 주요 범주로 분류된다.

기능설명
create process, terminate process프로세스 생성/종료
load, execute프로그램 로드/실행
get/set process attributes프로세스 속성 조회/설정
wait event, signal event이벤트 대기/시그널
allocate and free memory메모리 할당/해제
  • 정상 종료: end()
  • 비정상 종료: abort() → 메모리 덤프, 에러 메시지
  • 예: fork(), exec(), wait(), exit()
기능설명
create file, delete file파일 생성/삭제
open, close파일 열기/닫기
read, write, reposition읽기/쓰기/위치 변경
get/set file attributes파일 속성(이름, 타입, 보호코드 등) 조회/설정

예: open(), read(), write(), close()

기능설명
request device, release device장치 요청/해제
read, write, reposition읽기/쓰기/위치 변경
get/set device attributes장치 속성 조회/설정
logically attach or detach논리적 연결/분리
  • 파일과 장치의 유사성: UNIX는 파일과 장치를 유사하게 취급
  • 예: ioctl(), read(), write()
기능설명
get/set time or date시간/날짜 조회/설정
get/set system data시스템 데이터 조회/설정
get/set process/file/device attributes속성 조회/설정
  • 디버깅 지원: dump(), strace
  • 예: getpid(), alarm(), sleep()
기능설명
create/delete communication connection통신 연결 생성/삭제
send, receive messages메시지 송수신
transfer status information상태 정보 전송
attach or detach remote devices원격 장치 연결/분리
  • 두 가지 모델: 메시지 패싱, 공유 메모리
  • 예: pipe(), shm_open(), mmap()
기능설명
get file permissions파일 권한 조회
set file permissions파일 권한 설정
  • 리소스 접근 제어 메커니즘 제공
  • 예: chmod(), umask(), chown()
범주WindowsUNIX
프로세스 제어CreateProcess(), ExitProcess(), WaitForSingleObject()fork(), exit(), wait()
파일 관리CreateFile(), ReadFile(), WriteFile(), CloseHandle()open(), read(), write(), close()
장치 관리SetConsoleMode(), ReadConsole(), WriteConsole()ioctl(), read(), write()
정보 유지GetCurrentProcessID(), SetTimer(), Sleep()getpid(), alarm(), sleep()
통신CreatePipe(), CreateFileMapping(), MapViewOfFile()pipe(), shm_open(), mmap()
보호SetFileSecurity(), InitializeSecurityDescriptor()chmod(), umask(), chown()

UNIX/Linux에서 시스템 콜 인터페이스의 일부를 제공합니다.

  • 예: printf() → 내부적으로 write() 시스템 콜 호출
  1. 파일 이름 입력 (시스템 콜로 프롬프트 출력, 키보드 읽기)
  2. 입력 파일 열기, 출력 파일 생성 (open, create)
  3. 읽기/쓰기 루프 (read, write)
  4. 파일 닫기 (close)
  5. 정상 종료 (end)
  • Arduino (싱글태스킹): 한 번에 하나의 스케치만 메모리에 존재
  • FreeBSD (멀티태스킹): 셸이 fork()로 새 프로세스 생성, exec()로 프로그램 로드