상세 컨텐츠

본문 제목

메모리 파편화 (Memory Fragmentation)와 Virtual Memory

Study/OS

by J2on 2024. 2. 10. 02:01

본문

메모리 파편화 (Memory Fragmation)

 



External Fragmentation

 

메모리 파편화에는 두 종류가 있다.

  1. Internal Fragmentation
    • Allocated된 memory가 필요보다 조금 더 할당 되어서 남은 공간이 비어있는 경우
  2. External Fragmentation
    • Memory 내부에 Process들 사이에 빈 메모리 공간

 

 

이걸 해결하기 위해 Paging을 사용한다.

 

Memory는

실제 memory의 Physical Memory Address → MMU → Logical Memory Address

과정을 거친다.

 

그래서 Process가 활용하는 것은 Logical Memory Address인데

Physical Memory를 fixed size한 block으로 나눈 것을 ‘frame’이라 하고

같은 크기의 Logical Memory를 ‘Page’라고 한다.

 

그래서 이러한 Page를 각 프로세스마다 PageTable(MMU의 역할)로 묶는다.

⇒ 그러면 프로세스 입장에선 연속된 memory공간처럼 활용이 가능하다.

 

이런 Page Table 구성에는 Hashing이나 Inverted나 계층구조나 여러 방식이 존재한다.

9. Main Memory

 

Paging에서 항목이 많아지는 경우엔 2중 3중으로 Paging하고 하는거지

이런 Page Table을 이용하는 방식이 Virtual Memory이다.

 

이런 Virtual Memory는 또, ROM을 이용해 실제 메모리보다 더 큰 메모리를 사용할 수 있게 해준다.

 

 

이게 무슨 말이냐….

 

실제 Memory에 올라있지 않고,

 

디스크에 backing store라고 하는 곳에 잘 안쓰는 데이터들을 저장해둔다.

 

그런데, 이 backing store에 저장된 정보가 필요한 경우엔 어떻게 해야할까?

(혹은 새 Data로 인해 빈공간이 필요한 경우)

 

일단 이런 상황을 Page Fault라고 한다. Page Table에서 찾을 수 없다는 뜻.

 

그리고, backing store에 있는 정보와 Swapping을 통해 memory에 있는 정보와 교환한다.

 

그래서 **어떤 Page를 Victim(희생자)**로 선정하는가?

여러 알고리즘이 있다.

  1. FIFO(First in First out) - 가장 먼저 들어온 순으로 교체
  2. Optimal Page Replacement - 앞으로 가장 나중에 사용될 page 교체
  3. (앞으로의 Process 진행을 알고 있어야 함 ← 현실성 부족)
  4. LRU(Least Recently Used) - 가장 오래 전에 접근 되었던 page 교체

10. Virtual Memory

자세한 내용은 위로…

 

 

참고

https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/

 

Difference between Internal and External fragmentation - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

'Study > OS' 카테고리의 다른 글

Von Neumann Architecture  (0) 2024.02.10

관련글 더보기

댓글 영역