운영체제는 Interrupt-driven 동작을 수행
I/O 요청 -> hardware interrupt
Software error -> exception, trap (internal interrupt)
OS service 요청 -> system call (software interrupt)
많은 작업들이 컴퓨터 자원을 공유하여 실행되며 한 프로그램의 bug에 의해서 영향 받을 수 있음
(EX)무한루프, 다른 프로그램(다른 작업 또는 OS)의 메모리를 수정
따라서 자원공유는 Protection 기능을 필요로 함
프로그램이 잘못 동작하여 다른 프로그램이나 OS의 동작에 영향을 주는 것을 방지해야 함
Dual-Mode (Multi-mode) Operation
Dual mode operation
대부분의 CPU는 OS와 사용자 프로그램의 실행을 구분하기 위하여 두 개 이상의 동작 모드를 제공함
1. User mode
2. Kernel mode (Supervisor, monitor, system, privileged mode)
CPU mode bit가 현재의 동작 모드를 표시함 (EX) Kernel mode (0), User mode (1)
Multimode operation
CPU 동작 모드 개념은 더 많은 수의 mode로 확장 가능 (intel 386/Pentium : 4-level privilege)
가상화를 지원하는 CPU는 가상화를 위한 별도의 mode를 제공함 (AMD processor : host mode, guest mode)
특권 명령어 (Privileged Instruction)
Kernel mode에서만 실행가능한 instruction
User mode에서 실행되면 exception 발생 -> privilege violation
CPU는 시스템 동작에 영향을 주는 명령어를 특권명령어로 설계함
EX) I/O Instruction, Timer, interrupt관리, 메모리 관리장치(MMU)관리, 시스템 제어 (halt, interrupt 활성화 등)
User mode | Kernel mode |
User 프로그램 실행 | OS 실행 |
특권 명령어 실행 불가 | 특권 명령어 실행 가능 |
일부 메모리 공간 접근 불가 | 모든 메모리 공간 접근 가능 |
CPU 동작모드 전환
1. Power on : kernel mode에서 시작
2. OS가 적재되어 실행되면, 사용자 프로세스를 user mode에서 시작하게 함
3. Interrupt가 발생하면 Kernel mode로 전환됨
4. Interrupt로부터 return되면 원래의 동작모드로 전환됨
Dual mode를 제공하지 않는 CPU는 보호기능이 제공되지 않음
- 운영체제 동작이 사용자 프로그램에 의해서 영향 받을 수 있음
- EX) Intel 8088과 MS-DOS
시스템 호출 수행 과정
1. System call 명령어 호출 : INT, trap, syscall 등
2. OS의 해당 system call 서비스 루틴이 kernel mode에서 실행
3. 서비스 루틴은 parameter를 유효성을 검증하고, 서비스를 수행
4. 서비스 수행 종료 후 return from interrupt 명령어 실행 -> system call 다음의 명령어로 실행 제어 전달이 이루어짐
※ 파라미터 유효성 검사를 하는 이유 : 잘못되면 프로그램 뿐만 아니라 os전체에 영향을 주기 때문(커널모드여서)
Timer와 CPU Protection
CPU Protection
- Timer 사용 : 무한 루프 방지, 특정 process의 CPU 독점 방지
Timer interrupt
- Timer는 지정된 기간 후에 interrupt
- OS가 timer(counter)를 설정함
- Timer가 매 클럭마다 감소하여, 0이 될 때에 interrupt가 발생
Timer 용도
- Timer interrupt를 사용한 time sharing 구현
- 시계 : 현재 시간 계산
1.10 커널 자료구조 (0) | 2020.04.04 |
---|---|
1.6 ~ 1.9 자원 관리 (Process, Memory, Storage) (0) | 2020.04.04 |
1.4 운영체제의 구조 (0) | 2020.04.04 |
1.3 컴퓨터 시스템 구조 (0) | 2020.04.04 |
1.2 컴퓨터 시스템의 구성 (0) | 2020.04.04 |
댓글 영역