Operating System : 운영체제

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

(ii) Mode Change

@ 그렇다면 Mode는 누가 어떻게 바꿔주는 것일까요?

    // 아무나 Mode를 바꿀 수 있게 되면 그 Protection의 의미를 상실하게 될 것입니다.

 

@ 결론은 Mode Change를 커널모드에서 돌고있는 OS가 관장하게 만들면 됩니다.

    // OS는 일단 무한신뢰의 대상입니다.

 

@ 그럼 User Mode에서 Kernel Mode로는 어떻게 넘어가는 것일까요?

    // 이 상황에서는 어떤 User Program이 큰 권한을 받게 되는 모순된 상황이 발생하게 됩니다.

        > 이런 모순된 상황으로 인해서 S/W적인 방법으로는 이 상황을 해소하는 것이 불가능합니다.

    // 그렇기 때문에 이런 상황에서는 H/W적 매커니즘이 필요하게 됩니다.

        > 그것이 바로 Interrupt Mechanism이 되겠습니다. 

            .. Kernel Privilege가 필요할 때는 위의 Interrupt instruction를 수행시키는 것입니다.

        > 이렇게 하면 Mode bit가 1 to 0 으로 수행됩니다.

        > 이것이 Interrupt instruction에 정의된 하나의 기능입니다.

 

@ S/W Interrupt지만 Interrupt가 실행되면 'Interrupt handler'가 사용되게 됩니다.

    // 그 handler가 User의 권한을 바꾸어주는 잘 정의된 역할을 수행하게 됩니다. 

    // 이런식으로 User Mode에서 Kernel Mode로 넘어갈 때도 통제된 환경에서 관리 되게 됩니다.

 

@ 이것이 Dual Mode System의 가장 기본적인 내용들이며

    // 여기에서 H/W System의 Protection이 다 출발합니다.

 

PS. Mode change를 관할하는 것은 Interrupt Service routine입니다.

    // 하지만 실제로는 그렇게 원시적인(Primitive) 인터페이스를 제공하지는 않습니다.

        > Interrupt는 굉장히 낮은 수준의 Programming Interface입니다.

            .. 특정 Instruction을 수행을 시켜야하기 때문이죠.

    // 하지만 저희가 프로그램을 작성할 때는 굉장히 높은 단계의 Abstraction을 가지고 작업합니다.

        > 함수 등

    // 그래서 OS는 System Call이라고 하는 것을 제공하고 있습니다.

댓글

댓글 본문
버전 관리
박천명
현재 버전
선택 버전
graphittie 자세히 보기