100win10 2019. 9. 24. 23:40

 

user1 프로그램이 돌면서 user2 프로그램을 혹은 user3를 침범한다던지 os의 인터럽트 서비스 루틴에 침범 한다던지

 

하는 일은 막아야 한다. 즉 user1 프로그램은 자신의 영역의 내용만을 cpu가 읽도록 해야 한다.

 

 

 

알다시피 cpu에서 메모리로 주소를 읽기 위해 Address Bus가 간다. Address bus : 몇번지를 읽겠다

 

몇번지에 해당 내용이 Data Bus를 통해 cpu로 오게 된다. 

 

그렇다면 address bus 를 잘라버리면 될까?

address bus를 잘라버린다면 다른 영역에 침범할 수 없겠지만 자신의 영역에도 들어가지 못한다.

 

그렇다면 어떻게 해야 할까?

 

검문소를 만들고 user1을 가려고 주소를 낼적에 그 주소가 user1 사이에있는 주소라면 통과 시켜주고 그 외에는 막아주게 된다면 가능할 것이다.

 

 

이 검문소는 실제로 base, limit 레지스터를 두고 user1의 주소번지가 아니라면 cpu에 인터럽트 신호를

 

보내고 cpu는 os 인터럽트 서비스 루틴에 보낸다. os는 이를 인지하고 user1 program을 강제 종료하게 되는 방식이

다.

이 검문소를 MMU 라고 한다. ( Memory Management Unit )

 

base ,limit 레지스터는 os가 설정해준다.