[SW_Jungle] Memory Management(추가 중)

Jin Lee·2022년 1월 2일
0

PintOS

목록 보기
7/16
post-thumbnail

Memory allocation

  • continous memory allocation(연속 할당) : 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책
    • uni-programming : 하나의 프로세스만 메모리 상에 존재, 가장 간단하나 프로그램의 크기가 메모리 크기보다 큰 경우는 사용자가 overlay structure를 해야 사용 가능하다. 따라서 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함, 또한 커널의 영역을 침범 할 수 있다는 문제점이 있어 boundary register(경계 레지스터)를 사용해야 한다.

      이러한 문제점들을 고려했을 때 낭비되는 자원들이 많아 low system resource utilization과 low system performance의 문제가 생길 수 있고 이는 multiple-programming으로 해결 가능하다.

    • multi-programming
      • fixed partition(FPM) : 메모리 공간을 고정된 크기로 미리 분할, 각 프로세스는 하나의 partition(분할, 방이라고 생각 할 수 있음)에 적재, partition의 갯수가 multi-programming degree가 됨, 내부단편화와 외부단편화의 문제가 생길 수 있다.(내부단편화와 외부단편화가 궁금하다면?)
      • variable partition(VPM) : 초기에는 전체가 하나의 영역, 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할, 내부단편화는 발생하지 않으나 외부단편화의 문제는 있음, 배치 전략을 사용할 수 있음(First-fit, Next-fit, Best-fit이 궁금하다면?)
        1. placement strategies : First-fit, Best-fit, Next-fit
        2. external fragmentation issue : coalescing hole, storage compaction
  • non-continous memory allocation(비 연속 할당) : 사용자가 여러개의 block으로 분할, 실행시 필요한 block들만 메모리에 적재하고 나머지 block들은 swap device에 존재한다. address mapping 과정을 통해 virutal address를 real address로 바꾸어 줌 따라서 사용자/프로세스는 실행 프로그램 전체가 메모리에 연속적으로 적재되었다고 생각하고 실행할 수 있음
    • paging system
    • segmentation system
    • hybrid paging/segmentation system

continous allocation 의 address mapping : relative address(상대 주소) 프로그램의 시작주소를 0으로 가정한 주소, relocation(재배치) 메모리 할당 후 할당된 주소에 따라 상재 주소들을 조정하는 작업

non continous allocation 의 address mapping : virtual address를 real address로 변환하는 과정. virtual address(가상 주소) 논리적인 주소이며 연속된 메모리 할당을 가정한 주소, real address(실제 주소) 실제 메모리에 적재된 주소

ref)
1. https://www.youtube.com/watch?v=te-GU7NKa5Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=25
2. https://www.youtube.com/watch?v=o1TB9NWvG9w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=26

profile
깃허브 : https://github.com/jinlee9270

0개의 댓글