23
1 단단단단단 단단단 IT 단단 1 5 장 . 장장장 장장

5 장 . 메모리 관리

  • Upload
    lilith

  • View
    72

  • Download
    0

Embed Size (px)

DESCRIPTION

5 장 . 메모리 관리. 이 장의 강의 목표. 메모리 관리 정책을 이해한다 . 메모리 관리 기법의 발전 과정을 이해한다 . 가상 메모리를 이해한다 . 페이지 / 세그먼테이션 방법을 이해한다 . page fault 처리 방법을 이해한다. 수행. 컴파일. prev task. prev task. new task. Memory. OS. CPU. CPU. CPU. CPU. CPU. 문맥으로 관리. Disk. inode. 지금까지 강의 내용을 살펴보면 (1/2). edit test.c. - PowerPoint PPT Presentation

Citation preview

Page 1: 5 장 .  메모리 관리

1

단국대학교 최종무

IT 특론 1

5 장 . 메모리 관리

Page 2: 5 장 .  메모리 관리

2

단국대학교 최종무

이 장의 강의 목표

메모리 관리 정책을 이해한다 .

메모리 관리 기법의 발전 과정을 이해한다 .

가상 메모리를 이해한다 .

페이지 / 세그먼테이션 방법을 이해한다 .

page fault 처리 방법을 이해한다 .

Page 3: 5 장 .  메모리 관리

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 한객체로 변화

Page 4: 5 장 .  메모리 관리

4

단국대학교 최종무

지금까지 강의 내용을 살펴보면 (2/2)

용어 정리 (Terminology) compile, assemble, linking, loading 의 차이는 ?

Page 5: 5 장 .  메모리 관리

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

Page 6: 5 장 .  메모리 관리

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, ...

Page 7: 5 장 .  메모리 관리

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)

Page 8: 5 장 .  메모리 관리

8

단국대학교 최종무

메모리 관리 기법의 발전 (2/8)

단일 사용자 전용 시스템 (single programming system)

태스크가 메모리보다 클 경우에는 ? overlay 이용

Kernel

task

protection register

main memory

Page 9: 5 장 .  메모리 관리

9

단국대학교 최종무

메모리 관리 기법의 발전 (3/8)

Multiprogramming system 고정 분할 다중 프로그래밍 : 절대 번역

Kernel

task 1

task 2

task 3

task 4

internal fragmentation 발생

Page 10: 5 장 .  메모리 관리

10

단국대학교 최종무

메모리 관리 기법의 발전 (4/8)

Multiprogramming system 고정 분할 다중 프로그래밍 : 재배치 (relocation) 가능

Kernel

task 1 task 2 task 3 task 4

Page 11: 5 장 .  메모리 관리

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

고정 분할에 비해 효과적으로 메모리 사용

Page 12: 5 장 .  메모리 관리

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

Page 13: 5 장 .  메모리 관리

13

단국대학교 최종무

메모리 관리 기법의 발전 (7/8)

Multiprogramming system 가변 분할 다중 프로그래밍

이전 슬라이드 시나리오에서 task 8 을 first fit 으로 할당하였다고 가정하면 다음 그림과 같이 됨 이때 task 3 이 종료하면 coalescing

사용 가능 공간이 모여 있는 것이 성능상에 유리 주기적인 compaction 필요

Kernel

task 3

task 1

task 8

task 5

task 7

Page 14: 5 장 .  메모리 관리

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

Page 15: 5 장 .  메모리 관리

15

단국대학교 최종무

가상 메모리 (1/8)

가상 메모리 (Virtual memory) 각 태스크가 참조하는 논리적인 메모리 ( 태스크 마다 존재 )

32bit computer 의 경우 가상 메모리 크기는 4GB

말 그대로 가상임 ( 실제 메모리가 아님 )

가상 주소를 갖는다

물리 메모리 (Physical address) 실제 존재하는 main memory

각 태스크의 가상 메모리 일부 (region) 가 존재한다 .

가상 메모리의 일부 (region) 가 고정된 크기이면 가변적인 크기이면

페이지 기반 가상 메모리 시스템세그먼트 기반 가상 메모리 시스템

Page 16: 5 장 .  메모리 관리

16

단국대학교 최종무

가상 메모리 (2/8)

페이지 시스템 : 물리 메모리 구조 물리 메모리는 고정된 크기의 기본 단위로 구분된다 .

기본 단위를 페이지 프레임 (page frame) 이라고 함 . 보통 4KB

physical memory

물리 메모리의 기본 단위를 page frame, 가상 메모리의 기본 단위를 page 라고 한다 !!

Page 17: 5 장 .  메모리 관리

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

Page 18: 5 장 .  메모리 관리

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 에 접근하면 ?

Page 19: 5 장 .  메모리 관리

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

Page 20: 5 장 .  메모리 관리

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

Page 21: 5 장 .  메모리 관리

21

단국대학교 최종무

가상 메모리 (7/8)

가상 메모리 장단점 장점

단점은 ? (no free lunch)

태스크에게 물리적 메모리 이상의 공간 제공 (32bit CPU 의 경우 4G) 요구 페이징 (demand paging) 지원 메모리 배치 정책이 불필요 태스크간 메모리 공간 보호 태스크간 페이지 공유 가능 ( 효율적인 공유 메모리 지원 )

주소 변환 (address translation) 과정 필요 TLB (Translation Lookahead Buffer) 이용 HAT (Hardware Address Translation) 이용

Page 22: 5 장 .  메모리 관리

22

단국대학교 최종무

가상 메모리 (8/8)

가상 메모리의 그 외 이슈 세그먼트 기반 가상 메모리

고정된 크기의 페이지 대신 가변 크기의 세그먼트 사용 주소 변환 : 세그먼트 테이블 최근 대부분의 OS 는 세그먼트와 페이지 기법을 함께 사용 . 접근

제어나 공유에는 세그먼트를 사용하고 , 주소 변환에는 페이지를 사용 .

페이지 교체 물리 메모리의 공간이 full 되었을 때 어떤 페이지를 메모리에서

쫓아낼 것인가 ?

locality 이용 FIFO, LRU, LFU, MRU, Working Set, clock algorithm 등의 방법

존재 thrashing 을 방지해야 함 .

Page 23: 5 장 .  메모리 관리

23

단국대학교 최종무

이 장의 결론

3 가지 메모리 관리 정책 이해메모리 관리 기법 발전 과정 이해가상 메모리를 이해한다 .

페이지 기법 이해페이지 부재 결함 처리 방법 이해가상 메모리의 장단점 이해