제 3 장 기억장치 관리
3.1 개 요
• 기억장치 관리의 발전
단일 사용자
전용 시스템 실기억장치
다중프로그래밍 가상 메모리
다중프로그래밍
페이징순수 순수 세그먼테이션
페이징 세그먼테이션 다중프로그래밍고정분할 가변분할
다중프로그래밍 절대 재배치
가능
실(real) 기억장치 가상(virtual) 메모리 실(real) 기억장치
3.1.1 주소 바인딩 (Address binding)
• 주소 바인딩 (address binding) : 논리적 주소 (logical address) 를 실행되기 위해서 는 물리적 주소로 사상하는 것
• 주소 바인딩 종류
컴파일 시간 (compile time) 바인딩
적재 시간 (load time) 바인딩
실행 시간 (execution time) 바인딩
3.1.2 논리적 주소와 물리적 주소
• 중앙처리장치가 생성하는 주소를 논리적 주소라 하며 , 기억장치가 취급하는 주소를 물리적 주소라 한다 .
• 기억 장치 관리기 (MMU : Memory Management Unit) : 재배치 (relocation) 레지스 터는 세그먼트의 시작주소를 가지고 있으며 , 논리적 주소가 들어올 때마다 모든 주소 에 재배치 레지스터가 가지고 있는 값을 더해서 물리적 주소를 만든다 .
3.2 기억장치의 계층 구조 및 관리 기법
• 기억장치의 계층적 구조
레벨 -1 (L1) 캐시는 마이크로프로세서와 같은 칩 내에 있다 . 레벨 -2 캐시는 보 통 별도로 분리된 SRAM 칩이며 , 메인 메모리는 보통 DRAM 칩을 사용한다 . SRAM 은 DRAM 과는 달리 전자기적으로 재생시킬 필요가 없기 때문에 값이 더 비 싸다 .
• 기억장치 관리 기법
인출 (fetch) 기법
요구 인출 (demand fetch) 기법
예상 인출 (anticipatory fetch) 기법
배치 (placement) 기법
교체 (replacement) 기법
3.3 단일 사용자 연속 기억장치 할당
3.3.1 단일 사용자 연속 기억장치 할당
• 오버레이 (overlay) 기법에 의해서 주기억장치보다 더 큰 프로그램의 실행이 가능하다 .
운영체제 0
a
b
c
사용되지 않음 프로그램사용자
3.3.2 시스템 보호
• 운영체제가 사용자로부터 보호
운영체제
사용자 프로그램 0
a
b
c
사용되지 않음 경계 레지스터
사용자 프로그램이 계산한 모든 주소는 반드시
a보다 큰가를 확인하기 위해 검사된다.
3.4 고정분할 기억장치 할당
• 고정분할 기억장치 할당 (fixed partition memory allocation) : 주기억장치 를 일정 수의 고정된 크기들로 분할하여 실행 중인 여러 프로세스에게 할당하
• 분할 (partition): 단일 작업이 적재될 수 있는 일정한 크기의 기억장치 영역 . 는 방법
• 다중 프로그래밍의 정도는 분할의 수에 의해 결정된다 . 3.4.3 시스템 보호
• 한 분할에 있는 명령어 코드와 데이터를 다른 분할에 있는 프로그램으로부터 보호되어 야 한다 .
0 a
d
운영체제 분할 1 분할 2
분할 n e
하한
c b 상한
3.4.4 분할 공간의 크기와 단편화
• 기억장치의 단편화 현상
작업 2 운영체제 작업 1 : 37 K
작업 2 : 20 K
작업 3 : 25 K 작업 4 : 13 K
(a) 초기상태 (b) 작업 1, 2, 3이 시작된 상태 ( 10 K )분할 1
( 20 K )분할 2 ( 30 K )분할 3
( 40 K )분할 4
운영체제
작업 1 분할 1
분할 2 분할 3
분할 4
작업 3 비사용( 10 K )
비사용( 5 K )
비사용( 3 K )
3.5 가변분할 기억장치 할당
• 작업들이 필요로 하는 만큼의 기억 공간을 그들에게 할당 3.5.1 기억 공간의 효율화
• 가변분할 다중 프로그래밍에서의 초기의 분할 할당
사용자 F는 30k를 필요로 한다 사용자 E는 18k를 필요로 한다 사용자 D는 15k를 필요로 한다 사용자 C는 30k를 필요로 한다 사용자 B는 20k를 필요로 한다 사용자 A는 25k를 필요로 한다
운영체제
비어 있음
운영체제 A 25K B 20K
D 15K C 30K
비어 있음 운영체제
A 25K B 20K
비어 있음 운영체제
A 25K
비어 있음 A 25K
B 20K
C 30K
• 가변분할 다중 프로그래밍에서의 단편화 현상
• 공백의 합병 (coalescing holes)
운영체제 다른 사용자
1K 공백 7K 사용자 A
다른 사용자
운영체제 다른 사용자
1K 공백 7K 공백
다른 사용자
운영체제 다른 사용자
8K 공백
다른 사용자 사용자 A가
끝나고 그 기억장소가 공백이 된다.
운영체제가 인접한 공백 을 통합하여 하나의 더 큰 공백으로 만든다.
• 기억장소의 집약 (compaction)
3.5.2 기억장치 배치 기법
• 최초 적합 , 최적 적합 , 최악 적합 기억장치 배치 기법
3.6 기억장치 교체 (swapping)
• 다중 프로그래밍 시스템에서의 기억장치 교체
사용자 C 사용자 B
사용자 A
보조기억장치 내의 사용자 영역 운영체제
교체 영역
a
c
a a
d e
swap out swap in 주기억장치