포스트

CPU 모드: 커널 모드와 사용자 모드

본 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있다면 언제든지 피드백을 주시면 감사하겠습니다. 참고로만 활용해주시길 바랍니다.

개요


CPU는 컴퓨터의 핵심적인 처리 장치로, 명령어를 실행하고 데이터를 처리하는 역할을 담당한다.

운영체제는 CPU와 하드웨어들의 자원을 효율적으로 관리해서 응용 프로그램이 원활하게 동작되도록 한다.

운영체제는 프로세스들을 처리하기 위해 CPU의 기능과 컴퓨터 시스템 자원에 접근할 수 있어야 한다. 하지만 컴퓨터의 주요한 자원에 무분별하게 접근할 수 있는 것은 아니다.

운영체제는 접근할 수 있는 권한이 부여된 요청만 CPU에 접근을 허락한다. 이 권한은 4가지로 분류되며, 접근 권한들을 분류하여 나눈 것을 CPU Protection Ring이라고 한다.


CPU Protection Ring


CPU Protection Ring CPU Protection Ring

CPU Protection Ring (또는 CPU Ring Level)은 운영체제에서 프로세스와 시스템 자원 간의 보안과 권한을 관리하기 위해 존재한다.

일반적으로 0부터 3까지의 숫자로 표현되며, 낮은 숫자일수록 더 높은 권한을 나타낸다.

링 0은 가장 높은 권한을 가진 커널 모드(Kernal Mode)이고, 링 3은 가장 낮은 권한을 가진 사용자 모드(User Mode)이다.

리눅스에서는 이 두가지 모드만 사용한다.


링 1과 링 2는 거의 동일한 권한 수준을 가지므로 두 링을 장치 드라이버 링이라고 한다.

링 1은 스피커를 통해 음악을 재생하고 모니터에 비디오를 표시하는 등 컴퓨터가 하드웨어와 상호작용하는 데 사용된다.

링 2는 주로 저장소에 저장 로딩 등과 같은 입출력 권한을 수행하는 데 사용된다.


커널 모드


커널 모드는 운영체제의 핵심 기능을 수행하는 커널(Kernal)이 실행되는 모드이다. 커널은 운영체제의 핵심 기능을 수행하고, 하드웨어와 직접 상호작용 할 수 있는 권한을 가지고 있다.

커널 모드에서 실행되는 코드는 시스템 자원에 대한 접근 권한이 허용되며, 하드웨어 제어, 메모리 관리, 인터럽트 처리 등의 중요한 작업을 수행할 수 있다.

커널 모드에서 실행되는 코드는 높은 권한과 특권을 가지므로 잘못된 동작으로 시스템에 심각한 영향을 줄 수 있으니 신중하게 관리되어야 한다.

시스템 콜(System Call)이 생성될 때마다 CPU는 사용자 모드에서 커널 모드로 전환된다. 시스템 호출은 커널 모드에서 실행되고, 시스템 호출을 실행한 후 사용자 모드로 돌아간다.


사용자 모드


사용자가 응용 프로그램(사용자 코드)을 실행하는 모드이다. CPU가 응용 프로그램을 실행한 경우 CPU는 사용자 모드가 된다.

사용자 모드에서 실행되는 코드는 제한된 권한을 가지며, 운영체제의 자원에 직접 접근할 수 없다.

대부분의 응용 프로그램은 사용자 모드에서 실행되며, 사용자의 작업을 처리하고 결과를 출력하는 등의 기능을 수행한다.

시스템 자원에 접근을 위해서는 시스템 콜(System Call)을 사용해야 한다.



참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.