1. 필요성

 

 보통 운영체제에서는 커널모드와 유저모드 두가지 프로세서 접근모드를 지원한다. 그 이유는 유저 어플리케이션이 함부로 운영체제의 치명적인 데이터를 수정하거나 삭제하지 못하게 하기 위해서 이다. 커널모드는 모든 시스템과 메모리에 접근이 허가된 프로세스 실행 모드이다. 유저모드보다 커널모드에 더 높은 권한을 줌으로써 유저모드에서 에러가 발생했을 때 시스템 전체의 안전성을 보장해 준다.



2. 구조


.

 .커널모드와 유저모드의 구조는 위와 같다. 사용자가 직접적으로 하드웨어 장치를 제어한다면 큰 문제 발생할 수 있기 때문에 사용자 애플리케이션은 System Call 을 통해 직접적인 하드웨어 요청이나 중요한 시스템 요청을 한다. 요청을 하면 유저 애플리케이션은 유저모드에서 커널모드로 잠시 전환 되었다가 커널모드에서 작업을 실행한뒤 응답을 유저 애플리케이션에 반환하면서 다시 유저모드로 되돌아가게 된다.





 

이러한 구조를 갖춤으로써 사용자 프로세스가 운영체제와 데이터를 함부로 들여다보거나 변경하지 못하게 보호한다.



3. 특징


유저모드

1. 사용자 애플리케이션의 코드가 실행 됨.

2. 시스템 데이터에 제한된 접근만이 허용, 하드웨어 직접 접근 불가.

3. 시스템 서비스 호출 시 유저모드에서 커널모드로 잠시 전환됨.

4. 스레드는 자신만의 유저모드 스택을 가짐.


커널모드

1. 모든 시스템 메모리에 접근할 수 있고 모든 CPU명령 실행 가능.

2. 운영체제 코드나 디바이스 드라이버 같은 커널모드 코드를 실행한다.



참고 : 

http://lapislazull.tistory.com/

http://www.scitech.co.kr/upload/book_image/s_402/ESDP-Ch06.PDF




WRITTEN BY
Who1sth1s

,