
이번 시간에는 OS 영역과 사용자 영역의 프로그램 실행 간 요소들을 알아보려 한다.
1. Application(응용 프로그램)
사용자가 실행하는 프로그램, 흔히 우리가 바탕화면에서 클릭해 실행하는 모든 프로그램이라고 생각하면 된다. 반대로 사용자가 컴퓨터를 좀 더 쉽게 사용할 수 있게 사용자가 아닌 운영체제가 실행시킨 프로그램들은 시스템 프로그램이라고 한다. 응용 프로그램은 System Call 로 OS 에게 시스템 기능 사용을 요청한다.
2. GUI(Graphical User Interface)
컴퓨터의 기능을 사용자가 보기 쉽게 그래픽으로 나타낸 인터페이스. 우리가 흔히 아는 윈도우 바탕화면을 생각하면 된다. 반대로 사용자가 명령어를 직접 입력해 컴퓨터 기능을 실행하는 인터페이스를 CLI(Command Line Interface)라고 한다. 대표적으로 명령 프롬프트 콘솔이 있으며 GUI 보다는 사용하기 힘들지만 보다 빠르고 강력하게 컴퓨터 기능을 사용할 수 있다. OS 에서는 GUI 에서 입력되는 사용자의 요청에 따라 프로그램을 실행한다.
3. System Call
이름 그대로 시스템에게 요청하는 것이라고 생하면 쉽다. 사용자가 GUI 에서 실행하는 응용 프로그램들이 돌아가기 위해서는 컴퓨터 시스템의 기능을 사용해야한다. 하지만 기본적으로 응용 프로그램은 직접 OS 의 시스템 기능에 접근이 불가능하다. 그렇기 때문에 System Call 로 OS 에게 요청해 시스템 함수의 기능을 제공 받는다.
4. 커널(Kernel)
커널은 메모리, 프로세스, 디스크 등 컴퓨터의 자원 관리 기능을 수행하는 OS 의 핵심 프로그램이다. 시스템 함수를 직접 실행하며 System Call 로 응용 프로그램에게 요청받은 시스템 함수를 실행시켜준다.
5. 드라이버(Driver)
HW 즉 디바이스를 위한 프로그램이다. 이전에 사용자가 OS 와 소통하기 위해 GUI 를 사용한다면 HW 는 OS 와 소통하기 위해 드라이버가 있어야한다. HW 가 시스템 기능을 사용할 수 있게 해주며 직접적으로 시스템 함수에 접근이 가능하다.
이와 같이 OS 는 기본적으로 HW, 사용자와 직접 통신하지 않고 인터페이스를 통해 요청을 받아 수행해준다. 그래서 컴퓨터 구조는 크게 GUI 와 응용 프로그램을 사용자가 작업하는 사용자 영역, 드라이버를 통해 기능을 수행하는 HW 영역 그리고 컴퓨터 시스템 함수를 직접 실행시켜주는 OS 영역으로 나눠 본다.