이중모드, 하드웨어 보호 한줄 정리

ssuda·2019년 12월 23일
0

이중모드(Dual Mode)


사용자 모드와 관리자 모드
한 컴퓨터를 여러 명이 동시에 사용하거나, 한 사람이 여러 개의 프로그램을 동시에 상활용하게 되면서 어떤 사용자가 내린 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은 사용자 프로그램을 강제 종료시킨다.

하드웨어 보호(Hardware Proetection)


  • 입출력 장치 보호(I/O Protection)
    - 필요성 : 다른 사용자의 입출력을 방해하는 경우
    • How To Do : 입출력 명령(IN, OUT)을 특권 명령으로 설정한다.
    • 만약 사용자 프로그램이 입출력 명령을 사용하고 싶다면 Software Interrupt를 통하여 O/S에 입출력을 부탁해야 한다.
  • 메모리 보호(Memory Protection)
    - 필요성 : 다른 사용자의 메모리나 운영체제 영역 메모리에 접근하는 경우
    • How To Do : 사용자 프로그램이 접근하려는 Address가 해당 프로그램에 할당된 주소인지 확인하는 MMU(Memory Management Unit)를 두어, 할당되지 않은 영역의 메모리에 접근하려고 한다면 CPU에 Interrupt(Segment Violation Error)를 발생시켜 사용자 프로그램을 종료시킨다.
  • CPU 보호(CPU Protection)
    - 필요성 : 한사용자가 실수 또는 고의로 CPU 시간을 독점하는 경우
    - How To Do : Timer를 두어 Process가 CPU를 독점한지 일정 시간 경과 시, CPU에 Timer Interrupt를 걸어서 OS에 있는 Timer ISR로 jump하여 CPU가 강제로 다른 사용자 프로그램으로 전환하게 한다.

참고 영상


본 글은 다음링크의 강의 영상을 정리한 것입니다.
운영체제: (4) 이중모드, 하드웨어 보호- Youtube

profile
안녕하세요 코딩을 사랑하는 ssuda 입니다.

0개의 댓글