운영체제

[운영체제 I/O Protection] 유저(User)모드 vs 커널(Kernel)모드 (모니터 모드)- 듀얼 모드

제이아이엔 2022. 8. 25. 13:28
반응형

출처 : https://jhnyang.tistory.com/190

 

[운영체제 I/O Protection] 유저(User)모드 vs 커널(Kernel)모드 (모니터 모드)- 듀얼 모드

[운영체제 목차] 안녕하세요 ! 오랜만에 Chapter1 포스팅으로 돌아왔어요 ㅎㅎㅎ 운영체제 공부하다보면 커널에 대해서 배우게 되고 그 다음 듀얼모드 멀티모드 배우고 듀얼모드 중에서도 유저모

jhnyang.tistory.com

# CPU에 두가지 모드가 있는 이유?

결론적으로 말하면 I/O장치를 보호를 목적

 

예 ) 컴퓨터 하드디스크에 있는 내용을 싹 지워버리는 악의적인 프로그램을 만들었을 때 방지하기 위해 어플리케이션 프로그램들은 직접 I/O장치에 접근할 수 없게 만들고 운영체제를 통해서만 I/O장치를 사용할 수 있게 만듦

 

 

#유저 모드와 커널 모드

그림 1

어플리케이션 프로그램이 수행되는 모드는 유저모드.

프로그램이 수행되다가 인터럽트 걸려서 운영체제가 호출돼 수행되는 모드는 커널모드

 

 

커널 모드인지 유저 모드인지 어떻게 구분법)

모드 비트(mode bit)라는 것이 있는데 이 비트가 1이면 보통 유저모드를, 0이면 커널 모드를 가리킴

그림 2

그림 1처럼 무한루프를 도는데, 이 무한루프가 이렇게 user process와 커널을 왔다갔다 하면서 돕니다.

보통 코드가 수행될 때유저 모드에서 도는데 프로그램을 수행하다가 인터럽트가 걸려서 운영체제가 수행될 때커널모드로 전환됩니다.

 

한 예로, I/O 장치에다가 데이터를 쓰는 명령어 in/out 이런 기계어 명령어가 있습니다.

데이터를 읽어들이는 명령어가 in이고 I/O 디바이스 컨트롤러 레지스터에 값을 쓰는 명령어가 out입니다.

이런 in/out같은 명령어들은 유저모드가 아니라 커널모드에서 돌아가도록 만들었습니다.

 

그림2 사진을 보면 system call이라는게 있는데, 프로그램이 어떤 자료가 필요하면 직접 access 하는 것이 아니라 운영체제한테 요청합니다. 이 운영체제한테 요청하는 interface를 시스템 콜이라고 합니다.

 

그림3

application이 디스크에서 데이터를 읽으려면 운영체제에게 요청 필요

Netscape = 웹브라우저.

 

 
 그림 3 처럼 요청을 하고 운영체제가 I/O장치에다가 명령을 내려가지고 그 결과가 나오면 그거를 다시 application program한테 전달합니다. 이것이 I/O protection의 기본적인 개념

 

커널 모드는 CPU 명령어 이고 특정한 권한이 있어야만 수행되는 명령어,  Privileged(권한) mode라고도 불립니다.

그 외 커널모드는 supervisor mode, system mode, monitor mode라고도 불립니다.

 

커널모드 특징

- 시스템의 모든 메모리에 접근 할 수 있고 모든 CPU 명령을 실행 할 수 있다.

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

- CPU는 커널 모드 특권 수준에서 코드를 실행한다.

 

유저모드 특징

- 사용자 애플리케이션 코드가 실행한다.

- 시스템 데이터에 제한된 접근만이 허용되며 하드웨어를 직접 접근 할 수 없다.

- 유저 애플리케이션은 시스템 서비스 호출을 하면 유저모드에서 커널 모드로 전환된다.

- CPU 유저 모드 특권 수준으로 코드를 실행한다

- 유저모드에서 실행하는 스레드는 자신만의 유저모드 스택을 가진다.

 

728x90