Kernel/User mode

Knowledge 2016. 4. 15. 22:32



 운영체제에는 계층별로 자원에 대한 접근을 제한하거나 허용해 놓은 특권 레벨(Privilege Level)이라는 것이 존재하는데,

이는 Privilege Ring이라고도 부르며 이를 그림으로 나타내면 다음과 같다.



(출처 : https://en.wikipedia.org/wiki/Privilege_level)



 이는 낮은 권한에서 악성코드 등에 의해서 운영체제가 손상되는 것을 방지하고, 각 계층별 할 수 있는 일을 정하여 계층에 대한 역할을 구조화하기 위해서이다. 그림에서 보다시피 Kernel 레벨인 Ring 0부터 User(Application) 레벨인 Ring 3까지 특권 레벨이 존재한다.


 위에서도 언급했다시피 유저 모드와 커널 모드는 자원에 대한 접근에서 그 차이가 발생한다.


 유저 모드에서 실행되는 응용 프로그램은 각각의 가상 메모리를 할당받고, 각자의 독립성을 보장받기 때문에 다른 프로그램의 영역에 침범할 수 없다. 또한 유저 모드에서 실행되기 때문에 커널 공간에도 침범할 수 없다.


 하지만 커널 모드에서 실행되는 응용 프로그램은 모든 메모리를 자유롭게 사용할 수 있다.


 유저 모드에서 실행되는 어플리케이션이 높은 레벨의 권한을 필요로 하는 작업을 해야 하는 경우에는 System Service Call을 이용하는데, 유저 모드에서 실행되는 Thread가 커널 모드에 접근할 수 있는 권한을 받고, 시스템 자원을 이용한 뒤 다시 유저 모드로 돌아오는 것이다. 이는 syscall이라고 하는 instruction을 이용해서 실행이 가능하다.

블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요