[OS] Memory Management

East Silver·2022년 1월 1일
0

논리적 주소 (가상 주소)

프로세스마다 독립적으로 가지는 주소 공간. 0부터 시작

물리적 주소

메모리에 실제로 올라가는 위치이다.

주소 바인딩

Symbolic Address → Logical Address → Physical Address
프로세스의 논리적 주소를 물리적 메모리 주소로 연결하는 작업을 말한다.

  • Compile time binding
  • Load time binding
  • Execution time binding 또는 Runtime binding

메모리 관리 배경

프로세스끼리는 메모리 영역을 접근 할 수 없기 때문에, 메모리 영역과 사용자 메모리 영역으로 접근이 가능한 운영체제가 관리 한다.

Swapping

메모리의 관리를 위해 사용되는 기법
주 기억장치(RAM)으로 불러오는 과정을 swap-in, 보조 기억장치로 내보내는 과정을 swap-out 이라 한다. swap 에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할때 Swapping 이 시작된다.

단편화 (Fragmentation)

프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들이 늘어나게 되는 것을 말한다.

  • 외부 단편화
    - 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을때 발생한다고 볼 수 있다.
  • 내부 단편화
    - 프로세스가 사용하는 메모리 공간 에 포함된 남는 부분.

압축

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

  • 작업효율이 좋지 않다

Paging(페이징)

외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론
프로세스의 가상 메모리를 동일한 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 저장하는 방식.

  • 물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 논리 메모리는 페이지라 불리는 고정 크기의 블록으로 분리된다.
    논리 메모리와 물리 메모리는 같은 크기의 블록.
  • 모든 프로세스가 각각의 주소 변환을 위한 페이지 테이블 을 가지며, 이 테이블은 프로세스가 가질 수 있는 페이지의 개수만큼 주소 변환 엔트리를 갖음
  • 특정 프로세스의 몇 번째 페이지가 물리적 메모리의 몇 번째 프레임에 들어 있다는 페이지별 주소 변환 정보를 유지하고 있어야함

단점: 내부 단편화 문제의 비중이 늘어나게 된다

Segmentation(세그멘테이션)

페이징에서처럼 아닌, 프로세스상의 가상 메모리를 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 나누어 물리 메모리에 적재하는 방식

  • 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위)
  • 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장
  • 일반적으로 code, data, stack 부분이 하나씩의 세그먼트로 정의

단점: 외부 단편화

서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.

profile
IOS programmer가 되고 싶다

0개의 댓글