User mode, Kernel mode
CPU는 User mode, Kernel mode 2가지 중 한 모드에서 동작한다. 어떤 모드로 동작할 것인지는 CPU내의 mode register에서 결정한다.
응용 프로그램은 user mode에서, 커널 코드는 kernel mode에서 동작한다.
User mode
User mode에서는 User Space만 접근할 수 있다. 만약, Kernel Space에 접근하게 되면 오류를 발생시킨다. User mode에서는 어떤 하드웨어에도 접근할 수 없다. 또 다른 응용 프로그램에게 할당된 메모리에도 접근할 수 없다.
특권 명령(privileged instruction)도 실행할 수 없다.
Kernel mode
kernel mode 에서는 모든 메모리 공간 접근가능하며, 특권 명령을 실행할 수 있다. 커널 코드는 커널 모드일 때 실행되기 때문에 모든 명령 가능하다.
mode 전환
user mode에서 kernel mode로 전환이 일어나는 경우는 2가지다.
- system call
- interrupt
항상 커널 접근을 위해서는 system call과, interrtupt 2가지 방법만 있다는 것을 알아두자. 왜냐면 시스템 보안, 안전성을 위해서(이미 실컷 얘기 했음)
system call시 CPU 기계 명령이 실행되고, 이것에 의해 user mode에서 kernel mode로 바뀐다. system call이 끝나면 다시 기계 명령이 실행되고 user mode로 전환된다.
interrupt시 CPU는 자동으로 user mode에서 kernel mode로 바뀌고 ISR()을 실행한다. ISR()이 커널 공간에 있기 때문임. ISR()끝나면 다시 user mode로 전환 하던일 마저 한다.
특권 명령
특권 명령은 kernel mode에서만 사용할 수 있다. CPU제조 업체에 의해 설계된 기계 명령
- I/O 명령
- Halt 명령
- interrupt flag
- 타이머
- context switching
그렇게 중요하진 않은듯..
user mode와 kernel mode는 CPU의해 구현된다. 커널에 의해 구현되는 것이 아님.
'컴퓨터 공학(Computer Science) > OS' 카테고리의 다른 글
OS와 인터럽트 (0) | 2024.03.30 |
---|---|
Kernel의 실체 (0) | 2024.03.26 |
커널과 시스템 호출 (0) | 2024.03.25 |
배치(batch) OS, 다중 프로그래밍, 시분할 시스템 (0) | 2024.03.14 |