메모리 파편화 (Memory Fragmation)
External Fragmentation |
메모리 파편화에는 두 종류가 있다.
이걸 해결하기 위해 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나 계층구조나 여러 방식이 존재한다.
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(희생자)**로 선정하는가?
여러 알고리즘이 있다.
자세한 내용은 위로…
참고
https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/
Von Neumann Architecture (0) | 2024.02.10 |
---|
댓글 영역