공부하는 스누피
[운영체제] 사용자 모드, 커널 모드 본문
Dual-Mode
OS와 사용자는 컴퓨터 시스템의 자원을 공유하기 때문에 시스템 안전성을 위해 특정 실행 모드에 맞는 기능만 수행할 수 있도록 한다. 운영체제 코드를 실행하는 것과 사용자 코드를 실행하는 것을 구분해서 두 가지 모드로 만들었고, mode bit가 현재 모드를 나타낸다. 0이면 운영체제 코드를 실행하는 커널 모드(kernel mode), 1이면 사용자 응용 프로그램을 실행하는 사용자 모드(user mode)이다. 용도에 따라 2개 이상의 모드를 사용할 수도 있다. 이를 Multimode operation이라 부른다.
사용자 모드
사용자를 위해 실행되는 작업은 사용자 모드이다. 이 모드에서 작업을 수행하던 중에 운영체제 기능을 써야 할 때가 오면, 시스템 콜을 통해 사용자 모드에서 커널 모드로 전환한다. 시스템 콜이 종료되면 다시 사용자 모드로 복귀한다.
커널 모드
커널 모드는 시스템 부트 시 처음으로 시작되며, 운영체제 코드를 실행하는 작업이 해당된다. 운영체제 시스템에 악영향을 끼칠 수 있는 명령을 특권 명령(privileged instruction)이라고 하는데, 특권 명령은 커널 모드에서만 수행되기 때문에 사용자 프로그램에서는 잘못된 명령으로 운영체제에 악영향을 끼칠 수 없다. 모드를 바꾸는 명령어는 특권 명령이라서 모드를 바꾸는 작업은 모두 커널 모드에서 수행된다.
ex) I/O 제어, 타이머 관리, 인터럽트 관리
명령어 실행 수명주기
1. 운영체제 부팅 : 커널 모드
2. 사용자 응용 프로그램 수행 : 사용자 모드
3. 시스템 콜(인터럽트)로 운영체제로 제어 권한 이전 : 커널 모드
4. 시스템 콜 작업 수행 완료 : 사용자 모드
타이머
지정된 시간 후 컴퓨터를 인터럽트하여 운영체제가 CPU에 대한 제어를 유지할 수 있게 한다.
사용자 프로그램이 무한 루프에 빠지거나, 시스템 콜에 실패할 경우 타이머에 지정된 시간이 지나버리게 되고, 타이머는 인터럽트를 발생시킨다. 운영체제는 이 인터럽트를 오류로 인식하고 알맞은 작업을 수행한다.
(참고)
Operating System Concepts 10/E. Abraham S. 박민규 옮김. WILEY
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 교착 상태 Deadlock (0) | 2021.04.12 |
---|---|
[운영체제] 가상 메모리 (0) | 2020.11.23 |
[운영체제] CPU 스케줄링 (0) | 2020.11.17 |
[운영체제] I/O모델: 동기, 비동기, Blocking, Non-Blocking (0) | 2020.11.11 |
[운영체제] 프로세스(Process) 정리 (0) | 2020.07.15 |