하드웨어에서 메모리 관리

이찬영·2021년 9월 1일
0

OS

목록 보기
24/35

하드웨어에서 메모리 관리

시스템이 올바르게 동작하기 위해서는 사용자 프로그램으로부터 운영체제 영역을 보호 해야한다. (운영체제도 현재 메모리에 상주해 있다는걸 잊지말자) 그리고 사용자 프로그램끼리도 메모리를 보호해야한다. 이러한 문제는 하드웨어가 해결해야 성능면에서 이점을 가질 수 있다. (소프트웨어가 관여하게 되면 하드웨어 동작 이후 처리해야함으로 당연히 성능면에서 좋지 않을것) 이러한 문제를 해결하는 하나의 방법을 설명하겠다.

각 프로세스는 독립된 메모리 공간을 가지며 이 공간은 보장되어야한다. 그렇기 때문에 우리는 두개의 레지스터를 이용하여 보호를 한다. 이것을 base registerlimit register라고 부른다. base register는 내 프로세스의 시작 주소를 저장한다. limit register는 주어진 영역의 크기를 저장한다. 간단하게 시작점이 100이고 주어진 영역의 크기가 123이라면 영역의 범위는 100~222까지가 될 것이다.

이러한 메모리 공간의 보호는 CPU 하드웨어가 사용자 모드에서 생성된 모든 주소와 레지스터를 비교하여 동작한다. 만약 사용자 모드에서 수행하는 프로그램이 운영체제 영역을 침범하면 오류로 간주하고 trap을 발생시킨다.

base registerlimit register는 운영체제의 특권 명령으로만 load된다. 특권 명령은 커널 모드에서만 수행되고 운영체제만 레지스터 값을 변경할 수 있도록 하여 사용자 프로그램이 레지스터를 내용을 변경하는것을 막는다. 그러나 커널 모드는 운영체제 영역 그리고 사용자 영역 모두 접근할 수 있다.

0개의 댓글