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
'C언어 > 보고서' 카테고리의 다른 글
C언어 :: 연결리스트 ( Linked List ), 링크드리스트 (0) | 2015.05.13 |
---|---|
C언어 :: 구조체 더 알아보기 (0) | 2015.05.13 |
C언어 :: 구조체 ( Struct ) (0) | 2015.05.11 |
C 언어 :: 함수호출 Call by Reference (0) | 2015.04.15 |
C언어 :: malloc 함수를 이용한 동적할당 (1) | 2015.04.13 |
WRITTEN BY