윈도우즈의 메모리는 User 모드와 Kernel모드로 나뉘어져 있으며 주소별로 역할이 정해져 있다.
그림 1을 보면 간단하게 User Space와 Kernel Space를 구분하여 사용하는 것을 알 수 있다.
일반적으로 User Mode는 일반 Application의 영역이며 Kernel Mode는 OS관련 프로그램과 디바이스 드라이버가 위치를 하게 된다.
Kernel 메모리에는 OS가 로드되면서 OS와 관련있는 함수(API)와 디바이스 드라이버 등과 같이 OS 구동에 필요한 데이터들이 올라가 있다.
인텔 X86 프로세서는 특권계층이라는 것을 두어 계층별로 접근할 수 있는 영역을 구분하여 사용하고 있다.
그렇다면 User Mode에 올라간 Application이 Kernel Mode의 메모리에 접근하여 작동하려면 어떻게 해야하는가?
예를 들어, mp3 player의 경우 mp3 파일을 분석하여 사운드카드에 해당 분석 내용을 전달하여 음악을 수행하게 되어지는데 어떻게 하드웨어인 사운드카드를 기동시키는가? 하는 의문을 가지게 된다.
OS Application에는 API라는 Interface 함수들이 존재하여 디바이스들을 컨트롤 할 수 있게 도와준다. 즉 일반 Application은 API라는 신뢰성 있는 OS 함수를 사용하여 디바이스 드라이버들을 컨트롤 하게 되는 것이다.
이런 구조는 일반 Application이 직접 Kernel 모드에 접근할 수 없도록 하여 안정성을 크게 향상 시킨다.
이부분에 대한 자세한 내용은 앞의 커널 내용을 찾아보기바란다.
[그림 1] X86 레이아웃
그림 1을 보면 간단하게 User Space와 Kernel Space를 구분하여 사용하는 것을 알 수 있다.
일반적으로 User Mode는 일반 Application의 영역이며 Kernel Mode는 OS관련 프로그램과 디바이스 드라이버가 위치를 하게 된다.
Kernel 메모리에는 OS가 로드되면서 OS와 관련있는 함수(API)와 디바이스 드라이버 등과 같이 OS 구동에 필요한 데이터들이 올라가 있다.
인텔 X86 프로세서는 특권계층이라는 것을 두어 계층별로 접근할 수 있는 영역을 구분하여 사용하고 있다.
[그림 2] 특권레벨
그렇다면 User Mode에 올라간 Application이 Kernel Mode의 메모리에 접근하여 작동하려면 어떻게 해야하는가?
예를 들어, mp3 player의 경우 mp3 파일을 분석하여 사운드카드에 해당 분석 내용을 전달하여 음악을 수행하게 되어지는데 어떻게 하드웨어인 사운드카드를 기동시키는가? 하는 의문을 가지게 된다.
OS Application에는 API라는 Interface 함수들이 존재하여 디바이스들을 컨트롤 할 수 있게 도와준다. 즉 일반 Application은 API라는 신뢰성 있는 OS 함수를 사용하여 디바이스 드라이버들을 컨트롤 하게 되는 것이다.
이런 구조는 일반 Application이 직접 Kernel 모드에 접근할 수 없도록 하여 안정성을 크게 향상 시킨다.
이부분에 대한 자세한 내용은 앞의 커널 내용을 찾아보기바란다.