응용 프로그램, 운영체제, 컴퓨터 하드웨어 관계
- 운영체제는 프로그램이 요청하는 메모리를 허가, 분배
- 운영체제는 프로그램이 요청하는 CPU시간 제공
- 운영체제는 프로그램이 요청하는 IO device 사용을 허가 제어
사용자 - 응용 프로그램 - 운영체제 - 하드웨어 이런 식으로 연결된다고 보자!
운영체제는 사용자 인터페이스를 제공한다.
쉘(Shell)
- 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램.
- 쉘은 GUI환경과 CLI환경으로 나뉜다.
운영체제는 응용 프로그램을 위해서도 인터페이스를 제공한다
API(aplication programming interface)
- 프로그램이 운영체제에 뭔가를 요청할 수 있게 프로그램 안에 작성된 인터페이스
- 일종의 요청서로 이해하자.
- 함수로 제공된다.
- 각 언어별 운영체제 기능 호출 인터페이스 함수
시스템 콜
- 시스템 콜 또는 시스템 호출 인터페이스
- 운영체제가 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공
- API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분.
- 운영체제 기능 호출 함수
운영체제를 만든다면?
- 운영체제를 개발한다.(kernel)
- 시스템 콜을 개발
- C API(library) 개발 - 다른언어로도 개발
- Shell 프로그램 개발
- 응용 프로그램 개발
운영체제와 시스템콜
시스템 콜의 예시(POSIX API, 윈도우 API)
CPU Protection Rings
cpu도 권한 모드라는 것을 가지고 있다.
- 사용자 모드
- 커널 모드 : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케하는 모드.
이 사진에서 ring 3이 사용자 모드다. 가운데에 있는게 커널이다.
개발자가 만든 프로그램은 맨위에서 작동한다!
시스템콜은 커널 모드로 실행
- 커널 모드에서만 가능한 기능이 존재
- 커널 모드로 실행하려면, 반드시 시스템콜 거쳐야함
- 시스템콜은 운영체제 제공
왜 이렇게 나눴을까
함부로 응용 프로그램이 전체 컴퓨터 시스템을 해치지 못하게 하기 위함.
코드로 이해하기
정리
- 운영체제는 시스템 콜 제공
- 프로그래밍 언어 별 운영체제 기능을 활용하기 위한 시스템 콜 기반 API제공
- 응용 프로그램은 운영체제 기능 필요시 해당 API를 사용해 프로그램 작성
- 응용 프로그램 실행되서 운영체제 기능이 필요한 API를 호출하면, 시스템콜이 호출되서, 커널모드로 변경후, OS 내부에서 실행