[운영체제] CPU 보호링(CPU Protection ring)이란? 사용자 모드(User Mode)와 커널 모드(Kernel Mode)

사용자 모드(User Mode)와 커널 모드(Kernel Mode)

사용자 모드와 커널모드
[그림 1] 사용자 모드와 커널 모드

 

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 보호 링
[그림 2] CPU 보호 링 (출처 참고1)

 

위에서 특권 레벨에 대해 말했다. 특권 레벨이란 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

3. https://velog.io/@oen/%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%BD%9C-CPU-Protection-Rings-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%AA%A8%EB%93%9C-%EC%BB%A4%EB%84%90%EB%AA%A8%EB%93%9C

 

반응형

댓글

Designed by JB FACTORY