금요일, 7월 12, 2013

User mode and Kernel mode

User mode and Kernel mode

Windows가 동작하는 컴퓨터에의 프로세서는 두가지 의 다른 mode(user mode/kernel mode)에서 동작한다.
프로세서는 실행 중인 코드의 종류에 따라 두 mode들을 구분(변경)하며 실행 한다.
Application은 user mode에서 동작을 하고 핵심OS 요소들은 Kernel mode에서 동작을 한다.
대부분의 Driver들은 kernel mode에서 동작을 하지만 어떤 Driver들은 user mode에서 동작을 한다.

Use-mode Application을 시작 할때 Windows는 application을 위한 pocess를 생성한다.
process는 Application을 위하여 private virtual adress space와 private hanle table을 제공한다.
Application의 virtual addresss space는 private이기 때문의 하나의 application은 다른 application에 속한 데이터를 변경할 수 없다.
각 application은 고립(독자적으로)되어 실행된다. 그래서 만약 applicatino이 작살나면, 그 파급은 하나의 application에 국한된다.
다른 applicatino들과 OS는 그 파장효과에 영향을 받지 않는다.

private이 된다는 것은 use-mode application 의 virtual addresss space에 제한적이다.
user-mode상에서 동작하는 process는 OS를 위해 예약된 virtual address에 접근 할 수 없다.
user-mode application의 virtual address space 제약은 OS data의 심각한 파과의 가능성이나 변경을 방지 한다.

Kernel-mode에서 모든 code들은  하나의 virtual address space를 공유한다.
이는 kernel-mode dirver는 다른 드라이버와 OS 로부터 독립되어 실행되지 않는다는것을 위미한다.
만약 kernel-mode driver가 잘못된 virtual address에 wirte를 한다면, OS 혹은 다른 driver에 속한 데이터를 손상 시킬 수 있다.
만약 kernel-mode driver가 뻑난다면, OS를 뻑낼수도 있다.

아래의 그림은 user-mode와 kernel-mode 요소간의 통신을 보여주고 있다.


댓글 없음: