프로그램과 서비스 실행 환경을 유저와 프로그램에게 제공하는 역할을 합니다. (대표적으로 9개)
Command-Line(CLI)는 직접적인 명령어를 사용하게 해줍니다. (대표적으로 윈도우의 명령 프롬프트, 리눅스 쉘 bash). CLI도 하나의 프로그램 입니다. Kernel(OS)에 의해 구현될수도, system program(운영체제와 연관된 사용자 프로그램)에 의해 구현될 수 도 있습니다.
즉, 사용자가 명령어를 직접 실행할 수 있게 해줍니다.
Programming interface to the OS services
사용자 프로그램이 OS 서비스를 사용하기 위해서는 시스템 콜을 사용해야 합니다. 시스템 콜은 OS의 기능들에 접근하는 일종의 함수 입니다. 직접 시스템 콜을 사용하기 보다는 high-level Application Programming Interface (API) 를 통해 접근하는 방식을 많이 사용합니다. (파라미터가 복잡하고 어렵기 때문)
System-call interface는 시스템 콜 넘버를 인덱스로 하는 테이블을 사용합니다.
종종 많은 정보를 파라미터로 넘겨야 합니다. 3가지 방법을 주로 사용합니다. 2, 3번 방법을 그 중에서 많이 사용합니다.
1. 레지스터로 전달 : 이 방법은, 파라미터가 레지스터보다 많을 경우 문제가 됩니다.
2. 메모리에 파라미터를 저장하고, 메모리 주소를 레지스터로 전달합니다.
3. ‘스택’ 부분에 push 해두고, 운영체제가 pop 하여 사용합니다.