Post

[운영체제-양희재 교수님]4강 이중모드, 하드웨어 보호

경성대학교 양희재 교수님의 운영체제 4강

이중모드(Dual mode)

  • 요즘의 일반적인 환경
    • 한 컴퓨터를 여러 사람이 동시에 사용
      • 예) 서버 컴퓨터
    • 한 사람이 여러 프로그램을 동시에 사용
  • 문제점
    • 고의 또는 실수가 발생하면 여러 사람이 사용 중인 컴퓨터 또는 한 사람이 사용 중인 여러 프로그램 전체에 영향을 미칠 수 있다.
    • STOP, HALT, RESET 등의 명령어가 이러한 문제를 발생시킬 수 있다.
  • 문제 해결
    • 사용자(user) 모드와 관리자(supervisor) 모드를 분리해 사용자 프로그램이 치명적 명령(STOP, HALT, RESET 등)을 사용할 수 없도록 함
    • 이를 이중 모드(dual mode) 또는 관리자 모드 또는 시스템(사용자의 반대) 모드 또는 모니터(감시자) 모드 또는 특권(priviliged) 모드라 한다.
  • 특권 명령 (privileged instructions)
    • 관리자 모드에서만 내릴 수 있는 명령
    • 예) STOP, HALT, RESET, SET_TIMER, SET_HW 등
    • 사용자 모드에서 특권 명령을 내리면 OS는 현재의 모드를 확인 → 사용자 모드임을 확인 → 내부 인터럽트 발생 → OS 내부의 ISR를 실행 → 해당 프로그램 강제 종료

이중모드는 어떻게 구현하는가

  • CPU 안의 레지스터(비트의 모음)는 여러 상태를 저장하고 있음 ⇒ 플래그(flag)
  • 그렇다면 이중모드를 나타내는 비트를 레지스터에 할당하자.
    • OS 서비스 → 관리자 모드
    • 사용자 프로그램 → 사용자 모드
  • 일반적인 프로그램의 실행
    1. 프로그램을 메모리에 적재
    2. 사용자 모드로 프로그램 실행
    3. 사용자 프로그램이 소프트웨어 인터럽트를 발생시키면 이중모드 비트가 바뀌고 관리자모드로 들어간다.
    4. ISR을 실행한 뒤 종료되면 다시 이중모드 비트를 바꾸고 사용자 모드로 돌입
    5. 반복

하드웨어 보호

  • 일반적으로 다중 프로그래밍 시스템에서 보호해야 할 세 가지
    • 입출력장치
    • 메모리
    • CPU
  • 한 서버 컴퓨터를 여러 사람이 공유하는 상황을 가정했을 때, 한 사람의 실수 또는 잘못이 서버 컴퓨터에 영향을 미쳐 다른 모든 사람이 피해를 입으면 안되므로 하드웨어를 보호해야 한다.

입출력장치 보호(Input/output device protection)

  • 문제 상황 예) 서버 컴퓨터의 대용량 디스크에 개인 정보가 들어있는 경우 다른 사용자가 이에 접근을 시도하는 경우 등
  • 해결 방법) 입출력 명령(IN, OUT)을 특권 명령으로 바꿈
    • 사용자 모드에서 입출력 명령을 내리는 경우(Privileged instruction violation) ⇒ CPU가 관리자 모드로 바꾼 뒤 OS의 ISR 실행 ⇒ 사용자 모드가 특권 명령을 내린 것을 감지하고 강제 종료
    • OS는 ISR 초기에 정당한 요청을 받은 것인지 확인하고, 그렇지 않은 경우 거부
  • 사용자 프로그램이 입출력을 하고 싶은 경우 ⇒ OS에 부탁(소프트웨어 인터럽트) ⇒ OS가 대신 이를 처리하고 다시 사용자 모드로 전환
  • 즉 입출력은 OS만 할 수 있다.

메모리 보호(Memory protection)

  • 문제 상황 예) user 1 사용자 프로그램이 메인 메모리의 user 2 사용자 프로그램 영역 또는 OS 영역에 접근하는 경우 등
  • 해결 방법) Memory Management Unit(MMU)
    • CPU는 address bus를 통해 메모리의 어느 부분을 읽을지 정할 수 있고, 메모리는 data bus를 통해 CPU에 데이터를 보낸다.
    • 따라서 address bus를 자르면 사용자 프로그램이 다른 영역에 접근하지 못할 것이다.
    • 하지만 자기 영역에도 접근할 수 없다.
    • 그러므로 address bus를 자르지 말고, 문지기(MMU)를 둔다.
      • 문지기는 사용자 프로그램이 할당된 메모리 영역에만 접근하도록 관리한다.
  • Memory Management Unit(MMU)의 역할
    • MMU는 base와 limit을 저장하고 있어서 base와 limit 사이의 메모리 주소를 읽을 때만 통과시킨다.
      • base와 limit은 OS가 설정하며, 설정을 위한 명령은 특권 명령
    • base와 limit 사이를 벗어나는 메모리를 읽으려고 시도할 경우 CPU에 인터럽트 신호 전송 → 인터럽트 신호를 받은 CPU는 하던 일을 중지하고 OS 내의 ISR를 실행 → 잘못된 번지를 읽으려고 시도(Segment violation)한 프로그램을 강제 종료

CPU 보호(CPU protection)

  • 문제 상황 예) 사용자의 실수 또는 고의로 CPU를 독점하는 경우 다른 사용자 프로그램이 CPU를 사용할 수 없음
    • 예) 무한 루프
  • 해결 방법) 타이머 사용
    • 타이머는 일정 주기로 CPU에 신호를 내보냄
    • 타이머를 사용해 일정 주기마다 인터럽트를 발생 → OS의 ISR에서 CPU 시간이 모든 프로세스에 골고루 할당되는지, 한 프로세스가 독점 중인지 확인 → 만약 한 프로그램이 독점 중이라면 다른 프로그램으로 강제 전환
This post is licensed under CC BY 4.0 by the author.