배움과 기록의 장
[운영체제] 시스템 콜(System Call)이란? 본문
🌿 시스템 콜이란
사용자 프로그램이 운영체제 커널이 제공하는 서비스를 사용하기 위해 요청하는 인터페이스
사용자 프로그램은 직접 하드웨어 자원에 접근할 수 없기 때문에, 파일 입출력, 프로세스 생성, 네트워크 통신 등과 같은 작업을 하기 위해서 시스템 콜을 통해 운영체제 커널에 요청한다.
다음과 같이 6가지 유형으로 분류할 수 있다.
- 프로세스 제어(Process Control) : fork(), exec(), exit(), wait()
- 파일 조작 (File Manipulation) : open(), read(), write(), close()
- 장치 조작 (Device Manipulation) : ioctl(), read(), write()
- 정보 유지 (Information Maintenance) : getpid(), alarm(), sleep()
- 통신 (Communication) : pipe(), socket(), connect()
- 보호 (Protection) : chmod() umask() chown()
🔄 시스템 콜이 실행되는 과정
1️⃣ 사용자 프로그램이 시스템 콜 라이브러리 함수를 호출 (예: read())
2️⃣ 유저 모드에서 시스템 콜 라이브러리 함수가 시스템 콜 번호와 인자를 레지스터나 스택에 저장
3️⃣ int 0x80 또는 syscall 명령어를 통해 커널 모드로 전환
4️⃣ 커널은 저장된 시스템 콜 번호와 인자를 바탕으로 해당 시스템 콜 핸들러를 찾아 작업 실행
5️⃣ 작업 완료 후, 커널은 유저 모드로 다시 전환하여 결과를 사용자 프로그램에 반환
시스템 콜 번호란?
서로 다른 시스템 콜을 구분하기 위해 운영체제는 각 시스템 콜에 고유한 번호인 System Call Number를 부여한다.
(예: x86 아키텍처에서는 eax 레지스터에 시스템 콜 번호를 넣고 int 0x80을 호출)
🔅 운영체제의 Dual Mode - 유저모드 / 커널모드
운영체제는 메모리, 파일 시스템 등 중요 자원을 보호하고, 시스템의 안정성과 보안을 확보하기 위해 유저모드와 커널모드를 분리하였고, 이를 Dual Mode라고 한다. CPU는 Mode bit로 현재 모드를 구분한다. (0: 유저모드, 1: 커널모드)
- 유저 모드 (User Mode): 일반 응용 프로그램이 실행되는 모드로, 직접 하드웨어 접근 불가능.
- 커널 모드 (Kernel Mode): 운영체제 핵심 코드가 실행되는 모드로, 하드웨어 및 모든 자원에 접근 가능.
반응형
'cs study > 운영체제' 카테고리의 다른 글
[운영체제] 인터럽트(Interrupt) (0) | 2025.05.13 |
---|