2-2 이중모드(Dual Mode)

10000001a·2021년 3월 28일
0

운영체제 정리

목록 보기
5/6

이중모드란

당신이 서버 컴퓨터와 같이 많은 사람들이 사용하는 컴퓨터를 사용하고 있다고 생각해보자.
누군가 컴퓨터를 멈추게 하는 명령어를 실행하면 모든 사용자들은 컴퓨터 사옹에 장애를 겪게된다.

이러한 상황을 예방하기 위해 OS는 두가지 모드로 분리하여 사용자 프로그램에서의 치명적인 명령어 사용을 막아놓았는데 이를 **이중모드 (Dual Mode)**라고 한다.

  • 사용자 모드 (User Mode)
  • 관리자 모드 (Supervisor Mode, System Mode, Monitor Mode, Privileged Mode ...)

위에 언급한 치명적인 명령어를 특권 명령(Privileged Instruction)이라고 하고 STOP, HALT, RESET, SET_TIMER와 같은 명령어들이 포함되어있다.

이중모드 작동 원리

CPU에는 bit의 모음인 Register가 존재한다.

Register에는 flag라 하는 CPU의 현재 상태를 나타내주는 bit들이 존재하는데 다음과 같은 것들이 있다.

  • carry
  • negative
  • zero
  • overflow

이중모드가 구현되어있다면 여기에 하나의 비트가 추가되는데, 이를 Monitor bit라고 하는데 의미는 다음과 같다.

  • Monitor bit == 0, User Mode
  • Monitor bit == 1, System Mode

다시 보는 컴퓨터를 켠 후

  1. 컴퓨터를 켜면 Booting을 시작한다.
    초기에는 Monitor bit == 1
  2. CPU가 OS의 코드를 받아서 처리한다.
  3. CPU의 OS 코드 처리가 끝나면 OS는 다음 User Program을 CPU에 할당하는데, 할당하기 직전에 Monitor bit == 0으로 변경한다.

또한, Interrupt가 발생할 경우 OS 내부에 있는 ISR을 실행해야 하기 때문에 Interrupt가 발생하면 Monitor bit는 1이 된다.

만약, User Program에서 Privileged Instruction을 실행 할 경우, CPU는 Monitor bit를 확인한다. 만약 관리자 모드가 아니라면 (Monitor bit == 0) Internal Interrupt를 걸어서 해당 User Program을 강제로 종료시킨다.

profile
잘 부탁드립니다!

0개의 댓글