운영체제는 사용자 모드와 커널 모드로 나뉘어 동작
🔖사용자 모드
사용자 모드에서 사용자 애플리케이션 코드가 실행
- 접근할 수 있는 메모리 영역이 사용자에게 허용된 정도로 제한
- 하드웨어에 직접 접근 불가 → 접근 위해 시스템 콜 호출
🔖커널 모드
운영체제가 CPU를 사용하는 모드
- 모든 시스템 메모리와 CPU Instruction에 접근 가능
- 하드웨어에 직접 접근 가능 (하드웨어를 제어하는 명령어 실행)
🔖왜 나뉘어 동작할까? 시스템을 보호하기 위해서 나뉘어 동작 권한 없이 시스템 내부의 데이터를 건들일 수 있다면, 시스템을 해칠 수 있음
📖시스템 콜
운영 체제의 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한
인터페이스

- 응용프로그램이 커널 영역의 기능을 사용자 모드에서 사용 가능하도록 함
📖시스템 콜 처리

📎시스템 콜 처리 예시
open()이 호출된 경우
- 사용자 모드에서 사용자 프로세스가 시스템 콜 호출 → 커널 모드 진입
- 커널은 내부적으로 시스템 콜을 구분하기 위해 기능별로 고유번호 할당, 그 번호에 해당하는 제어 루틴 정의
- 커널은 요청받은 시스템 콜에 대응하는 고유번호 확인, 그 번호에 맞는 서비스 루틴 호출
- open()에 매칭된 커널 함수인 sys_open() 실행
- 커널은 서비스 루틴 처리 → 사용자 모드 전환
📖시스템 콜 유형
1. 프로세스 제어(Process Control)
- fork(), exec(), wait(), exit()
2. 파일 조작(File Manipulation)
- open(), read(), write(), close()
3. 장치 관리(Device Management)
- ioctl(), read(), write()
4. 정보 유지(Information Maintenance)
- getpid(), alarm(), sleep()
5. 통신(Communication)
- pipe(), shm_open(), mmap()
6. 보호(Protection)
- chmod(), umask(), chown()