시스템 콜(System Call)
운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.
사용자 프로그램이 특권 명령의 수행을 필요로 하는 경우, 운영체제에게 특권 명령의 대행을 요청하는 것이 시스템 콜이다.
명령어의 종류
일반 명령: 메모리에서 자료를 읽어오고, CPU에서 계산을 하는 등의 명령이고 모든 프로그램이 수행할 수 있는 명령이다.
특권 명령: 보안이 필요한 명령으로 입출력 장치, 타이머 등의 장치를 접근하는 명령이다. 특권 명령은 항상 운영체제(커널영역)만이 수행할 수 있다.
시스템 콜이 필요한 이유!
- 만약 일반 명령, 특권 명령이 구분되어 있지 않다면 즉 권한이란게 없다면?
해커가 악의적으로 시스템 콜을 사용하거나 초보 사용자가 아무렇게나 함수를 호출할 경우 시스템이 망가질 수 있기 때문이다.
-> 특권 명령(보안이 필요한 명령어들)은 커널 모드에서만 실행 할 수 있도록
-> 유저 모드에서 시스템 콜을 호출할 경우에는 운영체제에서 잘못된 접근이라 여기고 trap을 발생시킨다.
kernel mode vs user mode
운영체제는 하드웨어적인 보안을 유지하기 위해 기본적으로 두가지 operation을 지원한다.
- kernel mode: 운영체제가 CPU의 제어권을 가지고 명령을 수행하는 모드로 일반 명령과 특권 명령 모두 수행할 수 있다.
- user mode: 일반 사용자 프로그램이 CPU제어권을 가지고 명령을 수행하는 모드이기 때문에 일반 명령만을 수행할 수 있다.
시스템 콜의 유형
프로세스 컨트롤
- 프로세스 생성 및 종료
- 메모리에 로드, 실행
- 프로세스 속성 값 확인, 지정
- wait 이벤트, signal 이벤트
- 메모리 할당
- 예) fork, wait, exec 등
파일 매니지먼트
- 파일 생성, 파일 삭제
- 열기, 닫기
- 읽기, 쓰기, Reposition
- 파일 속성 값 확인, 지정
- 예) open, read, write, close 등
디바이스 매니지먼트
- 디바이스 요청 및 해제
- 읽기, 쓰기, Reposition
- 디바이스 속성 확인, 지정
- 비 물리적인 디바이스 해제 및 장착
정보 관리
- 시간 확인, 시간 지정
- 시스템 데이터 확인, 지정
- 프로세스, 파일, 디바이스 속성 가져오기
- 프로세스, 파일, 디바이스 속성 설정하기
통신
- 커뮤니케이션 연결 생성 및 삭제
- 메시지 송신, 수신
- 상태 정보 전달
- remote 디바이스 해제 및 장착
보안
- Permission 획득
- Permission 설정
참고