시스템 콜
운영체제는 커널 모드와 사용자 모드로 나뉘어 구동된다고 했습니다. 시스템 콜은 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스입니다.
사용자 프로그램이 특권 명령의 수행(디스크 파일 접근, 화면에 결과를 출력 등)을 필요로 하는 경우에 운영체제에게 특권 명령의 대행을 요청하는 것이 시스템 콜입니다.
시스템 콜은 여러 종류의 기능으로 나누어집니다. 각각의 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이 번호에 따라 인덱싱되는 테이블을 유지합니다.
Open의 호출
open() 시스템 콜의 인덱스가 가리키는 곳에 다음과 같은 처리 과정이 저장되어 있습니다.
시스템 콜이 발생할 때 필요한 기능이나 시스템 환경에 따라서 추가적인 정보가 필요할 수 있습니다. 정보를 담긴 매개변수를 운영체제에 전달하는 3가지 방법이 있습니다.
- 매개변수를 CPU 레지스터 내에 전달합니다. 매개변수의 개수가 CPU 내의 총 레지스터 개수보다 많을 수 있습니다.
- 매개변수를 메모리에 저장해 주소를 레지스터에 전달 할 수 있습니다.
- 프로그램에 의해 스택(Stack)에 전달(Push)될 수도 있습니다.
두 번째 방법과 세 번째 방법은 매개변수의 개수나 길이의 제한이 없기 때문에 선호되는 방식입니다.
시스템 콜의 유형
프로세스 제어
- 끝내기(exit), 중지 (abort)
- 적재(load), 실행(execute)
- 프로세스 생성(create process)
- 프로세스 속성 획득과 속성 설정
- 시간 대기 (wait time)
- 사건 대기 (wait event)
- 사건을 알림 (signal event)
- 메모리 할당 및 해제 : malloc, free
파일 조작
- 파일 생성 / 삭제 (create, delete)
- 열기 / 닫기 / 읽기 / 쓰기 (open, close, read, wirte)
- 위치 변경 (reposition)
- 파일 속성 획득 및 설정 (get file attribute, set file attribute)
장치 관리
- 하드웨어의 제어와 상태 정보를 얻음 (ioctl)
- 장치를 요구(request device), 장치를 방출 (relese device)
- 읽기 (read), 쓰기(write), 위치 변경
- 장치 속성 획득 및 설정
- 장치의 논리적 부착 및 분리
정보 유지
- 시간과 날짜의 설정과 획득 (time)
- 시스템 데이터의 설정과 획득 (date)
- 프로세스 파일, 장치 속성의 획득 및 설정
통신
- 통신 연결의 생성, 제거
- 메시지의 송신, 수신
- 상태 정보 전달
- 원격 장치의 부착 및 분리
보호
- Permission 획득
- Permission 설정