운영체제 (OS, Opreating System)은 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스입니다.
즉, 운영체제(OS)에서의 인터페이스는 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 매개체 역할을 합니다. 즉, 사용자가 복잡한 컴퓨터 명령어를 직접 입력하지 않고도 마우스 클릭, 키보드 입력 등 직관적인 방식으로 컴퓨터를 조작할 수 있도록 연결해 주는 중간다리라고 할 수 있습니다.
GUI, 시스템콜, 커널, 드라이버 부분이 바로 운영체제를 지칭합니다.
참고로 GUI가 없고, CUI만 있는 리눅스 서버도 있습니다.
- GUI
사용자가 장치와 상호작용할 수 있도록 하는 사용자 인터페이스의 한 형태. 단순 명령어가 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호작용할 수 있도록 해준다.- 드라이버 (Driver)
컴퓨터와 하드웨어를 연결하는 다리: 컴퓨터와 키보드, 마우스, 프린터 같은 하드웨어 기기들은 서로 다른 언어를 사용하는데. 드라이버는 이 두 가지 언어를 번역해 주는 역할을 하여 컴퓨터가 하드웨어를 제대로 인식하고 사용할 수 있도록 해주는 소프트웨어입니다.
예시: 새 프린터를 구매하면 드라이버를 설치해야 프린터를 사용할 수 있는 것처럼, 대부분의 하드웨어는 드라이버가 필요합니다.- CUI (Character User Interface)
명령어를 입력해서 사용하는 방식: GUI와는 반대로, 텍스트로 된 명령어를 직접 입력하여 컴퓨터에게 명령을 내리는 방식입니다.
예시: DOS 창이나 리눅스 터미널에서 명령어를 입력하여 파일을 복사하거나 프로그램을 실행하는 것이 CUI의 예입니다.- 커널(Kernel)
커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로 컴퓨터의 모든 자원들(소프트웨어 + 하드웨어)을 관리하는 소프트웨어이다.
시스템콜이란 운영 체제의 커널(Kernel)이 제공하는 서비스에 대해 유저의 프로그램이 운영체제의 서비스를 받기 위한 인터페이스입니다.
응용 프로그램이 무엇인가를 하고 싶을 때, 직접 하드웨어를 건드리지 못한다.그렇기 때문에 시스템 콜을 통해 커널에 접근해 작업을 한다.
ex) 유저 프로그램이 I/O 요청을 통해 파일을 읽기 위해 fs.readFile()이라는 함수가 실행되었을 때?
시스템콜이 작동될 때, modebit을 통해 유저 모드와 커널 모드를 구분한다. modebit은 1 또는 0의 값을 가지는 Flag 변수이다.
만약 유저모드를 기반으로 카메라가 켜진다면, 사용자가 의도하지 않았음에도 공격자가 갑자기 카메라를 킬 수 있는 등의 위협때문에 카메라, 키보드 등 디바이스는 운영체제를 통해서만 제어할 수 있다.
modebit
을 1에서 0으로 바꾸어, 커널모드로 변경 후 카메라 자원을 이용한 로직 수행modebit
을 0에서 1로 바꾸어, 유저모드로 변경하고 이후 로직 실행
- 유저 모드
유저가 접근할 수 있는 영역을 제한적으로 두어, 컴퓨터 자원에 함부로 침범하지 못하는 모드- 커널 모드
모든 컴퓨터 자원에 접근할 수 있는 모드