메모리 관리

  • 각각의 프로세스는 독립된 메모리 공간을 갖는다.
  • 각 프로세스는 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다
  • OS만이 OS 메모리 영역가 사용자 메모리 영역의 접근에 제약을 받지 않는다.

관리 기술

  • Swapping
    • 표준 Swapping 방식으로는 round-robin과 같은 스케쥴링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치로 보내고 다른 프로세스의 메모리를 불러 들일 수 있다.
    • 주 기억장치로 가져오는 과정을 swap-in
    • 보조 기억장치로 내보내는 과정을 swap-out
  • 단편화(Fragmentation)
    • 메모리가 적재되고 제거 되는 과정 중에 생기는 사용하지 못할만큼의 작은 자유공간이 생기는 것을 말함
    • 외부 단편화는 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생
    • 내부 단편화는 프로세스가 사용하는 메모리 공간에 포함된 남는 부분. 메모리 자유공간이 1000일 때 프로세스가 998을 사용하면 2가 남는 내부 단편화

관리 기법

압축

  • 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아 자유공간을 확보하는 방법론

Paging(페이징)

  • 하나의 프로세스의 메모리 공간이 연속적이어야 한다는 제약을 없앤 메모리 관리 기법
  • 물리 메모리는 Frame이라는 고정 크기로 분리되어 있고, 논리 메모리는 페이지라 불리는 고정 크기의 블록으로 분리된다.
  • 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없다.
  • 물리 메모리의 남는 프레임에 적절히 배최됨으로서 외부 단편화를 해결할 수 있다.ㅣ
  • 하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고, 개별 페이지에서는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장된다.
  • 내부 단편화의 비중이 늘어난다.
  • 페이지크기가 1000이고 프로세스가 3100이면 총 4개의 프레임이 필요하다.

Segmentation(세그멘테이션)

  • 물리 메모리를 같은 크기의 블록이 아닌 서로 다른 크기의 논리적 단위인 세그먼트로 분할
  • 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위) 세그먼트 테이블에서는 각 세그먼트의 기준(시작 물리주소)과 한계(세그먼트 길이)를 저장
  • 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수 있다.

출처

Interview_Question_for_Beginner/OS at master · JaeYeopHan/Interview_Question_for_Beginner (github.com)