dual-mode operation

HOW

0. mode bit

CSR; Control and Status Register > PSW; Program Status Word

  • 현재 실행 코드의 privilege level을 나타내는 flag

1. mode bit to ZERO

mechanism

CPU가 event를 감지해서 (event-driven)

  1. user code 실행 중
  2. event 발생:
  3. CPU가 회로 레벨에서 수행.
    • PC; Program Counter → trap handler address로 변경 (atomically!!!)
    • 현재 context 저장 (register, PC 등)
    • mode bit → kernel(ZERO)로 변경

2. mode bit to ONE

mechanism
  1. OS가 작업 끝냄
  2. OS가 복귀 instruction 실행: 커널 코드 마지막에 Privileged Instruction을 배치함.
    • RISC-V: sret
    • x86: iret
  3. CPU가 수행:
    • 저장된 PC 복원
    • mode bit → user로 변경

F. mode bit write?

방향trigger실행 주체
user → kernelinterrupt / trapCPU (자동)
kernel → userreturn instructionCPU (instruction 실행 결과)