운영체제 큰 그림
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다.
Windows / Android / Mac OS / IOS / Linux 등이 있다.
운영체제의 기능은 다양하지만 가장 핵심적인 서비스는
자원에 접근하고 조작하는 기능과 프로그램이 올바르고 안전하게 실행되는 기능들을 이야기한다.
이런 운영체제의 핵심 서비스를 담당하는 것이 커널(kernel)이다.
** 운영체제에는 속하지만 커널에는 속하지 않는 기능
- 그래픽 유저 인터페이스
- 커멘드 라인 인터페이스
이렇게 크게 두가지 있다. -> 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아니다.
이중모드와 시스템 호출
운영체제는 응용프로그램들이 자원(CPU, 메모리, SSD, HDD등)에 접근하려고 할때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
이중모드
- CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널모드로 구분하는 방식이다.
- 사용자모드
1) 운영체제 서비스를 제공받을 수 없는 실행 모드
2) 커널 영역의 코드를 실행할 수 없는 실행 모드
3) 자원 접근이 불가하다.
- 커널모드
1) 운영체제의 서비스를 제공받을 수 있는 실행 모드
2) 자원 접근을 비롯한 모든 명령어 실행이 가능하다.
이는 슈퍼바이저 플래그를 통해 알수 있다.
-> 커널모드로 실행중인지, 사용자 모드로 실행중인지를 나타낸다.
-> 슈퍼바이저 플래그가 1일 경우 커널모드로 실행중임을 의미한다.
시스템호출
- 커널 모드로 전환하여 실행하기 위해 호출한다.
- 일종의 소프트웨어 인터럽트이다. (시스템 호출이 처리되는 방식을 하드웨어 인터럽트 처리 방식과 유사)
커널모드와 사용자 모드를 굉장히 많이 왔다갔다 하며 시스템 호출의 함수는 운영체제마다 정해져 있다.