[운영체제 I/O Protection] 유저(User)모드 vs 커널(Kernel)모드 (모니터 모드)- 듀얼 모드
출처 : https://jhnyang.tistory.com/190
[운영체제 I/O Protection] 유저(User)모드 vs 커널(Kernel)모드 (모니터 모드)- 듀얼 모드
[운영체제 목차] 안녕하세요 ! 오랜만에 Chapter1 포스팅으로 돌아왔어요 ㅎㅎㅎ 운영체제 공부하다보면 커널에 대해서 배우게 되고 그 다음 듀얼모드 멀티모드 배우고 듀얼모드 중에서도 유저모
jhnyang.tistory.com
# CPU에 두가지 모드가 있는 이유?
결론적으로 말하면 I/O장치를 보호를 목적
예 ) 컴퓨터 하드디스크에 있는 내용을 싹 지워버리는 악의적인 프로그램을 만들었을 때 방지하기 위해 어플리케이션 프로그램들은 직접 I/O장치에 접근할 수 없게 만들고 운영체제를 통해서만 I/O장치를 사용할 수 있게 만듦
#유저 모드와 커널 모드
어플리케이션 프로그램이 수행되는 모드는 유저모드.
프로그램이 수행되다가 인터럽트 걸려서 운영체제가 호출돼 수행되는 모드는 커널모드
커널 모드인지 유저 모드인지 어떻게 구분법)
모드 비트(mode bit)라는 것이 있는데 이 비트가 1이면 보통 유저모드를, 0이면 커널 모드를 가리킴
그림 1처럼 무한루프를 도는데, 이 무한루프가 이렇게 user process와 커널을 왔다갔다 하면서 돕니다.
보통 코드가 수행될 때는 유저 모드에서 도는데 프로그램을 수행하다가 인터럽트가 걸려서 운영체제가 수행될 때는 커널모드로 전환됩니다.
한 예로, I/O 장치에다가 데이터를 쓰는 명령어 in/out 이런 기계어 명령어가 있습니다.
데이터를 읽어들이는 명령어가 in이고 I/O 디바이스 컨트롤러 레지스터에 값을 쓰는 명령어가 out입니다.
이런 in/out같은 명령어들은 유저모드가 아니라 커널모드에서 돌아가도록 만들었습니다.
그림2 사진을 보면 system call이라는게 있는데, 프로그램이 어떤 자료가 필요하면 직접 access 하는 것이 아니라 운영체제한테 요청합니다. 이 운영체제한테 요청하는 interface를 시스템 콜이라고 합니다.
application이 디스크에서 데이터를 읽으려면 운영체제에게 요청 필요
Netscape = 웹브라우저.
커널 모드는 CPU 명령어 이고 특정한 권한이 있어야만 수행되는 명령어, Privileged(권한) mode라고도 불립니다.
그 외 커널모드는 supervisor mode, system mode, monitor mode라고도 불립니다.
커널모드 특징
- 시스템의 모든 메모리에 접근 할 수 있고 모든 CPU 명령을 실행 할 수 있다.
- 운영체제 코드나 디바이스 드라이버 같은 커널 모드 코드를 실행한다.
- CPU는 커널 모드 특권 수준에서 코드를 실행한다.
유저모드 특징
- 사용자 애플리케이션 코드가 실행한다.
- 시스템 데이터에 제한된 접근만이 허용되며 하드웨어를 직접 접근 할 수 없다.
- 유저 애플리케이션은 시스템 서비스 호출을 하면 유저모드에서 커널 모드로 전환된다.
- CPU 유저 모드 특권 수준으로 코드를 실행한다
- 유저모드에서 실행하는 스레드는 자신만의 유저모드 스택을 가진다.