System call은 hardware를 직접적으로 접근해야 하는 low-level task들의 경우 함수 형태로 C나 C++에서 사용할 수 있는 interface를 제공한다.
Application developers는 application programming interface(API)에 따라 프로그래밍을 하게 된다.
실제 system call을 동작시키는 것 보다 API를 이용해서 프로그래밍을 할 때의 장점?
- program protability
- 같은 API를 사용해서 서로 다른 구조에서 사용 가능하다.
- system call을 직접 호출하기가 굉장히 어렵고 복잡하다.
- 물론 API는 실제 system call과 구조? 형태?가 많이 비슷하다.
run-time environment (RTE)
- 주어진 프로그래밍 언어로 만들어진 application을 실행시키기 위해 있는 full suite.
- system-call interface를 지원해서 API에서 실행된 함수 호출을 실제 운영체제의 system call의 호출로 연결해 준다.
- 각 system call 마다 숫자가 부여되어 있으며, table을 이용해서 각 숫자에 해당하는 system call이 저장되어 있다.
operating system으로 인자를 넘기는 방법
- register를 통해서 넘겨주기
- 만약 register의 수보다 인자의 수가 더 많다면?
- 메모리에 block이나 table로 보관되어서 그 주소가 register로 전달된다.
- 리눅스에서는?
- 5개 이하의 인자가 들어옴 -> 그냥 레지스터로 전달
- 그 이상 -> block method가 쓰인다.
- 인자들이 stack에 쌓여서 전달되기도 한다.
system call의 종류
- Process control
- File management
- Device management
- Information maintenance
- Communications
- Protections
요 정도까지만...
참고문헌
- Abraham Silberschatz - Operating System Concepts 10th