본문 바로가기

CS/운영체제(OS)

OS - 듀얼모드와 하드웨어 보호

728x90

듀얼모드와 하드웨어 보호

듀얼 모드

  • OS는 유저모드와 커널모드(관리자 모드, 특권 모드)로 나뉜다.
  • 유저가 만약 모든 권한을 가진다면 하드웨어에게 해를 끼칠 수 있는 상황이 존재할 수 있다.
    • I/O를 침범할 수 있다.
    • 어떠한 프로그램이 OS상태를 바꾸거나 강제로 디스크를 탐색할 수 있다.
    • 즉 해킹이나 불법 프로그램에 의해 의도치 않은 상황이 발생할 수 있다.
  • 이러한 상황을 방지 하기 위해 OS는 듀얼 모드를 지원한다.

유저 모드와 커널 모드

  • CPU 레지스터는 flag를 가지고 있다. 사진의 mode bit가 레지스터가 갖고 있는 그것이다. 여기엔 여러가지 비트가 있는데 그 중 하나이다. flag비트에 따라 유저 모드와 커널 모드가 바뀌게 된다. 이것은 하나의 인터럽트로 작용한다. 인터럽트에 의한 설명은 이전 포스팅에 자세히 다루었다.
  • 유저 모드
    • 유저 모드는 그야말로 유저가 컴퓨터를 지배하는 상태를 말한다. 사용자가 메모장을 켜서 타이핑을 하고 있다면 이것은 유저 모드이다.
    • 유저 모드는 입출력 모드를 할 수 없고 메모리에 직접적으로 접근할 수 없다.
  • 커널 모드
    • 워드 작업을 하다가 이미지 업로드를 하려고 한다면 소프트웨어 인터럽트가 발생하고 모드 변경 인터럽트가 이어져 커널모드로 바뀐다. 그리고 하드디스크에서 이미지를 찾아 메인 메모리에 적재하고 업로드가 완료되면 다시 유저 모드로 전환된다.

하드웨어 보호

  1. I/O 보호
    1. I/O보호는 위에서 설명한대로 듀얼 모드에 의해 보호된다. 입출력을 운영체제에서 관리하게 되므로 유저가 강제로 입출력을 할 수 없게 한다.
  2. 메모리 보호
    1. 다른 프로그램의 메모리나 운영체제의 메모리를 침범하려는 시도가 있을 수 있다. 이것이 해킹이다.
    2. 이것을 막기 위해 cpu에서 주소버스가 메모리로 갈 때 지정된 주소 범위가 아니면 인터럽트가 발생해 프로그램을 종료하는 방법을 사용한다.
    3. 이것을 MMU(Memory Manager Unit)라한다. base와 limit 사이의 주소일 경우에만 허용하도록 한다. 이러한 base 와 limit는 운영체제가 관리하게 된다. MMU는 이러한 보호 기능 외에도 가상 메모리 공간을 실제 메모리 공간으로 매핑하는 등 많은 기능을 수행하는 것 같다. 이것은 추후 공부하게 될 것 같다.
  3. CPU 보호
    1. program이 동작하다보면 cpu를 독점하게 되는 일이 생길 수 있다.
    2. 만약 while(true) 이면 무한루프에 걸린다. 이러면 이 프로그램만 무한으로 실행되게 된다.
    3. 이것을 해결하기 위해 Timer를 두어 일정 주기로 cpu에 인터럽트를 걸도록 설계하여 지금 cpu시간이 골고루 분포되고 있는지 검사한다. 그리고 어떠한 프로그램에 집중되어 있을 경우 그 프로그램을 종료하는 것으로 CPU보호를 실현할 수 있다.