운영체제 - 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를 발생시킨다. )
'운영체제 > 기본' 카테고리의 다른 글
운영체제 - Interrupt Mechanism (0) | 2019.03.08 |
---|---|
운영체제 - 컴퓨터구조 기본 (0) | 2019.03.07 |
운영체제의 역할 (0) | 2019.03.07 |
운영체제의 발전(4) - 현대 운영체제 시스템의 등장 (0) | 2019.03.07 |
운영체제의 발전(3) - Interactive Time-sharing OS (0) | 2019.03.05 |