시스템 호출이란 사용자 프로그램이 실행 중인 운영체제의 커널(kernel)에 서비스를 요청하는 프로그래밍적 방법
👉 프로세스와 운영체제 사이의 인터페이스 역할
📌 중요 포인트
시스템 호출이 발생하면 반드시 User Mode → Kernel Mode → User Mode 전환이 일어난다.
현재 실행 중인 작업을 중단하고, 즉시 처리해야 할 이벤트가 발생했음을 알리는 신호
| Trap | Interrupt |
|---|---|
| 트랩은 사용자 프로그램이 운영체제에게 즉시 어떤 기능을 수행하도록 지시하기 위해 발생시키는 신호이다. | 인터럽트는 즉각적인 처리가 필요한 이벤트가 발생했음을 알리기 위해 하드웨어가 CPU에 보내는 신호이다. |
| 동기적(synchronous) 처리 방식이다. | 비동기적(asynchronous) 처리 방식이다. |
| 모든 트랩은 인터럽트이다. | 모든 인터럽트가 트랩인 것은 아니다. |
| 사용자 프로그램의 명령어에 의해 생성된다. | 하드웨어 장치에 의해 생성된다. |
| 소프트웨어 인터럽트라고도 불린다. | 하드웨어 인터럽트라고도 불린다. |
| 운영체제 내의 특정 기능을 실행하며, 제어를 트랩 핸들러(trap handler)에게 넘긴다. | CPU가 특정 인터럽트 핸들러(interrupt handler) 루틴을 실행하도록 강제한다. |
동기적(synchronous) 소프트웨어 인터럽트
printf()printf("%s\n", str);
printf()는 사용자 공간(User Space)의 C 라이브러리 함수write() 시스템 호출을 사용write() 시스템 호출이 실제로 출력 장치에 데이터를 전달즉,
printf() → write() → 시스템 호출 → 트랩 발생 → 커널 처리
| 분류 | 설명 |
|---|---|
| 프로세스 제어 (Process Control) | • 프로세스 생성 / 종료 • 로드(load), 실행(execute) • 프로세스 속성 설정 / 조회 • 시간 대기, 이벤트 대기 • 메모리 할당 및 해제 |
| 파일 관리 (File Management) | • 파일 생성 / 삭제 • 파일 열기 / 닫기 • 읽기 / 쓰기 / 위치 재설정 • 파일 속성 설정 / 조회 |
| 장치 관리 (Device Management) | • 장치 요청 / 해제 • 장치 읽기 / 쓰기 • 장치 속성 설정 / 조회 • 장치 논리적 연결 / 분리 |
| 정보 유지 관리 (Information Maintenance) | • 시간 / 날짜 설정 및 조회 • 시스템 데이터 관리 • 프로세스, 파일, 장치 속성 관리 |
| 통신 (Communication) | • 통신 연결 생성 / 삭제 • 메시지 송수신 • 상태 정보 전달 • 원격 장치 연결 / 분리 |
| 보호 (Protection) | • 파일 접근 권한 설정 / 조회 |
fork()
clone()
clone_flags를 통해 공유 범위 제어| 개념 | 특징 |
|---|---|
| System Call | 사용자 프로그램이 커널 서비스 요청 |
| Interrupt | 하드웨어 중심, 비동기 |
| Trap | 소프트웨어 중심, 동기 |
| fork() | 모든 상태 복사 → 프로세스 |
| clone() | 일부 상태 공유 → 스레드 |