Dual Mode & H/W Protection

운영체제

2020. 1. 21. 17:18

1. Dual Model(이중 모드)

서버와 같은 컴퓨터는 여러 사람이 동시에 사용하는 환경임 때문에 한 사람의 고의/실수로 전체 시스템에 나쁜 영향을 주면 다른 사용자들도 피해를 입게됨. (e.g. STOP, HALT, RESET 등의 명령어 사용) 때문에 요즘의 운영체제들은 이중모드(관리자/사용자)를 지원하여 사용자가 위와 같은 명령어를 호출 할 수 없게 제한하고 있음.

 

[그림] 상태 레지스터

 

컴퓨터 구조에서 배운 상태 레지스터는 현재 컴퓨터의 여러가지 상태를 저장하는 레지스터인데, 여기에 권한 모드를 설정하는 비트를 보유하고 있음. 위 그림에서도 IOPL(IO Privilliged Level)이 입출력에 대한 권한 레벨을 의미하고 있음. 즉, 권한 상태는 상태 레지스터에 저장되는 하나의 플래그로 CPU가 명령어를 읽고 실행할 때, 이 플래그를 항상 확인함.

 

2. 관리자 모드 및 특권 명령

관리자모드(Supervisor Mode)는 System Mode, Monitor Mode, Priviliged Mode 등의 이름으로도 불린다. 관리자모드에서만 사용할 수 있는 명령어들의 집합을 특권명령(Priviliged Instructions)이라고 하는데 일반적으로 STOP, HALT, RESET과 같이 하드웨어를 멈추거나 재시작하는 명령어, SET_TIMER, SET_HW 처럼 시스템 혹은 하드웨어 설정을 변경하는 명령어들은 대부분 이 특권 명령에 해당한다.

 

[그림] 운영체제와 메인메모리

 

관리자모드와 사용자모드의 변환은 다음과 같이 수행된다. OS를 제외한 유저 프로세스(메인메모리에 적재된 프로그램)가 실행될 때는 관리자모드가 아닌 사용자모드로 실행된다. 유저 프로세스 실행 중에 만일 하드웨어에 대한 접근(HDD 파일 저장/로드 등)이 필요하면 인터럽트 서비스 루틴을 실행시켜 운영체제에게 그 역할을 대행시킨다. 이 때 플래그가 관리자로 바뀌면서 하드웨어에 대한 접근 등을 수행한다. 인터럽트 서비스 루틴이 종료되면 다시 유저 프로세스로 돌아오면서 플래그가 사용자로 변한다.

 

또한 운영체제에는 유저 프로세스가 올바른 명령어를 실행하는지 확인하는 기능도 포함되어있다. 만약 유저프로세스가 만약 특권 명령을 실행하려고 시도하면 운영체제가 이를 파악하고 해당 유저 프로세스를 종료시키는 서비스 루틴도 보유하고 있으며, 유저 프로세스가 인터럽트 서비스 루틴을 실행하여 운영체제에게 관련 작업에 대한 대행을 요청할 때, 해당 작업이 적절한지(e.g. 유저 A가 B의 파일을 강제로 읽으려고 하면 거부함) 확인하는 기능도 보유하고 있다.

 

3. 하드웨어 보호

위에서 말한 것 처럼 하드웨어는 모든 사용자가 사용하는 리소스이기 때문에 운영체제는 하드웨어가 잘 못 사용되거나 혼선 및 해킹을 당하는 등의 오작동으로부터 보호할 필요가 있다. 하드웨어는 크게 I/O 장치, Memory, CPU 등으로 나눌 수 있다. 이들을 보호하는 방법에 대해서 하나하나 알아본다.

 

1) I/O 장치 보호

프린터, HDD와 같은 입출력장치 혹은 보조기억장치는 많은 사용자가 함께 사용하는 자원이다. 예를 들어 사용자 A가 프린터를 사용하여 인쇄물을 출력하는 도중에 사용자 B가 인쇄를 시도하여 두 문서가 동시에 인쇄되는 등의 혼선이 발생하거나, 사용자 A의 영역에 저장된 문서를 사용자 B가 무단으로 읽고 쓰려는 시도를 해서는 안된다.

 

때문에 운영체제는 입출력 명령(in, out)을 특권명령(Priviliged Instruction)으로 설정하여 유저프로세스에서는 입출력 작업을 직접 수행할 수 없게 한다. 만일 유저프로세스 사용 중 파일을 읽고 쓰거나 인쇄물을 출력하여야 하는 등의 I/O 작업이 필요하면 유저프로세스는 인터럽트 서비스 루틴(int)를 실행하여 운영체제에게 관련 작업을 대행시킨다. 위에서 말한 것 처럼 이렇게 될 경우, 운영체제의 인터럽트 서비스 루틴이 실행되고 상태레지스터의 플래그 값이 관리자 모드로 바뀐다. I/O 작업을 마치고나서 다시 유저 프로세스로 돌아오면 플래그 값이 사용자 모드로 돌아오게 된다. 만약 유저 프로세스의 코드에 in, out 명령어가 포함되어 있으면 운영체제가 이를 파악하여 해당 프로그램을 강제로 종료(Priviliged Instruction Violation)시키게 되며, int 명령어를 호출하여 인터럽트 서비스 루틴을 실행할 때도 올바른 요청이 아니라면(e.g. 다른 사용자의 파일을 무단으로 지우는 등) 운영체제는 이러한 요청을 거부한다.

 

2) Memory 보호

어떤 유저 프로세스가 다른 사용자의 메모리 또는 운영체제 메모리 영역으로 접근할 수 있다. 만약 유저프로세스A가 운영체제의 인터럽트 서비스 루틴 코드를 바꿔버리거나 다른 유저프로세스에 악영향을 미치면 안된다. 우연히 또는 고의로, 유저 프로세스 혹은 OS가 해킹된 경우 이런 상황이 발생할 수 있는데, 때문에 운영체제는 이런 상황에 대비하여 메모리를 보호할 필요가 있다. 

 

때문에 운영체제는 MMU (Memory Management Unit)을 두어 다른 메모리 영역으로의 침범을 항상 감시한다. 메모리와 CPU 사이에는 Address 버스와 Data 버스가 존재한다. Address 버스로는 주소가 전달되고 Data 버스로는 값이 전달된다. 이 Address 버스에 MMU를 위치시킨다.

 

[그림] 메모리 보호를 위한 MMU

 

MMU는 두개의 레지스터 (Base, Limit)으로 구성되어있는데 Base에는 유저 프로세스 영역의 시작점 , Limit은 유저 프로세스 영역의 끝지점 주소가 저장된다. 두 레지스터에 저장된 값 사이로만 CPU로 주소가 전달되고 이 값을 넘어가면 운영체제는 이를 방지한다. 이러한 잘못된 요청이 발생하는 것을 Segment Violation이라고 하며, 이런 경우 운영체제는 해당 유저 프로세스를 강제로 종료시킨다. 또한 이 MMU의 설정값은 특권 명령으로 운영체제만이 이 MMU의 레지스터 값들을 설정 할 수 있다.

 

3) CPU 보호

만일 한 사용자가 CPU를 계속해서 독점하여 사용한다면 다른 사용자들은 프로세서를 사용할 수 없다. 때문에 운영체제는 이러한 상황도 대비해야한다. 때문에 CPU는 10ms같이 매우 짧은 시간마다 반복하여 타이머인터럽트를 걸어서 계속 다른 유저 프로세스로 강제 전환하여 모든 사용자가 컴퓨터를 사용할 수 있도록 한다. 이는 앞서 다루었던 시분할 시스템에서 언급했던 내용과 동일하다.

 

4. Reference

 

운영체제

운영체제의 정의 및 역할 등에 대해 알아보고, 운영체제의 주요 요소들, 즉 프로세스 관리, 주기억장치 관리, 파일 시스템 등에 대해 공부한다.

www.kocw.net

 

'운영체제' 카테고리의 다른 글

CPU Scheduling (1) - FCFS (First Come, First Served)  (0) 2020.02.04
CPU Scheduling Criteria & Kinds  (0) 2020.02.04
Process Management  (0) 2020.01.29
O/S Service  (0) 2020.01.21
High Level OS & Interrupt based OS  (0) 2020.01.08
History of OS  (0) 2020.01.08
운영체제란 무엇인가?  (0) 2020.01.03