10. 가상 메모리의 기초

수진·2021년 12월 7일
0

컴퓨터시스템

목록 보기
7/10

01 가상 메모리

1-1 가상 메모리 시스템

물리 메모리의 크기 상관 없이 프로세스에 커다란 메모리 공간 제공하는 기술

  • 구성: 프로세스가 보는 메모리 영역 + 메모리 관리자가 보는 메모리 영역

  • 메모리에 올라와 있기만 하면 동시에 여러 프로세스를 돌릴 수 있다

  • 메모리 관리자는 필요에 따라 프로세스를 스왑영역으로 올렸다 내렸다. (당장 필요하면 올리고, 아니면 내리고)
    프로세스 입장에서는 모든 데이터가 메모리에 올라와 있다고 여김

  • 가상 메모리 크기 = 물리메모리 + 스왑영역

  • 동적 주소 변환: 가상 주소를 실제 메모리의 물리주소로 변환

가상 메모리와 물리 메모리

1-2 매핑 테이블의 필요성과 역할

메모리 매핑 테이블

메모리 관리자는 가상주소와 물리주소를 일대일 매핑 테이블로 관리

02 페이징 기법

고정 분할 방식
물리 주소 공간을 같은 크기로 나눠 사용
가상주소 -> 0번지부터 시작

페이지: 가상 주소의 분할된 영역
프레임: 물리 주소의 분할된 영역
페이지와 프레임의 크기 같음 (어떤 프레임에도 배치 가능)

2-2 페이징 기법의 주소 변환

가상 주소 VA=<P,D>
VA: 가상주소
P: 페이지 = 가상 주소/페이지 크기
D: 페이지의 처음 위치에서 해당 주소 까지 거리 = 가상주소%페이지 크기

물리 주소 PA=<F,D>
PA: 물리주소 (실제주소)
F: 프레임
D: 프레임의 처음 위치에서 해당 주소까지 거리

D는 그대로 씀(페이지와 프레임의 크기를 똑같이 나눴기 때문)

2-3 페이지 테이블 관리

다수의 프로세스가 있는 페이징 시스템

  • 프로세스 수 증가 -> 페이지 테이블 커짐 -> 프로세스가 쓸 수 있는 메모리 감소(메모리 낭비)
  • 페이지 테이블 크기를 적정하게 유지해야함

물리 메모리 내 페이지 테이블의 구조

  • 페이지 테이블 기준 레지스터: 페이지 테이블 시작 주소 보관
  • 물리 메모리 크기가 작을 때 -> 페이지 테이블의 일부도 스왑영역으로 이동

2-4 페이지 테이블 매핑 방식

직접 매핑

  • 페이지 테이블 전체 -> 물리 메모리의 운영체제 영역에 존재
  • 바로 주소 변환 가능

연관 매핑

  • 페이지 테이블 전체를 스왑 영역에서 관리
  • 물리메모리의 여유 공간 이 작을 때 사용
  • 스왑 영역-> 모든 페이지 테이블 저장
    물리 메모리-> 일부만 (페이지, 프레임 번호 둘다 표시)
  • 메모리 절약
  • 주소 변환 시, 물리 메모리의 페이지 테이블 다 검색
    없으면 스왑 영역 페이지 테이블 검색 (시간낭비 심함)
  • 변환 색인 버퍼(TLB): 테이블의 일부를 무작위로 갖고 있음 -> 모든 TLB를 검색한 수에야 원하는 페이지가 메모리에 없음을 알 수 있음

집합-연관 매핑

연관 매핑 문제점: 메모리에 없으면 모든 테이블을 검색해야함

  • 자른 덩어리 단위로 물리 메모리에 가져옴 (사용자가 데이터를 이용하면 그 다음 데이터를 쓸 확률이 높을 것이라는 가정)
  • 자른 덩어리를 관리하는 페이지 테이블 하나 더 생성(각 묶음의 시작주소)
  • 원하는 페이지 테이블 엔트리가 스왑에 있는지 메모리에 있는지 간단히 파악 가능
  • 가상 주소: VA=<P1, P2, D>
    P1: 디렉터리 테이블에서의 위치(집합 주소)
    P2: 묶음 내에서의 위치(페이지 주소)

역매핑

  • 프레임 번호(물리 메모리)를 기준으로 테이블 구성
  • 프로세스 수 상관 없이 테이블 1개 -> 테이블 크기 작음 -> 메모리 조금 사용
  • 단점: 가상 메모리 접근 시, PID + 페이지 번호 둘 다 찾아야함
  • 테이블: <F, PID, P>
  • 현재 테이블에 원하는 데이터가 없으면 스왑 영역에서 가져옴
  • 페이지 테이블 다 검사 -> 저장장치 접근 (검색 시간 낭비)

03 세그먼테이션

3-1 세그먼테이션 기법의 구현

세그먼테이션 테이블
가변 분할 방식
limit: 세그먼트 크기 (D가 더 클 경우 메모리 오류 출력, 프로세스 종료)
address: 물리 메모리상의 시작 주소
물리 메모리 부족 -> 스왑 사용

04 세그먼테이션-페이징 혼용기법

메모리 접근 권한
권한: 읽기, 쓰기, 실행, 추가

코드 영역, 데이터 영역

VA = <S, P, D>
S: 세그먼트
P: 페이지
D: 거리

05 캐시 매핑

5-1 캐시 직접 매핑

  • 메모리 블록이 캐시로 올라올 때 항상 같은 위치
  • <P,D> -> <tag, bd, D>
    페이지 테이블을 tag(블록 번호)와 bd(block distance)로.
    캐시가 작은데 데이터를 어떻게든 욱여넣기 위함

5-2 캐시 연관 매핑

  • 캐시가 메모리 워드의 주소 전부를 가짐(메모리 워드가 어느 위치에도 자유롭게 올라갈 수 있음)
  • 장점: 캐시 메모리 자유롭게 사용
  • 단점: 캐시 히트/미스 확인을 위해 캐시의 모든 주소를 검색해야함

5-3 캐시 집합-연관 매핑

  • 캐시를 집합으로 나누고 각 집합에 직접 매핑
  • 자리다툼 문제 완화: 같은 끝자리를 가진 캐시 메모리도 K개가 됨(직접매핑 문제)
  • 캐시 히트 여부 바로 확인: 집합 내에서 직접 매핑(연관매핑 문제)
profile
끄적끄적

0개의 댓글