이전에 말했듯이 CPU의 모드에는 사용자 모드와 커널모드가 있음.
특수 명령어는 커널모드에서만 실행이 가능하기 때문에, 운영체제의 프로그램을 실행할 때는 항상 커널모드에서만 실행해야함.
1. 시스템 호출(System Call) 이란?
운영체제가 응용 프로그램에게 제공하는 함수
여기서 응용 프로그램이란, 사용자 모드에서 작업을 하는 C프로그램을 예로 들 수 있음.

만약 이 응용 프로그램(C 프로그램) 에서 printf() 라는 함수를 호출하면 어떻게 될까?
응용프로그램은 직접 하드웨어를 제어하거나 파일을 읽기/쓰기를 할 수 없음.
-> 운영체제가 이러한 서비스를 커널 모드에서 시스템 호출을 통해서 응용 프로그램에게 제공
때문에 응용 프로그램의 printf()를 호출하면, 이는 커널 모드에서 write()의 명령어를 수행하는 것!!
이러한 시스템 호출 함수를 사용할 때는, 소프트웨어적 인터럽트가 발생함.!!
즉, 응용프로그램이 인터럽트를 통해 cpu에게 내 printf() 함수를 커널 모드에서 write로 운영체제가 처리해줘!!! 하는 것

이러한 소프트웨어적 인터럽트를 trap(트랩)이라고도 하며, 이러한 trap이 커널 모드에서 시스템 호출을 처리하게 함.
2. 시스템 호출(System Call)의 종류
1) 프로세스 실행 및 종료
- 종료(terminate): 프로세스를 종료.
- 적재(load): 프로그램을 메모리에 적재.
- 실행(execute): 프로세스를 실행.
2) 프로세스 속성 관리
- 속성 획득(get attribute): 프로세스의 속성 정보 조회.
- 속성 설정(set attribute): 프로세스 속성 변경.
3) 프로세스 대기 및 동기화
- 지정된 시간만큼 대기(wait time): 일정 시간 동안 실행 중지.
- 사건이 일어나기를 대기(wait event): 특정 이벤트 발생까지 대기.
- 사건이 일어났음을 신호(signal event): 이벤트가 발생했음을 다른 프로세스에 알림.
4) 메모리 관리
- 기억장치 할당 및 해제: 프로세스 실행을 위해 메모리 할당 및 해제.
'OS' 카테고리의 다른 글
| [운영체제] 프로세스(Process) 란? (0) | 2025.03.24 |
|---|---|
| [운영체제] 사용자 인터페이스와 운영체제 (0) | 2025.03.24 |
| [운영체제] 저장장치(Storage) 란? 캐싱(Cashng) 이란? 인터럽트(Interrupt) 란? (0) | 2025.03.17 |
| [운영체제] 프로세서(Processor)의 모드? 메모리(Memory) 란? (0) | 2025.03.12 |
| [운영체제] 프로세서(Processor) 란? (0) | 2025.03.10 |