CS지식/운영체제

TIL 정리_100(Memory Management)

ran4 2022. 5. 27. 22:09

http://www.kocw.net/home/m/search/kemView.do?kemId=1046323

운영체제 강의를 듣고 정리한 내용입니다

 


Fixed partition allocation(고정 분할 방식)

  • 물리적 메모리를 몇 개의 영구적 분할로 나눈다
  • Internal fragmentation이 발생한다 (external fragmentation도 발생)

Variable partition allocation(가변 분할 방식)

  • 분할의 크기, 개수가 동적으로 변한다
  • 단점  : External fragmentation이 발생한다

 

**External fragmentation(외부 조각)

  • 프로그램 크기보다 분할의 크기가 작은 경우
  • 아무 프로그램에도 배정되지 않은 빈 곳인데도 프로그램이 올라갈 수 없는 작은 분할을 말한다 

Internal fragmentation (내부 조각)

  • 프로그램 크기보다 분할의 크기가 큰 경우
  • 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각
  • 특정 프로그램에 배정되었지만 사용되지 않는 공간을 의미한다 

 

Hole

  • 가용 메모리 공간을 말한다
  • 다양한 크기의 hole들이 메모리 여러 곳에 흩어져 있다
  • 프로세스가 도착하면 수용가능한 hole을 할당한다

운영체제는 다음의 정보를 유지한다

  • a) 할당 공간 b) 가용공간(hole)

Dynamic Storage-Allocation Problem

- 가변 분할 방식에서 size n인 요청을 만족하는 가장 적절한 hole을 찾는 문제이다

 

First-fit

-sizen이상인 것 중 최초로 찾아지는 hole에 할당한다

 

Best-fit

-sizen 이상인 가장 작은 hole을 찾아서 할당한다

Hole들의 리스트가 크기 순으로 정렬되지 않은 경우 모든 hole의 리스트를 탐색해야 한다

많은 수의 아주 작은 hole들이 생성된다

 

Worst-fit

가장 큰 Hole에 할당된다

모든 리스트를 탐색해야 한다

상대적으로 아주 큰 hole들이 생성된다

 

**First-fit과 best-fit이 worst-fit의 속도와 공간 이용률 측면에서 효과적인 것으로 알려져 있다(실험적인 결과)

 

 

compaction

  • external fragmentation 문제를 해결하는 한 가지 방법이다
  • 사용중인 메모리 영역을 한 군데로 몰고 hole들을 다른 한 곳으로 몰아 큰 block을 만드는 것이다
  • 매우 비용이 많이 드는 방법이다
  • 최소한의 메모리 이동으로 compaction하는 방법으로 매우 복잡한 방법이다
  • Compaction은 프로세스의 주소가 실행 시간에 동적으로 재배치 가능한 경우에만 수행될 수 있다
  • runtime binding이 지원되어야 사용 가능하다

 

Noncontiguous allocation 불연속 할당

- 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있다

 

Paging

프로그램을 구성하는 주소 공간을 같은 크기의 페이지로 자르는 것이다

페이지 단위로 물리적인 메모리에 올린다

 

Segmentation

프로그램의 주소공간을 의미있는 단위로 자른다

각각의 segment를 필요시에 물리적인 메모리의 다른 위치에 올릴 수 있게 하는 것이다

크게 code data stack의 의미있는 공간으로 이루어짐

크기가 균일하지 않기 때문에 프로그램 크기가 달라서 발생하는 문제가 동일하게 발생한다

 

Pages Segmentation

주소공간을 알기위해서는 페이지별 주소를 알아야 한다

단순히 레지스터 2개만으로 주소변환을 하는 간단한 방법으로는 주소변경이 불가하다

 

 

Paging

  • 프로세스의 가상 메모리(virtual memory)를 동일한 사이즈의 page 단위로 나눈다
  • 페이지 테이블을 사용한다 (페이지 == 배열)
  • 가상 메모리의 내용이 page 단위로 noncontiguous하게 저장된다

일부는 backing storage, 일부는 physical memory에 저장된다

-> 인덱스를 통해서 접근이 가능한 자료구조이다

 

Basic Method

  • physical memory를 동일한 크기의 frame으로 나눈다
  • logical memory를 동일한 크기의 page로 나눈다(frame과 같은 크기이다)
  • 모든 가용 frame들을 관리한다
  • page table을 사용하여 논리적 주소를 물리적 주소로 변환한다
  • External fragmentation이 발생하지 않지만, Internal fragmentation은 발생할 수 있다

 

Implementation of Page table

Page table은 메인 메모리에 상주한다

Page-table base register(PTBR)page table을 가리킨다

Page-table length register(PTLR)가 테이블 크기를 보관한다

모든 메모리 접근 연산에는 2번의 메모리 접근이 필요하다

-> page table 접근 1, 실제 date/instruction 접근 1

 

속도 향상을 위해

Associative register 혹은 translation look-aside buffer(TLB)라고 불리는 고속의 lookup hardware cache를 사용한다

-> TLB에 접근하는 것이 메인 메모리보다 접근속도가 빠르다

전체 항목에 대해 찾는것은 시간이 오래걸린다

-> 병렬 탐색이 가능한 parallel search 기능이 존재한다

 

**Associative Registers(TLB) : parallel search가 가능하다

TLB에는 page table 중 일부만 존재한다

 

 

Address translation

  • page table 중 일부가 associative register에 보관되어 있다
  • 만약 해당 page#가 associative register에 있는 경우 곧바로 frame#를 얻는다
  • 그렇지 않은 경우 메인 메모리에 있는 page table로부터 frame#을 얻는다
  • TLB는 문맥 교환때 flush(오래된 엔트리 삭제)를 시킨다

'CS지식 > 운영체제' 카테고리의 다른 글

TIL 정리_102(Memory Management)  (0) 2022.06.01
TIL 정리_101(Memory Management)  (0) 2022.05.29
TIL 정리_99(Memory Management)  (0) 2022.05.26
TIL 정리_98(Deadlock&Memory)  (0) 2022.05.25
TIL 정리_97(Deadlock)  (0) 2022.05.24