@ 그렇다며 Micro Architecture 안에서 Privileged Instruction은 어떻게 구현이 되는 것일까요?
@ 우선을 Privileged Instruction을 수행하는 시나리오를 먼저 생각해보도록 하겠습니다.
// 기존에 Instruction을 수행하게 되면 우선 Fetch해서 가져오게 됩니다
// 그 다음에 이를 decode를 하는 과정을 수행해야 하겠지요.
> 그 과정에서 Mode bit를 체크하게 됩니다.
@ 위의 상황을 진행할 때 만약 Mode bit가 1이라면 어떻게 하면 될까요?
// User Mode일 때에는 Privileged Instruction을 실행하면 안 됩니다.
> 이런 상황일 때에는 누군가가 Protection을 침범하고 있다고 판단할 수 있습니다.
// S/W Interrupt를 발생시킵니다.
> 이렇게 trap을 발생시켜서 프로그램의 수행을 Abort 시킵니다.
@ 이제 우리는 왜 컴퓨터가 Dual Mode로 동작해야 하는 지를 알게 되었습니다.
// 컴퓨터 시스템은 기본적으로 User Program은 전혀 신뢰하지 않습니다. 느낌이 오시나요?
> 프로그램을 짜면 반드시 버그가 생기기 마련입니다.
> 이러한 버그가 컴퓨터 시스템에 악영향을 미칠 수 있게 됩니다.
.. 그래서 User Program은 굉장히 통제된 환경에서만 수행을 시키게 됩니다.
// 그에 반해서 OS은 무조건 신뢰합니다.
@ 그렇다면 OS이 커널 모드에서 수행될 때에는 뭔가 특수한 권한을 제공해 줄 필요가 있습니다.
// 첫번째는 다 알다시피, Privileged Instruction을 수행시킬 권한입니다.
// 두번째는 메모리의 모든 영역에 엑세스할 수 있는 권한입니다.