이중모드
- 한 컴퓨터를 여러 유저가 동시에 사용하는 경우
- 한 사람이 여러 프로그램을 동시에 사용하는 경우
- 한 사람의 실수/고의가 전체 사용자 혹은 다른 프로그램에 영향을 줄 수 있다
- 어셈블리어(STOP,RESET,TIMER) 등등의 명령어는 관리자만 내릴 수 있도록 한다
- 따라서, 사용자 모드와 관리자 모드, 두 개의 이중 모드를 설정한다
이중모드를 나타내는 법
- cpu register에 이중모드를 나타내는 flag 비트를 추가한다
- overflow,carry 등을 나타내는 flag 비트 동일한 개념이다예시
이중모드 예시 1 (게임 실행)
1. 게임 프로그램 실행
2. OS가 HDD의 게임 프로그램 실행(관리자 모드)
3. OS가 cpu register bit의 이중모드 bit를 0으로 만든다(사용자 모드로 전환)
3. 게임은 사용자모드에서 실행된다.
이중모드 예시 2 (저장)
- 일반 프로그램이 하드 디스크에 직접 저장을 못하게 한다.
- 일반 사용자도 직접 HDD에 접근할 수 있다는 것이므로 보안에 취약하다
- 따라서 저장은 소프트웨어 인터럽트로 한다.
이중 모드 실행 순서
1. 레지스터에 모드를 나타내는 플래그 설정
2. OS가 실행될 때는 관리자 모드
3. 사용자 프로그램은 사용자 모드
4. HW/SW 인터럽트가 발생하면 관리자 모드로 전환된다
5. OS가 작업을 마치면 다시 사용자 모드가 된다.
이중모드의 보호
이중모드는 운영체제 기능 중, 하드웨어 보호 기능을 가진다. 크게 입출력 장치, 메모리, 그리고 cpu 보호를 하게 된다.
A. 하드웨어 보호
프린터, 하드디스크 등을 보호한다.
- in,out 등의 입출력 명령어는 특권 명령어이다.
- 예시 : 인터럽트 서비스 루틴에서 적절한 사용자인지 체크 한다.
B. 메모리 보호
- 다른 사용자의 메모리 또는 운영체제 메모리 접근을 제한한다.
- 사용자는 허용된 영역의 메모리만 접근 가능하다
- 즉, 문지기 역할을 하는 MMU(Memory Management Unit)이 존재한다
- MMU의 Range를 세팅하는 것은 특권 명령어이다.
C. CPU 보호
한 사용자가 실수 또는 고의로 cpu를 독점할 수도 있다.
while(True)
따라서 , timer 를 두어 일정 시간 경과 시, 타이머 인터럽트를 발생시킨다.
인터럽트가 발생하면, cpu의 ISR로 점프하여, cpu 프로세스 시간이 골고루 할당되었는지 체크한다.
아니라면, 강제로 프로그램을 전환한다.
'ComputerScience > OS' 카테고리의 다른 글
운영체제의 기능 (0) | 2020.08.26 |
---|---|
인터럽트 (0) | 2020.08.24 |
운영체제 개론 (0) | 2020.08.15 |