Download - 5 장 . 메모리 관리
1
단국대학교 최종무
IT 특론 1
5 장 . 메모리 관리
2
단국대학교 최종무
이 장의 강의 목표
메모리 관리 정책을 이해한다 .
메모리 관리 기법의 발전 과정을 이해한다 .
가상 메모리를 이해한다 .
페이지 / 세그먼테이션 방법을 이해한다 .
page fault 처리 방법을 이해한다 .
3
단국대학교 최종무
지금까지 강의 내용을 살펴보면 (1/2)
edit test.c
OS
CPUDisk
int sum = 0;
int main(){ int i;
for (i=0; i<10;i++) sum += i;
printf(“%d”, sum);}
컴파일
test.exe.data .align 4 .type sum,@object .size sum,4.text.global main .type main, @funcmain: pushl %ebp … movl -4(%ebp), %eax addl %eax, sum …
inode
수행
prev task
prev task
new task
CPU
문맥으로 관리
test.exe 가 수행 되려면 디스크에서 메모리로 이동되어야 함 메모리 관리 필요 ( 언제 , 어디에 올릴 것인가 ?)
Memory
CPU
CPU
CPU
test.exe 가 더 이상 passive 가 아닌 active 한객체로 변화
4
단국대학교 최종무
지금까지 강의 내용을 살펴보면 (2/2)
용어 정리 (Terminology) compile, assemble, linking, loading 의 차이는 ?
5
단국대학교 최종무
메모리 계층 구조
메모리 계층 구조
Caching is more and more important (how to keep consistency?)
register
CPU cache
Main Memory
Secondary Storage
Server (or INTERNET)
• larger capacity• lower speed• lower cost
6
단국대학교 최종무
메모리 관리 정책
3 가지 메모리 관리 정책 (three strategies) 반입 정책 (Fetch strategy)
언제 프로그램 ( 페이지 ) 를 메모리로 가져올 것인가 ?
요구 반입 정책 (demand fetch) : reactive
선반입 정책 (prefetch) : proactive, intelligent agent in Web 등에서 사용 배치 정책 (Placement strategy)
프로그램 ( 페이지 ) 를 메모리 어디에 위치 시킬 것인가 ?
최초 적합 (first fit), 최적 적합 (best fit), 최악 적합 (worst fit)
교체 정책 (Replacement strategy) 메모리 공간이 부족할 때 어떤 프로그램 ( 페이지 ) 를 메모리에서 교체시킬
것인가 ?
LRU, LFU, MRU, Working Set, ...
7
단국대학교 최종무
메모리 관리 기법의 발전 (1/8)
단일 사용자 전용 시스템 (single user system)
고정 분할 다중 프로그래밍 (fixed partition multiprogramming system) 절대 번역 어셈블러 (absolute assembler)
재배치 가능 어셈블러 (relocating assembler)
가변 분할 다중 프로그래밍 (variable partition multiprogramming system)
가상 메모리 (virtual memory system) 페이징 (paging)
세그먼트 (segment, region, vm_area_struct)
페이징과 세그먼트 혼용 (paging/segment)
8
단국대학교 최종무
메모리 관리 기법의 발전 (2/8)
단일 사용자 전용 시스템 (single programming system)
태스크가 메모리보다 클 경우에는 ? overlay 이용
Kernel
task
protection register
main memory
9
단국대학교 최종무
메모리 관리 기법의 발전 (3/8)
Multiprogramming system 고정 분할 다중 프로그래밍 : 절대 번역
Kernel
task 1
task 2
task 3
task 4
internal fragmentation 발생
10
단국대학교 최종무
메모리 관리 기법의 발전 (4/8)
Multiprogramming system 고정 분할 다중 프로그래밍 : 재배치 (relocation) 가능
Kernel
task 1 task 2 task 3 task 4
11
단국대학교 최종무
메모리 관리 기법의 발전 (5/8)
Multiprogramming system 가변 분할 다중 프로그래밍
Kernel
task 1
no free lunch: coalescing, compaction 필요
task 1
task 2
task 2
task 3task 3 task 4
task 4
고정 분할에 비해 효과적으로 메모리 사용
12
단국대학교 최종무
메모리 관리 기법의 발전 (6/8)
Multiprogramming system 가변 분할 다중 프로그래밍
시나리오• 전체 메모리는 500KB, 커널이 60KB 사용• task 1 생성 . 50KB 할당 .
• task 2 생성 . 40KB 할당 .
• task 3 생성 . 25KB 할당 .
• task 4 생성 . 30KB 할당 .
• task 5 생성 . 50KB 할당 .
• task 6 생성 . 15KB 할당 .
• task 7 생성 . 30KB 할당 .
• task 2 종료• task 4 종료 .
• task 6 종료Kernel
task 4
task 3
task 1
task 2
task 6
task 5
task 7
이때 task 8 이 생성되면 어디에 ? ( 크기는 25KB 로 가정 )
first fit, best fit, worst fit 방법 존재
40KB
30KB
15KB
200KB
13
단국대학교 최종무
메모리 관리 기법의 발전 (7/8)
Multiprogramming system 가변 분할 다중 프로그래밍
이전 슬라이드 시나리오에서 task 8 을 first fit 으로 할당하였다고 가정하면 다음 그림과 같이 됨 이때 task 3 이 종료하면 coalescing
사용 가능 공간이 모여 있는 것이 성능상에 유리 주기적인 compaction 필요
Kernel
task 3
task 1
task 8
task 5
task 7
14
단국대학교 최종무
메모리 관리 기법의 발전 (8/8)
가상 메모리 (Virtual memory) 프로그램이 참조하는 메모리와 물리적인 메모리를 구분 가상 주소 (virtual address), 물리 주소 (physical address)
0
3GB
4GBtask 1
text
stack
커널
data
heap
0
3GB
4GBtask 2
text
stack
커널
data
heap
task 1
task 2
virtual memory virtual memoryphysical memory
15
단국대학교 최종무
가상 메모리 (1/8)
가상 메모리 (Virtual memory) 각 태스크가 참조하는 논리적인 메모리 ( 태스크 마다 존재 )
32bit computer 의 경우 가상 메모리 크기는 4GB
말 그대로 가상임 ( 실제 메모리가 아님 )
가상 주소를 갖는다
물리 메모리 (Physical address) 실제 존재하는 main memory
각 태스크의 가상 메모리 일부 (region) 가 존재한다 .
가상 메모리의 일부 (region) 가 고정된 크기이면 가변적인 크기이면
페이지 기반 가상 메모리 시스템세그먼트 기반 가상 메모리 시스템
16
단국대학교 최종무
가상 메모리 (2/8)
페이지 시스템 : 물리 메모리 구조 물리 메모리는 고정된 크기의 기본 단위로 구분된다 .
기본 단위를 페이지 프레임 (page frame) 이라고 함 . 보통 4KB
physical memory
…
물리 메모리의 기본 단위를 page frame, 가상 메모리의 기본 단위를 page 라고 한다 !!
17
단국대학교 최종무
가상 메모리 (3/8)
페이지 시스템 : 태스크 로딩 test.exe 라는 프로그램을 수행 시킨다고 가정 (ELF format)
이 응용의 text 는 12KB, data 는 8KB, 초기 stack 은 4KB 로 가정
이 응용은 malloc 을 사용하지 않음
text
stack
커널
data
virtual memory
test.exe
Disk
inode t1 t2
d1t3
d2
test.exe 가 수행 되려면 디스크에서 메모리로 이동되어야 함 physical memory
…
t1
t2
d1
pf3
pf5
pf2
18
단국대학교 최종무
가상 메모리 (4/8)
페이지 시스템 : 주소 변환 디스크 내용을 물리 메모리에 로딩 (loading) 하면서 위치 정보 기록
physical memory
…
t1
t2
d1
pf3
pf5
pf2Page table
pf6
s1 pf6
s1
태스크 자료 구조 (task struct) 에서 page table 을 관리 : 메모리 문맥
t1 pf3
t2 pf5
t3 -
d1 pf2
d2 -
page
page frame
위의 구조에서 프로그램이 가상 주소 1000 번지에 접근하면 메모리 어디에 접근하는가 ? 가상 주소 5000 번지에 접근하면 ? 또한 가상 주소 9000 에 접근하면 ?
19
단국대학교 최종무
가상 메모리 (5/8)
페이지 시스템 : 페이지 부재 결함 페이지 프레임에 존재하지 않는 페이지를 접근할 때
physical memory
…t1
t2
d1
pf3
pf5
pf2
t1 pf3
t2 pf5
t3 -
d1 pf2
d2 -
Page table
pf6
s1 pf6
s1
test.exe
Disk
inode t1 t2
d1t3
d2
pf4t3
pf4
task struct
20
단국대학교 최종무
가상 메모리 (6/8)
결국 태스크가 생성되면
new task
physical memory
…Page table
t1 pf3
t2 pf5
…
page
page frame
new task2
Page table
t1 pf2
t2 pf4
…
page
page frame
21
단국대학교 최종무
가상 메모리 (7/8)
가상 메모리 장단점 장점
단점은 ? (no free lunch)
태스크에게 물리적 메모리 이상의 공간 제공 (32bit CPU 의 경우 4G) 요구 페이징 (demand paging) 지원 메모리 배치 정책이 불필요 태스크간 메모리 공간 보호 태스크간 페이지 공유 가능 ( 효율적인 공유 메모리 지원 )
주소 변환 (address translation) 과정 필요 TLB (Translation Lookahead Buffer) 이용 HAT (Hardware Address Translation) 이용
22
단국대학교 최종무
가상 메모리 (8/8)
가상 메모리의 그 외 이슈 세그먼트 기반 가상 메모리
고정된 크기의 페이지 대신 가변 크기의 세그먼트 사용 주소 변환 : 세그먼트 테이블 최근 대부분의 OS 는 세그먼트와 페이지 기법을 함께 사용 . 접근
제어나 공유에는 세그먼트를 사용하고 , 주소 변환에는 페이지를 사용 .
페이지 교체 물리 메모리의 공간이 full 되었을 때 어떤 페이지를 메모리에서
쫓아낼 것인가 ?
locality 이용 FIFO, LRU, LFU, MRU, Working Set, clock algorithm 등의 방법
존재 thrashing 을 방지해야 함 .
23
단국대학교 최종무
이 장의 결론
3 가지 메모리 관리 정책 이해메모리 관리 기법 발전 과정 이해가상 메모리를 이해한다 .
페이지 기법 이해페이지 부재 결함 처리 방법 이해가상 메모리의 장단점 이해