메모리 관리

yshjft·2022년 11월 9일
0

운영체제

목록 보기
8/8

메모리 관리 방법

연속 메모리 관리

  • 프로그램 전체를 하나의 커다란 공간에 연속적으로 할당하는 기법

고정 분할 기법

  • 주기억장치가 고정된 파티션으로 미리 분할됨(균등 분할, 비균등 분할)
  • case) 프로세스 크기 > 파티션 고정 크기
    • 프로세스를 모듈 단위로 나누어 디스크와 주기억 장치 사이에서 할당을 제어하는 오버레이 기법이 사용되어야 한다.
  • 내부 단편화 발생

동적 분할 기법

  • 프로세스가 주기억장칭 적재될 때 필요한 만큼 파티션을 동적으로 생성한다.
  • 외부 단편화 발생

불연속 메모리 관리

프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법(하나의 프로세스가 불연속적인 주소공간에 분산되어서 올라가는 관리 방식)

페이징

  • 프로세스를 일정한 크기인 페이지로 잘라서 메모리에 적재하는 방식
  • 논리 메모리(논리 주소 공간)를 일정한 크기로 자른 것 = page(고정 크기 블록)
  • 물리 메모리를 일정한 크기로 자른 것 = frame(고정 크기 블록)
  • 각각의 page는 물리 메모리의 frame과 매핑
  • 외부 단편화 해결, 내부 단편화 발생
  • https://jhnyang.tistory.com/290

페이지 매핑 테이블

  • 중구난방으로 흩어져 있는 page와 frame들을 매핑시키고 프로세스가 정상적으로 수행될 수 있도록 관리하는 테이블
  • 프로세스마다 페이지 테이블을 가지고 있다
  • 페이지 매핑 테이블은 메모리에서 관리된다.(주기억 장치)
  • https://jhnyang.tistory.com/443
  • https://devowen.com/258

TLB

  • 프로세스 실행 중에 하나의 데이터를 접근하려면, 두 번의 기억장치 접근이 필요하다. 이는 속도를 저하시킨다.
    • 이 문제를 해결하기 위해 TLB를 사용한다.
    • TLB : 자주 쓰는 페이지 테이블의 주소를 저장함으로써 속도를 향상시킨다.

논리 주소 → 물리 주소

  • TLB 검색
    • TLB 검색 성공 시 TLB HIT, 즉시 물리 메모리 주소 반환
    • TLB 검색 실패 시 TLB MISS, 논리 주소에 해당하는 물리 메모리 주소가 있는지 페이지 테이블 검색
  • 페이지 테이블 검색
    • 성공시 TLB 업데이트 하고 TLB 검색 다시 진행
    • 실패
      • 논리 메모리 주소 자체가 유효하지 않은 경우
      • 논리 메모리 주소가 물리 메모리에 존재하지 않는 경우
        • 물리 메모리에 공간이 남아 있다면 데이터를 물리 메모리에 로드하고 페이지 테이블과 TLB의 내용을 갱신
        • 물리 메모리에 빈 공간이 남아 있지 않다면 교체 알고리즘을 이용해 기존 프레임과 필요한 프레임을 교체한다. 그리고 페이지 테이블과 TLB의 내용을 갱신한다.
  • http://egloos.zum.com/sweeper/v/2988646

세그멘테이션

  • 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 방법
  • 논리 메모리와 물리 메모리를 다른 크기의 블록(세그먼트로)으로 분할
  • 외부 단편화 발생(압축을 이용하여 해결)

세그먼트 테이블

  • 프로세스마다 세그먼트 테이블을 가지고 있다.
  • 세그먼트 테이블은 기준(세그먼트 시작 주소), 한계(세그먼트 길이) 등으로 구성된다.

논리 주소

프로세스를 실행하면서 CPU에서 만든 주소(가상 주소)

논리 주소 공간

프로세스가 실행하면서 생성되는 모든 논리 주소 집합

가상 메모리란?

프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법이다.

profile
꾸준히 나아가자 🐢

0개의 댓글