이중모드
한 컴퓨터를 여러 사람이 동시에 사용하는 환경
- 또는 한 사람이 여러 개의 프로그램을 동시에 사용
- 한 사람이 여러 프로그램을 사용하는 환경
- 한 사람의 고의/실수 프로그램이 전체 영향
- 서버 컴퓨터에 실수가 되면 다른 유저에게 영향
- STOP,HALT,RESET 등 => 오직 관리자만 사용하게 한다고 생각
=> 이중 모드의 등장(사용자 모드, 관리자 모드)
사용자 프로그램은 STOP 등 치명적 명령 사용 불가하게!
- 사용자(user) 모드 vs관리자(supervisor) 모드
- 이중 모드(dual mode)
- 관리자 모드 = 시스템 모드 = 모니터 모드(감시자 모드) = 특권 모드
- supervisor,system, monitor, priviliged mode
특권 명령(privileged instructions)
- 관리자 모드에서만 내릴 수 있는 명령
- STOP,HALT,RESET,SET_TIMER,SET_HW...
이중 모드(dual mode)
- 레지스터에 모드를 나타내는 플래그(flag)
- 운영체제 서비스 실행될 때는 관리자 모드
- 사용자 프로그램 실행될 때는 사용자 모드
- 하드웨어/소프트웨어 인터럽트 발생하면 관리자 모드
- 운영체제 서비스가 끝나면 다시 사용자 모드
일반적 프로그램의 실행
- 프로그램 적재(on memeory)
- user mode => (키보드, 마우스) = > system mode(ISR) => user mode => (모니터, 디스크, 프린터) => system mode => user mode
이중 모드는 보호와 관련이 있음
하드웨어 보호
- 사용자의 잘못된 입출력, 정보 등에 방해
- ex) 실 사용자가 아닌 다른 사용자가 중간에 방해 방지
- ex) 프린트 혼선, 리셋 등
- ex) 다른 사람의 파일 읽고 쓰기 (하드 디스크)
- 해결법
- 입출력 명령을 특권명령으로 :IN,OUT
- 입출력을 하려면 운영체제에게 요청하고(system mode 전환),
- 운영체제가 입출력 대행을 마친 후 다시 user mode 복귀
- 올바른 요청이 아니면 운영체제가 거부 (OS가 컨트롤 해줌)
- 사용자가 입출력 명령을 직접 내린 경우?
- privileged instruction violation
메모리 보호(memory protection)
- 다른 사용자 메모리 또는 운영체제 영역 메모리 접근
- 우연히 또는 고의로
- 다른 사용자 정보/프로그램에 대한 해킹
- 운영체제 해킹
- 해결법
- CPU에서 Memory로 Address가 있는데 자르게 함 => 자기 영역에 못 들어 감
- Address bus에 문지기를 세워 주소를 낼 적에 조건에 맞는 값만 통과하게 함
-> base, limit 사이의 범위만 통과 (base,limit 값은 OS가 설정하고 변경은 특권 모드에서만 가능)
- MMU를 투어 다른 메모리 영역 침범 감시하도록(Memory Management Unit)
-MMU 설정은 특권 명령: 운영체제만 바꿀 수 있다
- 다른 사용자 또는 운영체제 영역 메모리 접근 시도?
- segment violation
CPU 보호