1 분 소요

User mode와 Kernel mode

Windows에서 동작하는 컴퓨터의 프로세서는 User modeKernel mode라는 두 가지 모드에서 실행된다. 프로세서는 어떤 코드를 실행하느냐에 따라 이 두 모드 사이를 전환한다. 애플리케이션은 User mode에서 실행되며, 운영체제의 핵심 구성 요소는 Kernel mode에서 동작한다. 많은 드라이버가 Kernel mode에서 실행되지만, 일부는 User mode에서도 동작할 수 있다.

User mode

User mode에서 애플리케이션을 실행하면 Windows는 해당 애플리케이션을 위한 프로세스를 생성한다. 이 프로세스는 애플리케이션에 독립적인 가상 주소 공간개별 핸들 테이블을 제공한다. 각 애플리케이션의 가상 주소 공간은 서로 분리되어 있으므로, 한 애플리케이션이 다른 애플리케이션의 데이터를 수정할 수 없다. 이처럼 각 애플리케이션은 서로 격리되어 실행된다. 덕분에 특정 애플리케이션이 충돌하더라도 다른 애플리케이션이나 운영체제에는 영향을 주지 않는다.

또한 User mode에서 실행되는 프로세스의 가상 주소 공간은 제한된다. User mode 프로세스는 운영체제를 위해 예약된 주소 공간을 접근할 수 없다. 이렇게 주소 공간을 제한함으로써 애플리케이션이 운영체제의 중요한 데이터를 변경하거나 손상시키는 일을 방지한다.

Kernel mode

Kernel mode에서 실행되는 모든 코드는 하나의 공유 가상 주소 공간을 사용한다. 따라서 Kernel mode 드라이버는 다른 드라이버나 운영체제와 격리되어 있지 않다. Kernel mode 드라이버가 잘못된 가상 주소에 데이터를 쓰면 운영체제나 다른 드라이버의 데이터를 손상시킬 수 있다. 그리고 Kernel mode 드라이버가 충돌하면 운영체제 전체가 함께 충돌하게 된다.

다음 다이어그램은 User mode와 Kernel mode 구성 요소 간 통신 방식을 보여준다.

user mode and kernel mode
컴퓨터 시스템에서 User-mode 구성 요소와 Kernel-mode 구성 요소 간의 통신 구조를 나타낸다

댓글남기기