: 운영 체제의 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스
사용자 프로그램이 디스크 파일을 접근하거나 화면에 결과를 출력하는 등의 작업이 필요한 경우, 즉 사용자 프로그램이 특권 명령의 수행을 필요로 하는 경우, 운영체제에게 특권 명령의 대행을 요청하는 것이 시스템 콜이다.
- 여러 기능으로 나누어짐
- 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 시스템 콜 번호와 시스템 콜 핸들러 함수 주소로 구성되는 시스템 콜 테이블 유지
시스템 콜이 발생했을 때, 추가적인 정보가 필요한 경우
- 매개변수를 CPU 레지스터에 전달
- 매개변수를 메모리에 저장해 해당 메모리의 주소를 레지스터에 전달 할 수 있다.
- 매개변수는 프로그램에 의해 스택에 전달될 수 있다.
시스템 콜이 필요한 이유
: 우리가 일반적으로 사용하는 프로그램은 응용 프로그램
→ 유저 레벨의 프로그램은 유저 레벨의 함수 만으로는 기능 구현 힘듦
→ 커널의 도움을 받아야 함
→ 커널 모드로 전환해야 함
시스템 콜의 유형
프로세스 컨트롤
- 프로세스 생성 및 종료
- 메모리에 로드, 실행
- 프로세스 속성 값 확인, 지정
- wiat, signal 이벤트
- 메모리 할당
- ex) fork, exec 등
파일 매니지먼트
- 파일 생성, 삭제
- 열기, 닫기
- 읽기, 쓰기, Repositon
- 파일 속성 값 확인, 지정
- ex) open, read, write, close
디바이스 매니지먼트
- 디바이스 요청 및 해제
- 읽기, 쓰기, Reposition
- 디바이스 속성 확인, 지정
- 비 물리적인 디바이스 해제 및 장착
정보 관리
- 시간 확인, 지정
- 시스템 데이터 확인, 지정
- 프로세스, 파일, 디바이스 속성 가져오기
- 프로세스, 파일, 디바이스 속성 설정하기
통신
- 커뮤니케이션 연결 생성 및 삭제
- 메시지 송수신
- 상태 정보 전달
- remote 디바이스 해제 및 장착
보안
- Permission 획득
- Permisson 설정
유저 모드와 커널 모드
유저 모드
PC 레지스터가 사용자 프로그램이 올라가 있는 메모리 위치를 가리키고 있을 때, 현재 사용자 프로그램을 수행중이라고 하며 CPU가 유저 모드에서 수행중이라고 말함
커널 모드
PC 레지스터가 운영체제가 존재하는 부분을 가리키고 있다면 현재 운영체제의 코드를 수행중이라고 하며 CPU가 커널 모드에서 수행중이라고 말함
일반 명령과 특권 명령
- CPU 내에서 모드 비트를 두어서 구분
- 0 - 커널 모드 / 1 - 유저 모드
일반 명령(유저 모드)
: 메모리에서 자료를 읽어와서 CPU에서 계산하고 결과를 메모리에 쓰는 일련의 명령들, 모든 프로그램이 수행 가능
특권 명령(커널 모드)
: 보안이 필요한 명령, 입출력 장치, 타이머 등 각종 장치에 접근하는 명령