page7
베이스 레지스터는 프로세스의 시작 주소를, 리밋 레지스터는 프로세스 크기를 저장하여 메모리 접근
을 제한합니다
. MMU가 모든 메모리 접근을 검사하여 보호 위반 시 트랩을 발생시킵니다
.
프로그램 실행 중 필요한 루틴만 메모리에 로드하여 메모리 공간을 효율적으로 활용합니다
. 사용되
지 않는 루틴은 로드되지 않아 큰 프로그램에 적합합니다
.
실행 시점에 라이브러리와 연결하여 실행 파일 크기를 줄이고 공유 라이브러리를 사용할 수 있습니다
. 스텁 메커니즘을 통해 실제 라이브러리 루틴 위치를 찾습니다
.
주 메모리는 운영체제 영역과 사용자 프로세스 영역으로 분할됩니다
. 가변 분할 방식에서는 홀(빈
공간)과 할당된 영역이 동적으로 변화합니다
.
4.2 메모리 보호
베이스-리밋 레지스터
[4]
[4]
4.3 주소 바인딩
바인딩 시점
컴파일 시간: 메모리 위치가 컴파일 시점에 확정
[4]
로드 시간: 프로그램이 메모리에 로드될 때 주소 결정
[4]
실행 시간: 실행 중 동적으로 주소 변환 (MMU 필요)
[4]
논리 주소와 물리 주소
논리 주소: 프로그램이 생성하는 가상 주소
[4]
물리 주소: 실제 메모리 하드웨어의 주소
[4]
MMU: 논리 주소를 물리 주소로 변환하는 하드웨어
[4]
4.4 동적 로딩과 연결
동적 로딩
[4]
[4]
동적 연결
[4]
[4]
4.5 연속 메모리 할당
메모리 분할
[4]
[4]
동적 저장소 할당 알고리즘
First Fit: 첫 번째 적합한 홀에 할당 (빠름)
[4]
Best Fit: 가장 적합한 홀에 할당 (공간 효율적)
[4]
Worst Fit: 가장 큰 홀에 할당 (비효율적)
[4]