[운영체제] CPU 보호링(CPU Protection ring)이란? 사용자 모드(User Mode)와 커널 모드(Kernel Mode)
사용자 모드(User Mode)와 커널 모드(Kernel Mode)
CPU는 사용자 모드와 커널 모드를 번갈아가면서 동작한다. 사용자 모드일때는 User Process를 실행시킨다. 이때는 하드디스크나 메모리, I/O 디바이스 등의 I/O 장치에 직접 접근할 수 없다. 또한 유저 모드 특권 레벨(privilege level)을 가지고 코드를 실행한다. I/O 명령을 실행하기 위해서는 System Call을 호출해 커널모드로 전환해야 한다.
System Call이 호출되면 Mode bit를 1에서 0으로 전환하고 커널모드로 진입한다. 커널 모드에서는 I/O 장치에 접근하는 등 다양한 System Call을 실행할 수 있다. 즉, 커널 모드 특권 레벨(privilege level)을 가지고 코드를 실행할 수 있다.
이처럼 사용자 모드와 커널모드를 나누는 이유는 뭘까? 사용자모드와 커널모드를 나누는 이유는 하드웨어에 대한 보호를 위해서이다. 만약 응용 프로그램이 모두 하드웨어적인 접근이 가능하다고 생각해보자. 잘못된 명령을 실행해 하드웨어에 손상이 갈 수도 있다.
하지만 사용자 모드와 커널모드를 나눈다면, 응용 프로그램에서 하드웨어에 대한 접근을 하기 위해서는 System Call을 통해야만 한다. 따라서 커널모드에서는 이러한 System Call을 통해 해당 명령에 대한 판단을 내릴 수 있는 것이다.
CPU 보호링(CPU Protection Ring)
위에서 특권 레벨에 대해 말했다. 특권 레벨이란 CPU의 권한 상태를 뜻한다. 이러한 특권 레벨에 따라 CPU가 어떤 명령을 실행 시킬 수 있는지 정해진다.
이러한 특권 레벨을 반지처럼 도식화한 것이 CPU 보호 링이다. Ring 3에서 숫자가 내려갈 수록 그 권한이 커지게 된다. 레벨이 높은 쪽에서 레벨이 낮은 쪽의 권한을 침범하면 운영체제는 이를 감지하고 그 실행을 막으며 보호할 수 있다.
예를 들어 CPU의 동작 정지는 특권 레벨 0(Ring 0)에서만 실행이 가능하다. 그 외의 레벨에서는 해당 명령을 실행하면 예외를 발생시키고 동작하지 않는다.
Intel 계열 프로세서에서는 Ring 0(커널 모드)와 Ring 3(사용자 모드) 만을 사용하는 2레벨 시스템을 갖는다.
참고
1. https://ko.wikipedia.org/wiki/%EB%B3%B4%ED%98%B8_%EB%A7%81
2. https://elfmfl.tistory.com/2