CPU instruction 중 특별권한(kernel mode) 여야만 사용 가능한 instruction
e.g. OS만 할 수 있는
directly access I/O devices (disks, network cards)
multiple memory state management
e.g. page table, pointers, TLB, loads, ...
manipulate special 'mode bits'
: interrupt priority level
halt instruction
→ 등등 시스템 관리에 사용할 수 있는 명령등
processor가 protected instruction 실행시킬지 말지 어떻게 알까?
→ kernel mode & user mode 지원해야
INTEL의 VAX, X86은 4개의 protection mode, Linux는 그 중 2개만
해당 mode는 PWS 레지스터의 특정 비트 조작함으로바꿀 수 있음
→ 프로그램이 인위적으로 발생
- interrupt : mode change (user → kernel)
system call을 이용해 mode transition
→ 기본적인 모양은 function call과 유사
(software interrupt, kernel handler로) 예외 발생시킴
: kernel mode로 바뀌고 os의 code인 특정 주소지로
←→ function call : 외부에서
어떤 system call 부를지의 parameter 전달
수행하던 CPU의 상태 저장 (register, mode, bits, ....)
∵ OS가 동작하면서 register 사용
OS가 caller의 parameter
user mode로 return할 방법 있어야
: 저장했던 상태 그대로 복원 → process의 context
*****
→ PSW 속 bit가 mode 결정
: instruction set의 모든 instruction 실행 가능, HW의 모든 feature 사용 가능
I/O 포함 모든 주소영역 접근 가능
부팅시에는 처음에 kernel mode
→ user processor 만들고 user mode로 switch
→ OS는 kernel mode에서 동작
: 명령어의 일부와 HW feature의 일부만 사용 가능
주로 I/O나 memory protection 포함 instruction은 허가x
→ 사용하려면?
: user program이 kernel mode로 trap하는 system call 해야
user program이 kernel mode로 trap하는 system call 하는 과정
Interrupt : (외부에 의해) 언제든 발생 가능 → 비동기화
Trap : program에서 control 가능 → 동기화
→ user mode에서 수행
(참고) function의 이름
: function pointer → function에서의 starting 주소
덕분에 선일운체 준비 잘 할 것 같습니다. 감사합니다!