페이징은 물리적인 메모리 주소 공간이 연속적이지 않아도 (noncontiguous 해도) 되도록 하는 메모리 관리 방법이다.

Fragmentation 이라는 문제에 대한 해결책으로 제시되는 개념이다.

#Fragmentation : eth6n.tistory.com/11?category=913611

#Physical Memory and Logical Memory

  • Physical Memory

    : '실제' Main Memory 메모리 주소

    >> 고정된 크기의 block(메모리의 단위)으로 나뉜 Physical Memory를 Frame 이라고 한다.

  • Logical Memory

    : CPU에 의해서 만들어진, 이후 계산되어 '실제' 메모리 주소로 변환되는 주소

    >> frame과 같은 크기의 block으로 나뉜 Logical Memory를 Page 라고 한다.
    >> Page Number (p) 와, Page Offset(d) 두 가지로 구성되어 있다.

    • Page Number (p) : Page Table 안에서 'base address' 를 찾기 위한 index.

    • Page Offset (d) : Page Number를 통해 찾은 base address 와 함께 physical memory address 를 찾을 때 쓰임.

Logical memory address 가 Physical memory address로 변환될 때 필요한 것이 바로 'Page Table' 이다.

그리고 이 변환 과정을 Address Translation Scheme 이라고 한다.

CPU - PHYSICAL MEMORY 사이에 있는 저 연산을 관리하는 하드웨어를 MMU (Memory Managment Unit) 이라고 한다. 

여기서 질문,

Q. OS has one page table for the entire system. T/F?

A. False. Page Table은 Process 마다 존재한다.

교수님께서 수업시간에 언급하신 개념인데, 체크해두면 좋을 것 같다.

 

자, 그럼 Paging을 성공적으로 했다고 했을 때 Fragmentation 에 대하여 어떤 효과가 있는지 정리해보겠다.

  • External Fragmentation x
  • Internal Fragmentation
    : Process가 필요한 것 이상으로 메모리가 할당되어 공간이 낭비되는 상황을 의미한다. 안타깝게도 Paging으로는 Internal Fragmentation  까지 피할 순 없다. 예를들어, 이건 좀 심각한 상황의 예시이긴 한데, n pages + 1byte가 필요한 상황에서 n+1 frames를 해당 프로세스에게 할당하는 경우가 발생할 수 있다. 다시말해 1byte 때문에 frame 하나를 통째로 준다는 것.

    >> Page 크기 자체를 줄이면 Internal Fragmentation이 줄어드는 것은 맞다. 하지만 이 경우 page table을 관리하는 Overhead가 커질 것이다.
  • Free Frames 추적
    : 프로세스가 n개의 page 를 요구한다고 했을 때, Physical Memory에는 n 개의 frame이 존재해야 된다. 어떤 frame이 할당되어있고 어떤 frame이 free 한 상태인지, OS가 관리할때 도움을 준다.

*오개념 지적 대환영*

#키워드 : (게시글이 있는 경우) 링크를 참고하시거나, 검색하면서 읽어주세요.이해에 꼭 필요한 개념입니다.

 

해당 게시글은 Operating Systems: Three Easy Pieces(#혜성책), Operating System Concepts (#공룡책), 그리고 이 도서를 기반으로 한 학부 수업 자료를 참고하여 작성하였습니다.