본문 바로가기

운영체제/기본

운영체제 - Hardware Protection

운영체제 - Hardware Protection


Multi-programming OS에서도 예를 들었듯이, Job-A가 Job-B에게 할당된 메모리에 접근하거나 운영체제에게 할당된 메모리에 접근해서는 안 된다. 이것을 위해 Privileged Instruction이라는 개념을 도입했다.

* Privileged Instruction : 운영체제만 수행할 수 있는 Instruction.


# Dual Mode operation

- 컴퓨터 시스템의 모드를 2가지로 나누어 권한레벨을 나눈다. 일반적인 프로그램이 수행될 때는 User mode로 수행되며 보다 높은 접근권한을 요구할 때는 Kernel Mode로 수행된다

1) Kernel Mode

- privileged instruction을 수행할 수 있는 모드

- 모든 memory영역에 접근할 수 있다.

2) User Mode

- privileged instruction을 수행할 수 없는 모드


Q. privileged instruction은 어떻게 구현될까?

- 컴퓨터 시스템에서 instruction을 fetch-decode-execute할 때 decode과정에서 해당 instruction을 해석하고 그것이 privileged instruction이면 micro-processor의 process status register의 값을 확인하고 허용/거절을 결정한다. 만약, 거절이면 S/W interrupt(=trap)을 발생시킨다.

* process status register: mode를 나타내는 값을 저장한 register.



Q. mode의 변경은 어떻게 이루어질까?

- Kernel mode에서는 모든 권한이 허용되므로 직접 process status register에 값을 변경하여 user mode로 변경되는 것이 허용된다. 그러나, User mode에서는 process status register 값을 쓸 수 있는 권한이 없기 때문에 불가능하다. => H/W의 도움을 받는다


User mode에서 I/O operation과 같은 privileged instruction을 수행할 필요가 있는 경우에는 S/W interrupt(=system call)을 호출한다.

이 interrupt를 통해, mode bit를 바꾸어 kernel mode로 진입한 뒤 요청된 interrupt에 대한 ISR을 수행한 뒤 그 결과를 반환하며 다시 User mode로 돌아온다.


# I/O Protection

- I/O device는 컴퓨터 시스템에서 "자원"이므로 운영체제가 각 프로세스들이 자원을 독점하는 것을 막으며 중재자 역할을 수행해야 한다. 즉, port register(=I/O device의 register)에 접근하는 모든 instruction을 privileged instruction화 했다.


# Memory Protection

- 특정 Job이 다른 Job 혹은 운영체제에 할당된 메모리 공간을 침범하면 컴퓨터 시스템이 원활한 수행을 위해 MMU(memory protection unit) + Base register, Bound register을 도입하여 메모리 접근을 중재한다.


# CPU Protection

- CPU는 컴퓨터 시스템에서 "자원"이므로 운영체제가 각 프로세스들이 자원을 독점하는 것을 막으며 중재자 역할을 수행해야 한다. 이를 위해 Timer를 도입하여 하나의 프로세스가 일정 한계치 이상 CPU를 독점할 수 없게 했다. ( 일정 시간이 경과하면 Timer interrupt를 발생시킨다. )