이중모드, 하드웨어 보호
한 컴퓨터를 여러 사람이 동시에 사용하는 환경이다.
한사람의 실수가 전체에 영향을 끼칠 수 있으므로 일반유저는 STOP, HALT, RESET 등과같은 명령어는 일반 유저가 이용할 수 없도록 하는것. 이를 이중모드
라 한다.
이를 사용자(user)모드, 관리자(supervisor) 모드 라고 한다.
관리자 모드 = 시스템 모드 = 모니터 모드 = 특권 모드
특권 명령(ex. STOP, HALT, RESET, SET_TIMER, SET_HW 등은 관리자 모드에서만 사용 가능)
이중모드 동작방식
CPU안에 레지스터 ALU, 제어유닛이 있다,
레지스터는 비트들의 모음(32bit의 경우 32개가 있다.)
레지스터 비트는 carry,zero, negative, overflow 와 같은 플래그도 갖고있다,
또한 이중모드를 나타내기 위한 플래그(모니터 비트라 함) 또한 레즈스터에 존재한다.
모니터 비트가 1이면 시스템모드 0이면 유저모드이다.
가령 게임을 실행하고 저장한다고 가정해보자.
1.처음 파워를 키면 부팅이 일어난다 이때는 모니터 비트가 1이다.(시스템 모드)
2.OS의 부트가 끝나고 특정 게임을 실행한다고 하자, 그럼 디스크에서 게임을 메모리로 갖고올 것이다.
3.그리고 실행이 게임으로 넘어갈 때 모니터 비트는 0 (유저모드)로 변경된다.
4.다시 게임내용을 하드디스크에 저장할 때는 OS에게 부탁(SWI,소프트웨어 인터럽트)하여 OS가 저장하게 한다(다른파일을 덮어쓰는지와 같은 부정한 행위를 하는지에 대한 판단을 하고 저장하게 해줌). 이때는 모니터 비트가 다시 1이된다. //물론 게임 자체적으로 디스크에 저장할 수 있지만 보안상의 이슈 존재!
5.저장을 완료하면 다시 게임 프로그램으로 돌아오고 모니터 비트가 0이된다.
운영체제 서비스 실행될 때는 관리자 모드
사용자 프로그램 실행될 때는 사용자 모드
하드웨어/소프트웨어 인터럽트 발생하면 관리자 모드
운영체제 서비스가 끝나면 다시 사용자 모드
하드웨어 보호
1.입출력장치에 대한 보호
하드웨어에 대한 적절한 보호가 없을 때의 경우
내가 프린트하는데 누가 방해할라고 그놈도 계속 프린트 명령을 보내는상황이 발생했을 때.
내가원하는 출력물, 상대가 원하는 출력물이 섞여서 나오는 경우가 생길 수 있다.
어떻게?아무유저나 In,Out 명령을 내리지 못하도록 특권명령으로 한다.
사용자가 입출력 명령을 직접 내린 경우?
Privileged instruction violation 이라 하며 해당 프로그램을 강제로 중지시킨다.
메모리 보호
멀티프로그래밍, 타임쉐어링 프로그래밍에서는 동시에 여러프로그램이 돌고있다.
특정 프로그램이 돌면서 다른 프로그램 혹은 OS의 영역에 기웃거리지 못하게 한다.
어떻게?
메모리에 접근하려면 어드레스 버스를 통해야하는데 어드레스 버스에 문지기를 두어 자기것에만 접근하는지 확인한다.
확인할 때는 base, limit 를 참고한다. 잘못된 범위를 읽을 땐 인터럽트를 O/S로 보낸다. 잘못된 번지를 읽을 때 보내는 신호를 보통 Segment violation 라고 부른다.
여기서 문지기를 MMU(Memory Management Unit)라고 한다. base 와 limit 사이에 들어오는지 확인하며 base와 limit는 OS가 관리한다. 또한 base와 limit는 아무나 설정하면 안되므로 특권명령으로 관리된다.
3.CPU 보호