ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제 개념] 하드웨어 보호
    운영체제 Operating System/기초 핵심 개념 2020. 4. 5. 13:41

    1.6 하드웨어 보호

     

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

     - 메모리 보호 (Memory protection) 

     - CPU 보호 (CPU protectiopn)

     

     

    1. 입출력장치 보호

     · 사용자의 잘못된 입출력 명령으로 인해 다른 사용자의 입출력, 정보 등에 방해 및 혼선

     - 예: 프린트 혼선, 리셋 등

     - 예: 다른 사람의 파일 읽고 쓰기 (하드디스크) 

     

    · 해결법

     - 입출력 명령을 특권명령으로:  IN, OUT

        IN : 키보드,마우스 같은 입력 장치로부터 정보를 받아 들이는 명령

        OUT : 스피커,프린터등 출력 장치의 명령

     사용자가 직접 내리는 것이 아니라 os가 명령어를 내릴 수 있는 특권 명령.

    - 입출력을 하려면 운영체제에게 요청(software interrupt)하고,

      (user mode -> system mode전환) ; OS가 입출력 대행;  다시 user mode 복귀

     - 올바른 요청이 아니면 운영체제가 거부

       또는 사용자가 입출력 명령을 직접 내린 경우?

      - Privileged instruction violation  / 특권명령침해

     * 왼쪽 그림을 보면, HWP를 user mode로 실행 중이였다가 프린트를 하고 싶다! 하면 software interrupt로

        OS에게  프린트 사용하고  싶다고 부탁한다. 그러면 OS가 OUT 명령어를 내려 프린트를 사용하게 한다.

       이때는 system mode 이다.  프린트 이용이 마친 후에는 다시 user mode로 돌아와 HWP를 다시 실행한다.

       if, 사용자가 직접 명령어를 내린 경우? HWP 실행 중 사용자가 직접 OUT 명령어를 내릴 경우,

       우선 내부 interrupt가 걸리고, OS가 이를 실행하려다가 잘못된 명령어이므로 실행을 중단시킨다. 

    * 오른쪽 그림을 보시다시피, application에서 바로 hardware 접근은 안된다.

       무조건 OS를 거쳐서 접근을 해야한다!! 

     

    2. 메모리 보호

    · 다른 사용자 메모리 또는 운영체제 영역 메모리 접근

     - 우연히 또는 고의로

     - 다른 사용자 정보/프로그램에 대한 해킹

     - 운영체제 해킹 : OS 코드를 변경하는 해킹

    · 해결법

     - MMU 를 두어 다른 메모리 영역 침범 감시하도록 (Memory Management Unit)

        MMU:  자신의 실행 또는 접근할 base 번지와 limit 번지를 기입하여 메모리 접근을 관리한다.

     - MMU 설정은 특권명령: 운영체제만 바꿀 수 있다

    · 다른 사용자 또는 운영체제 영역 메모리 접근 시도?

     - Segment violation / 잘못된 영역을 설정(침범)하면, program 종료

     

    *   그림을 통한 설명,  U1은 U1만 봐야지 U2를 보면 안된다. 해당 program만 봐야한다. 

        컴퓨터 구조에서 배웠지만, 내가 몇 번지를 읽겠다는 정보는 address bus를 통해 보내고,

        해당 번지의 data가 data bus를 통해 온다.  이때, address bus에다가 문지기 같이 MMU를 놓으면 된다.

        만약 U1이 500~1000번지라고 해보자. 그러면 U1을 사용할 경우

        MMU의 base에는 500 lmit에는 1000 이라고 기입하거나,  500~100사이의  번지를 기입하면 된다.

        번지가 잘못됐거나 넘었을 경우 예를 들어, 1200번지 이라고 기입을 하면, CPU로 인터럽트 신호를 보내,

        OS안의 interrupt routine이  '잘못된 신호를 읽으려고한다' 라고 인지를 하여 프로그램 종료한다.

       이를 segment violation이라 한다.

     

    3. CPU 보호

    · 한 사용자가 실수 또는 고의로 CPU 시간 독점

     - 예: while (n = 1) …

     - 다른 사용자의 프로그램 실행 불가

     

    ·  해결법

    - Timer 를 두어 일정 시간 경과 시 타이머 인터럽트

    - 인터럽트 → 운영체제 → 다른 프로그램으로 강제 전환 

     

     

    댓글

Designed by Tistory.