Computer Science%/System

커널모드와 유저모드

ch4rli3kop 2017. 8. 31. 21:28
반응형

커널 모드와 유저 모드



윈도우는 커널 모드와 유저 모드라는 두가지 프로세서 접근 모드를 사용한다. 그 이유는 유저 어플리케이션이 운영체제의 데이터에 함부로 접근하고, 수정하지 못하도록 하기 위함인데, 우선 두가지 모드를 살펴보자.



커널 모드 : 모든 시스템 메모리와 모든 CPU 인스트럭션( CPU를 동작시키는 명령어를 말함. )에 접근이 가능한 프로세서의 실행모드를 말한다. 한마디로 관리자 권한을 가진 실행모드라고 할 수 있겠다. 커널 모드는 운영체제 코드나 디바이스 드라이버 같은 커널 모드 코드를 실행한다. CPU는 이 권한으로 코드를 실행한다.


유저 모드 : 접근할 수 있는 메모리의 영역이 유저에게 허용된 만큼으로 제한되어있어, 시스템 공간에 제한적으로밖에 접근할 수 없는 실행모드이다. 또, 하드웨어에 직접 접근할 수 없고 유저 모드에서 실행하는 스레드는 모두 자신만의 유저 모드 스택을 가진다.



이처럼 두가지 프로세서 접근 모드를 사용하는 이유는 시스템의 안정성을 유지하기 위함이다. 유저 어플리케이션이 필요할 때만 커널 모드로 변환하여( 원래 유저 모드로 실행됨. ) 시스템영역에 접근하도록 하는데, 시스템 메모리에 대한 접근을 제한시킴으로써 안전성을 증가시킨다.

좀 더 자세하게 들어가면, 유저 어플리케이션이 시스템 서비스를 호출할 때 유저 모드에서 커널 모드로 전환이 되는데, 이 변환과정에서 프로세서를 커널 모드로 전환하게 하는 특별한 프로세서 인스트럭션의 사용이 필요하다. 이 인스트럭션을 통해 운영체제는 시스템 서비스가 요청 됐음을 인식하고 스레드가 시스템 함수에 전달하는 인자를 검증한 후 내부 함수를 실행한다. 함수가 실행되어 리턴되면 프로세서는 다시 유저 모드로 전환되고, 운영체제는  제어를 다시 유저 스레드로 넘긴다. 이 방법으로 운영체제는 제어권을 통제하여 사용자 프로세스가 운영체제의 데이터에 접근, 혹은 변경하지 못하게 한다.





결론 : 사용자 프로세스가 함부로 운영체제의 데이터에 접근하지 못하도록 하기위해, 운영체제는 커널 모드와 유저 모드로 프로세서 접근 모드를 두가지로 나누어 관리한다.




참고 : 

http://lapislazull.tistory.com/102

https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%B9%98_%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84

반응형