[컴퓨터 기초] User mode와 Kernel mode 그리고 가상화까지!

Robert.Yang·2023년 3월 20일

컴퓨터 기초

목록 보기
18/28
post-thumbnail

이 강좌는 널널한 개발자님의 강의를 기반으로 작성한 글입니다.

User mode와 Kernel mode 그리고 가상화까지!

OS의 핵심 Kernel

  • 컴퓨터라는 국가의 법은 Kernel로 구현된다.
  • Kernel영역과 사용자 영역은 완전히 다른 영역이다. 비유로 치면 인간계와 신계로 볼 수 있다.

Kenrel은 수 많은 역할을 하는데 그 중에 큰 게 첫째로 I/O 제어를 한다. 둘째로 자원관리를 한다. 여기서 자원이라고 하면 CPU나 메모리를 의미한다. 즉, CPU와 메모리를 어떤 프로세스가 어떤 스레드가 얼마나 쓸것인지 통제한다. 셋째로 접근통제를 한다.

커널은 일종의 계층이지만 일종의 mode라고 한다. 일반적으로 S/W가 작동할때는 User mode(Application 영역)에서 작동하며 Kernel 모드에서 작동한다는 것은 OS의 일부라고 보면 된다. 물론 OS일부가 아닌 애들도 있는데 그런것은 바로 보안쪽으로 보면 된다. 즉, 인터넷뱅킹같은 것을 할 때 설치하는 프로그램들을 보면 될것이다.

User mode와 Kernel mode

컴퓨터는 크게 H/W와 S/W로 나눠지는데 H/W의 특징은 물리적이며 가장 핵심은 CPU이며 S/W에서는 논리적인것이 특징인데 IT쪽에서 논리적이다라는 표현을 Virtual이라는 말과 거의 동일하게 사용한다.

본론으로 가서 S/W에서 Kernel mode까지를 우리는 OS영역이다라고 부르며 H/W에 OS는 의존적이여서 붙여진 용어가 Platform이라고 붙여진다. 즉, H/W도 Platform, Kenrel mode도 Platform이라고 볼 수 있다. 그래서 우리가 64bit platform이라고 부르면 CPU도 64bit, OS도 64bit라고 한다.

H/W에서 메인보드에서 장착할 수 있는 장치가 있다고 할 때 어떤 OS든 이 장치를 제어할 수 있는 Device Driver라는 커널모드에서 작동하는 S/W가 있다. 그리고 어떤 장치이냐에 따라 Kernel mode에 요소가 달라진다. 그리고 그 장치를 File System이라고 한다. 예를들어 video card라고 할 경우 kernel mode의 요소는 Graphic Engine이라고 부른다. 그리고 User mode에는 프로세스가 여러개 존재하는 멀티 태스킹 환경이다. 만약 '나'라는 프로세스가 Kernel mode에 메세지를 전달하고 싶은 경우는 어떻게 할까? 비유를 들어 user mode를 인간계, kernel mode를 신계라고 할때 우리는 기도라는 매개수단을 통해 신한테 메세지를 전달한다. 왜 그럴까? 신이 그렇게 하라고 전달한것이다. 만약, 다른 비유로 user mode를 국민 kernel mode를 정부라고 할때 우리는 국민청원이라는 수단을 통하여 메세지를 전달할 수 있다. 이런 메세지 전달 수단을 컴퓨터 세상에서는 인터페이스라고 한다. 또한 이 인터페이스는 파일 형태로 존재한다. 그리고 이 파일을 디바이스 파일이라고 불린다.

좀 더 어렵게 표현하자면 kernel의 구성요소에 대한 추상화된 인터페이스를 user mode에 제공해줄 때 파일의 형태를 띄고 있다고 표현한다. 그리고 '나'라는 프로세스는 이 파일에 대하여 Read or Write or Execute를 한다. 예를 들면 우리가 "Hello World!"라는 문자열을 출력하고 싶다고 할때 코딩을 한 후 이 문자열을 kernel mode에 내려보내게 된다. 그러면 kernel mode에서 무언가 작업을 한 후 driver를 통하여 장치를 알맞게 제어를 한다. 즉, 다시보면 프로세스가 주체가 되고 파일이 하나의 대상체가 된다고 볼 수 있다. 또한 프로세스는 인터페이스로부터 이 파일에 대한 접근권한을 획득해야 하는데 그 접근권한은 운영체제가 부여한다.

또한 user mode에서 interface가 보조기억장치를 볼 수 있는 프로세스가 존재하는데 이것을 윈도우에서는 탐색기, 맥에서는 파인더라고 부른다. 즉, 다시말해 File System의 파일구조들을 시각화하여 GUI형태로 보여주는 것이다.

또한 kernel mode에 driver와 file system 사이에 filter가 존재하는데 user mode에 메세지를 보내면 filter에 걸리는데 filter는 행위를 모니터링하다가 바이러스같은 것을 감지하면 V3같은 프로그램에 요청하고 그 파일을 차단한다. 그리고 이런 filter를 실시간 감지 엔진이라고 불린다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글