728x90

이중 모드

 

* 한 컴퓨터를 여러 사람이 동시에 사용하는 환경에서 발생하는 문제점

    한 사람이 여러 개의 프로그램을 동시에 사용

    한 사람의 고의/실수 프로그램이 전체에 영향

        STOP, HALT, RESET 등

 

* 사용자 프로그램은 STOP 등 치명적인 명령어를 내리지 못하게 이중 모드를 도입

    사용자 모드 vs 관리자 모드

    관리자 모드 = 시스템 모드 = 특권 모드 = 모니터 모드

 

* 특권 명령 (Privileged Instructions)

    STOP, HALT, RESET, SET_TIMER, SET_HW ...

    관리자 모드에서만 내릴 수 있는 명령임

 

Carry : 자리올림

Negative : 연산의 결과가 음수

Zero : 연산의 결과가 0

Overflow : 연산의 결과가 자리 범위를 넘어섬

flag : 위의 발생한 이벤트들을 나타낸다

 

* 이중 모드는 어떻게 구현하는 것인가?

    flag에 비트를 하나 더 추가하는 것이다. (이중 모드를 나타내는 비트)

    => ex) 모니터라는 비트가 1이면 Privilege모드 0이면 User모드

    메인 메모리에 적재된 OS는 관리자 모드

    메인메모리에 적재된 응용프로그램은 사용자 모드로 실행한다.

    또한 하드웨어/소프트웨어 인터럽트가 발생하면 관리자모드

    운영체제 서비스가 끝나면 다시 사용자 모드로 돌아온다.

 

* 일반적 프로그램의 실행

    1. 프로그램 적재

    2.  키보드, 마우스(사용자 모드) > ISR (관리자 모드) > 모니터, 디스크, 프린터 ... (사용자 모드)

 

CPU는 특권 명령이 들어왔을 때, 관리자 모드, 사용자 모드를 구분하는 모니터 비트를 확인 후,

관리자 모드가 아닐 시, 내부에서 일어난 인터럽트로 간주하여 ISR을 실행시킨다.

(이 ISR에는 권한이 맞지 않는 명령을 보고 프로그램을 종료시킬 것이다.)

 

이중 모드 := 보호

    일반 사용자가 하드웨어를 마음대로 사용하게 된다? 만약 서버 컴퓨터를 다룰 때에는 심각한 문제 발생

 

입출력 장치 보호

    다른 사용자의 입출력 등에 방해받는 경우

    ex) 서버 컴퓨터를 조작하는데, 다른 사용자가 키보드 마우스를 마음대로 움직여 관리자 통제할 수 없음

    => 입출력 명령을 특권 명령으로 바꾼다. (IN, OUT)

    => 입출력을 하려면 OS에 요청하고(System Mode), 운영체제가 입출력 대행 후 User Mode 복귀

    => 올바른 요청이 아닐 시 운영체제가 필터링해준다.

    사용자가 입출력 명령을 직접 내린 경우는 Privileged Instruction Violation -> 강제 종료

 

메모리 보호

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

    ex) 우연히 혹은 고의로 다른 사용자 정보/프로그램에 대한 해킹

    => User1에 할당된 메모리 번지수가 1~500 일 때, User1이 3999에 접근하려 하면 이를 통제한다

    => 그리고 이는 데이터를 주고받는 데이터 버스 사이에 위치 해아 한다.

    => 또한 잘못된 번지를 읽으려는 시도를 할 때, 인터럽트 신호를 보내 ISR을 실행시킨다.

    => 이 역할들을 해주는 것이 MMU(Memory Management Unit)이다.

    다른 사용자 또는 운영체제 영역 메모리에 접근한 경우 Segment Violation -> 강제 종료

 

CPU 보호

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

    ex) while(n=1) ...    => 루프가 끝나지 않음

    => 타이머를 배치하여, 일정 시간 경과 시 타이머 인터럽트

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

728x90
복사했습니다!