1 / 23

5 장 . 메모리 관리

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

lilith
Download Presentation

5 장 . 메모리 관리

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5장. 메모리 관리

  2. 이 장의 강의 목표 • 메모리 관리 정책을 이해한다. • 메모리 관리 기법의 발전 과정을 이해한다. • 가상 메모리를 이해한다. • 페이지/세그먼테이션 방법을 이해한다. • page fault 처리 방법을 이해한다.

  3. 수행 컴파일 prev task prev task new task Memory OS CPU CPU CPU CPU CPU 문맥으로 관리 Disk inode 지금까지 강의 내용을 살펴보면 (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한 객체로 변화 • test.exe가 수행 되려면 디스크에서 메모리로 이동되어야 함  메모리 관리 필요 (언제, 어디에 올릴 것인가?)

  4. 지금까지 강의 내용을 살펴보면 (2/2) • 용어 정리 (Terminology) • compile, assemble, linking, loading의 차이는?

  5. register 메모리 계층 구조 • 메모리 계층 구조 • Caching is more and more important (how to keep consistency?) CPU cache • larger capacity • lower speed • lower cost Main Memory Secondary Storage Server (or INTERNET)

  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. task Kernel 메모리 관리 기법의 발전 (2/8) • 단일 사용자 전용 시스템 (single programming system) main memory protection register • 태스크가 메모리보다 클 경우에는 ?  overlay 이용

  9. task 4 task 1 Kernel task 2 task 3 메모리 관리 기법의 발전 (3/8) • Multiprogramming system • 고정 분할 다중 프로그래밍: 절대 번역 • internal fragmentation 발생

  10. task 4 task 1 task 2 Kernel task 3 메모리 관리 기법의 발전 (4/8) • Multiprogramming system • 고정 분할 다중 프로그래밍: 재배치 (relocation) 가능

  11. task 1 task 1 task 2 task 2 Kernel task 4 task 4 task 3 task 3 메모리 관리 기법의 발전 (5/8) • Multiprogramming system • 가변 분할 다중 프로그래밍 • 고정 분할에 비해 효과적으로 메모리 사용 • no free lunch: coalescing, compaction 필요

  12. 40KB 30KB task 3 task 4 task 7 15KB Kernel task 2 task 1 task 5 task 6 200KB 메모리 관리 기법의 발전 (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 종료 • 이때 task 8이 생성되면 어디에? (크기는 25KB로 가정)  first fit, best fit, worst fit방법 존재

  13. task 3 task 7 Kernel task 8 task 1 task 5 메모리 관리 기법의 발전 (7/8) • Multiprogramming system • 가변 분할 다중 프로그래밍 • 이전 슬라이드 시나리오에서 task 8을 first fit으로 할당하였다고 가정하면 다음 그림과 같이 됨 • 이때 task 3이 종료하면  coalescing • 사용 가능 공간이 모여 있는 것이 성능상에 유리  주기적인 compaction 필요

  14. 4GB 4GB data stack data heap stack 3GB 3GB task 2 task 1 heap text 커널 커널 text 0 0 메모리 관리 기법의 발전 (8/8) • 가상 메모리 (Virtual memory) • 프로그램이 참조하는 메모리와 물리적인 메모리를 구분 • 가상 주소(virtual address), 물리 주소(physical address) task 2 task 1 physical memory virtual memory virtual memory

  15. 가상 메모리 (1/8) • 가상 메모리 (Virtual memory) • 각 태스크가 참조하는 논리적인 메모리 (태스크 마다 존재) • 32bit computer의 경우 가상 메모리 크기는 4GB • 말 그대로 가상임 (실제 메모리가 아님) • 가상 주소를 갖는다 • 물리 메모리 (Physical address) • 실제 존재하는 main memory • 각 태스크의 가상 메모리 일부(region)가 존재한다. • 가상 메모리의 일부(region)가 • 고정된 크기이면  • 가변적인 크기이면  페이지 기반 가상 메모리 시스템 세그먼트 기반 가상 메모리 시스템

  16. physical memory 가상 메모리 (2/8) • 페이지 시스템 : 물리 메모리 구조 • 물리 메모리는 고정된 크기의 기본 단위로 구분된다. • 기본 단위를 페이지 프레임(page frame)이라고 함. 보통 4KB • 물리 메모리의 기본 단위를 page frame, 가상 메모리의 기본 단위를 page라고 한다!!

  17. Disk data … stack text inode 커널 physical memory virtual memory 가상 메모리 (3/8) • 페이지 시스템 : 태스크 로딩 • test.exe라는 프로그램을 수행 시킨다고 가정 (ELF format) • 이 응용의 text는 12KB, data는 8KB, 초기 stack은 4KB로 가정 • 이 응용은 malloc을 사용하지 않음 test.exe pf5 t2 t2 t1 d1 t3 pf3 t1 d2 pf2 d1 • test.exe가 수행 되려면 디스크에서 메모리로 이동되어야 함

  18. page page frame t1 pf3 t2 pf5 t3 - d1 pf2 d2 - … pf5 t2 s1 pf6 pf3 t1 pf2 d1 physical memory 가상 메모리 (4/8) • 페이지 시스템 : 주소 변환 • 디스크 내용을 물리 메모리에 로딩(loading) 하면서 위치 정보 기록 pf6 s1 Page table • 태스크 자료 구조 (task struct)에서 page table을 관리: 메모리 문맥 • 위의 구조에서 프로그램이 가상 주소 1000번지에 접근하면 메모리 어디에 접근하는가? • 가상 주소 5000번지에 접근하면? 또한 가상 주소 9000에 접근하면?

  19. task struct Disk t1 pf3 t2 pf5 t3 - d1 pf2 d2 - … pf6 s1 pf5 t2 t2 s1 pf6 t1 d1 inode t3 pf3 t1 Page table d2 pf2 d1 physical memory 가상 메모리 (5/8) • 페이지 시스템 : 페이지 부재 결함 • 페이지 프레임에 존재하지 않는 페이지를 접근할 때 pf4 pf4 t3 test.exe

  20. new task new task2 … page page page frame page frame t1 pf3 t2 pf5 … t1 pf2 t2 pf4 … Page table Page table physical memory 가상 메모리 (6/8) • 결국 태스크가 생성되면

  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가지 메모리 관리 정책 이해 • 메모리 관리 기법 발전 과정 이해 • 가상 메모리를 이해한다. • 페이지 기법 이해 • 페이지 부재 결함 처리 방법 이해 • 가상 메모리의 장단점 이해

More Related