메모리 관리

Download Report

Transcript 메모리 관리

1
IT 특론 1
5장. 메모리 관리
단국대학교 최종무
2
이 장의 강의 목표
메모리 관리 정책을 이해한다.
메모리 관리 기법의 발전 과정을 이해한다.
가상 메모리를 이해한다.
페이지/세그먼테이션 방법을 이해한다.
page fault 처리 방법을 이해한다.
단국대학교 최종무
3
지금까지 강의 내용을 살펴보면 (1/2)
edit test.c
test.exe
int sum = 0;
int main()
{
int i;
for (i=0; i<10;i++)
sum += i;
컴파일
printf(“%d”, sum);
}
.data
.align 4
.type sum,@object
.size sum,4
.text
.global main
.type main, @func
main:
pushl %ebp
…
movl -4(%ebp), %eax
addl
%eax, sum
…
수행
test.exe가 더 이상
passive가 아닌 active한
객체로 변화
prev task
CPU
prev task
CPU
new task
CPU
OS
inode
Disk
CPU
Memory
문맥으로 관리
 test.exe가 수행 되려면 디스크에서 메모리로 이동되어야 함
 메모리 관리 필요 (언제, 어디에 올릴 것인가?)
단국대학교 최종무
4
지금까지 강의 내용을 살펴보면 (2/2)
용어 정리 (Terminology)

compile, assemble, linking, loading의 차이는?
단국대학교 최종무
5
메모리 계층 구조
메모리 계층 구조
register
CPU cache
Main Memory
• larger capacity
• lower speed
• lower cost
Secondary Storage
Server (or INTERNET)

Caching is more and more important (how to keep consistency?)
단국대학교 최종무
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)
main memory
task
protection register
Kernel
 태스크가 메모리보다 클 경우에는 ?  overlay 이용
단국대학교 최종무
9
메모리 관리 기법의 발전 (3/8)
Multiprogramming system

고정 분할 다중 프로그래밍: 절대 번역
task 1
task 4
task 2
task 3
Kernel
 internal fragmentation 발생
단국대학교 최종무
10
메모리 관리 기법의 발전 (4/8)
Multiprogramming system

고정 분할 다중 프로그래밍: 재배치 (relocation) 가능
task 1
task 2
task 3
task 4
Kernel
단국대학교 최종무
11
메모리 관리 기법의 발전 (5/8)
Multiprogramming system

가변 분할 다중 프로그래밍
task 1
task 2
task 3
task 4
1
2
3
task 4
 고정 분할에 비해 효과적으로 메모리 사용
Kernel
 no free lunch: coalescing, compaction 필요
단국대학교 최종무
12
메모리 관리 기법의 발전 (6/8)
Multiprogramming system

task 1
가변 분할 다중 프로그래밍
 시나리오
•
전체 메모리는 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 종료
40KB
task 2
task 3
30KB
task 4
task 5
15KB
task 6
task 7
200KB
 이때 task 8이 생성되면 어디에? (크기는 25KB로 가정)
Kernel
 first fit, best fit, worst fit 방법 존재
단국대학교 최종무
13
메모리 관리 기법의 발전 (7/8)
Multiprogramming system

가변 분할 다중 프로그래밍
 이전 슬라이드 시나리오에서 task 8을 first fit으로
task 1
task 8
할당하였다고 가정하면 다음 그림과 같이 됨
 이때 task 3이 종료하면  coalescing
task 3
 사용 가능 공간이 모여 있는 것이 성능상에 유리
 주기적인 compaction 필요
task 5
task 7
Kernel
단국대학교 최종무
14
메모리 관리 기법의 발전 (8/8)
가상 메모리 (Virtual memory)

프로그램이 참조하는 메모리와 물리적인 메모리를 구분

가상 주소(virtual address), 물리 주소(physical address)
task 1
task 2
커널
커널
4GB
4GB
3GB
3GB
stack
stack
task 1
heap
task 2
heap
data
data
text
0
virtual memory
text
physical memory
virtual memory
0
단국대학교 최종무
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을 사용하지 않음
test.exe
…
커널
stack
Disk
inode
t1
t3
data
text
virtual memory
t2
t2
pf5
t1
d1
pf3
pf2
d1
d2
 test.exe가 수행 되려면
디스크에서 메모리로 이동되어야 함
physical memory
단국대학교 최종무
18
가상 메모리 (4/8)
페이지 시스템 : 주소 변환
디스크 내용을 물리 메모리에 로딩(loading) 하면서 위치 정보 기록
page page frame
t1
pf3
t2
pf5
t3
-
d1
pf2
d2
-
s1
pf6
…

s1
pf6
t2
pf5
t1
d1
pf3
pf2
Page table
physical memory
 태스크 자료 구조 (task struct)에서 page table을 관리: 메모리 문맥
 위의 구조에서 프로그램이 가상 주소 1000번지에 접근하면 메모리 어디에 접근하는가?
 가상 주소 5000번지에 접근하면? 또한 가상 주소 9000에 접근하면?
단국대학교 최종무
19
가상 메모리 (5/8)
페이지 시스템 : 페이지 부재 결함
페이지 프레임에 존재하지 않는 페이지를 접근할 때

t1
pf3
t2
pf5
t3
pf4
d1
pf2
d2
-
s1
pf6
…
task struct
s1
pf6
t2
t3
pf5
pf4
t1
d1
pf3
pf2
Page table
inode
physical memory
test.exe
Disk
t1
t3
t2
d1
d2
단국대학교 최종무
20
가상 메모리 (6/8)
결국 태스크가 생성되면
new task
…
page page frame
new task2
page page frame
t1
pf3
t1
pf2
t2
pf5
t2
pf4
…
…
Page table
Page table
physical memory
단국대학교 최종무
21
가상 메모리 (7/8)
가상 메모리 장단점

장점






태스크에게 물리적 메모리 이상의 공간 제공 (32bit CPU의 경우 4G)
요구 페이징 (demand paging) 지원
메모리 배치 정책이 불필요
태스크간 메모리 공간 보호
태스크간 페이지 공유 가능 (효율적인 공유 메모리 지원)
단점은? (no free lunch)

주소 변환 (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가지 메모리 관리 정책 이해
메모리 관리 기법 발전 과정 이해
가상 메모리를 이해한다.
페이지 기법 이해
페이지 부재 결함 처리 방법 이해
가상 메모리의 장단점 이해
단국대학교 최종무