사용자 모드와 관리자 모드
한 컴퓨터를 여러 명이 동시에 사용하거나, 한 사람이 여러 개의 프로그램을 동시에 상활용하게 되면서 어떤 사용자가 내린 STOP, RESET 명령이 프로그램 전체에 영향을 주게되는 보안의 위험성이 생겼다. 이에 개발자들은 이중 모드라는 개념을 도입하여 CPU를 두가지 모드(사용자 모드와 관리자 모드)로 나누어서 사용했다.
1. 사용자 모드 : 치명적인 명령의 사용이 불가능하다.
2. 관리자 모드 : 관리자 모드에서만 O/S에 있는 명령을 실행할 수 있다. 관리자 모드에서만 실행가능 한 STOP, HALT, RESET, SET_TIMER, SET_HW와 같은 명령어를 특권 명령(Priviledged Instructino)이라고 부른다. 관리자 모드는 다른 말로 System Mode, Monitor Mode, Privileged Mode, Supervisor Mode라고 부른다.
이중모드는 어떻게 만드나요?
CPU는 Registers, ALU, Control Unit으로 이루어져있고, 레지스터(Regiester)는 비트(Bit)들의 모음이다. 레지스터(Register)중에는 CPU상태를 나타내는 비트(Bit)인 플래그(Flag)가 있고, 이 플래그(Flag)에 이중 모드를 나타내는 관리자 비트(Monitor Bit)를 둔다.
사용자 프로그램(User Program)에서 인터럽트(Interrupt)시, CPU는 관리자 비트를 1로 Set하여 관리자 모드(Monitor Mode)로 바꿔주고, O/S(Operating System)의 ISR(Interrupt Service Routine)를 찾아 실행한다. ISR의 실행이 끝난 후에는 사용자 프로그램으로 돌아가기 직전에 관리자 비트를 0으로 Clear해준다. 즉, 프로그램의 실행은 사용자 모드와 번갈아가면서 진행된다.
->즉, 사용자 프로그램이 O/S를 통해 제한된 기능만을 실행하게 함으로써 컴퓨터를 보호하게 하는 것이 이중 모드의 목적이다.
+) 만약 사용자 프로그램이 고의로 특권 명령을 실행한다면?
특권 명령이 실행된다면 CPU는 관리자 비트를 확인한다. 현재는 사용자 모드이므로 관리자 비트가 0일 것이고, CPU는 Internal Interrupt중의 하나인 Priviledged Instruction Violation Interrupt를 발생시킨다. O/S의 ISR을 실행시키고, ISR은 사용자 프로그램을 강제 종료시킨다.
본 글은 다음링크의 강의 영상을 정리한 것입니다.
운영체제: (4) 이중모드, 하드웨어 보호- Youtube