운영체제 2장 - 시스템 호출
2.3 시스템 호출(system call)
- 시스템 호출(system call)
- 운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 제공
- 대부분은 C/C++같은 고급 언어 루팅 형태로 제공
- 저수준의 작업은 시스템 호출 명령어를 포함하는 어셈블리 프로그램으로 작성하기도 함
- Application Programming Interface(API)
- 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 응용 프로그래머를 대신하여 필요한 실제 system call들을 호출함
- Window API, POSIX API, Java API 등
- 사용자는 어떻게 구현됬는지 내부 구조는 몰라도 됨. 가져다 쓰기만 하면됨
- 운영체제 인터페이스의 상세 내용은 API에 의해 숨겨짐
- 각 시스템 호출에 번호가 부여됨. OS 커널에서 시스템 호출 처리 루틴의 주소 테이블의 인덱스로 이 번호를 사용함
- 시스템 호출의 OS 내에서의 처리 예시
- 표준 C 라이브러리 함수 동작의 예시.
printf()
호출 시,write()
시스템 콜을 호출함 - 시스템 호출 매개변수 전달
- 레지스터 : 개수 제한이 있지만 가장 많이 이용함
- 블록 : 메모리 블록에 저장해두고 블록의 주소를 전달. 매개변수가 많으면 이용
- 스택 : 시스탬 스텍에 push하여 운영체제가 참조함
2.4 시스템 호출의 유형
- 프로세스 제어
- 프로세스 생성, 적재, 실행, 종료, 중지
- 프로세스 속성 읽기, 설정, 메모리 할당 및 반납
- 시간 대기, 사건 대기, 사건 알림 등
- 파일 관리
- 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 위치 변경
- 파일 속성 읽기, 설정 등
- 장치 관리
- 장치 요구(request), 장치 반납(release), 읽기, 쓰기, 위치변경
- 장치 속성 읽기, 설정, 논리적 부착(attach), 분리(detach)
- 정보 유지보수
- 시간, 날짜, 시스템 데이터, 프로세스/파일/장치 속성
- 통신 및 보호
- 통신 연결 생성, 삭제
- 메세지 송신, 수신, 상태정보 전달
- 원격 장치 부착, 분리
- 보호
- 다중 사용자, 다중 프로그램 환경 고려
- 자원 접근 제어 - 허가권 설정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.