운영체제를 공부하기 위해 운영체제 아주 쉬운 세 가지 이야기 라는 책을 읽고 공부한 내용을 정리합니다.
잘못되거나 부족한 부분이 있으면 언제든 댓글로 가르침 부탁드립니다.
하드웨어는 명령어 탑재, 저장 등의 가상 주소를 정보가 실제 존재하는 물리 주소로 변환한다. 이때 베이스 바운드 라는 아이디어를 이용하여, 프로세스 모르게 메모리를 다른 위치에 배치하는 동적 재배치 가 가능하게 된다.
베이스와 바운드는 CPU에 존재하는 레지스터로서, 주소 변환에 도움을 주는 MMU(Memory Management Unit)으로 불리기도 한다. 프로그램 시작 시, 운영체제가 프로그램이 탑재될 물리 메모리 위치를 결정하고 베이스 레지스터를 그 주소로 지정하고 물리 주소는 아래와 같은 방법으로 변환된다.
physical address = virtual address + base
바운드는 가상 주소가 적합한 범위 내에 있는지 확인하기 위해 사용된다.
베이스와 바운드는 우리가 원하는 위치에 주소 공간을 배채할 수 있게 하고, 배치와 동시에 프로세스가 오직 자신의 주소 공간에만 접근한다는 것을 보장한다.
동적 재배치의 단점 : 내부 단편화
프로세스에게 할당된 주소공간이 모두 사용되지 않으면 내부적으로 메모리가 낭비된다. 이때 내부 단편화 문제가 발생한다. 내부 단편화란, 하나의 프로세스가 할당된 메모리 영역 내부의 빈공간 때문에 영역이 단편화되어 낭비되는 문제를 뜻한다. 이를 해결하기 위해서는 base-and-bound를 논리 단위로 나눠 저장하는 세그멘테이션 기법이 필요하다. (다음장)