2017년 5월 27일 토요일

memory management - 메모리 관리 기법

memory management strategies - 메모리 관리 기법 아래는 Operating System 에서 사용되는 메모리 관리 기법을 도식화하였다. 각 항목에 대해 다른 사람에게 간단한 설명이 가능한 수준으로 이해하고 있어야 할 기본적인 개념이다. 아래편으로 각 항목에 대한 간략한 설명이 있으며, 자세한 설명은 Operating system 책을 참고하자.

swapping external fragmentation internal fragmentation compaction paging segmentation

1. basic concepts

  1. logical address (=virtual address) : an address seen by CPU
  2. physical address : an address seen by memory unit
  3. MMU : runtime mapping from virtual to physical addresses

2. swapping : 현재 수행되지 않는 프로세스에 대해 임시로 메모리에서 보조 저장장치(backing storage)로 옮겨두는 기법

3. fragmentation

  1. external fragmentation : 전체 메모리 공간은 충분하나, 작은 사이즈 단위로 모두 쪼개어 여러 공간에 분산되어 있는 상태로 연속적인 공간 할당이 불가능한 상태
    1. compaction : 파편화된 메모리 공간을 모아서, 하나의 큰 메모리 공간으로 만드는 것. dynamic relocation이 가능한 경우에 실행 가능한 기법
    2. paging : 페이징은 physical memory를 고정된 PAGE SIZE 단위로 나누어 관리하는 기법이다. logical memory는 page 단위로 나뉘며, 이 동일 크기로 physical memory는 frame 단위로 나뉘어 관리된다. page를 frame으로 mapping을 시켜주는 정보를 page number와 page offset으로 구성된 page table에 넣어 저장/관리한다. 페이징의 하드웨어 구현 방법
      1. dedicated registers : 매우 빠르나 page table이 작은 경우만 가능
      2. PTBR : page table을 main memory에 저장하고, PTBR로 가르킴. page table이 memory에 존재하여, 접근 시간이 상당히 소요됨
      3. TLB : fast-lookup hardware cache를 사용. 최근 사용한 page table만 캐싱하여 저장함. 접근 시간이 빠르나, TLB hit/miss에 따른 접근 시간 차이가 발생
    3. segmentation : 메모리를 바라보는 사용자 관점을 그대로 지원하는 메모리 관리 기법이다. 즉, logical address space을 논리적인 블록 단위인 세그먼트들의 집합으로 정의한다. C컴파일러의 경우, 코드, 전역변수, 힙, 스택, 표준 C라이브러리와 같은 세그먼트를 가진다. 세그멘테이션은 각 segment 별 영역을 segment base와 segment limit으로 이뤄진 segment table로 표현/관리한다.
  2. internal fregmentation : 고정된 블록 사이즈로 메모리를 할당할때, 당연히 요청된 메모리 사이즈보다 큰 메모리 할당이 일어나게 되고, 이 차이 분의 메모리 공간은 실제로 사용되지 않게됨. 이 사용되지 않는 공간을 의미.

Navigation of this blog:이 블로그 한눈에 보기

.