티스토리 뷰

반응형

가상 메모리

크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술이다. 매번 메모리 크기를 고려하며 프로그래밍하는 것은 어려운 일이다. 가상 메모리를 사용하면 메모리 크기를 신경 쓰지 않고 프로그래밍을 할 수 있게 해 준다.

 

*가상 메모리 시스템

 물리 메모리의 크기와 상관없이 커다란 메모리 공간을 제공해준다.

 


 

가상 메모리의 크기와 주소

가상 메모리의 크기

이론적으로 가상 메모리는 무한대의 크기이다. 그렇지만 실제로 가상 메모리의 최대 크기는 그 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정되며 CPU의 비트에 따라 결정된다.

 

💫 가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기

     ☞ 물리 메모리 + 스왑 영역

 

가상 메모리의 주소

가상 메모리 시스템의 모든 프로세스는 물리 메모리와 별개로 자신이 메모리의 어느 위치에 있는지 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가진다.

 

💫 동적 주소 변환

     ☞ 가상 주소를 실제 메모리의 물리 주소로 변환 

 

◼ 가상 메모리의 메모리 분할 방식

  1. 세그먼테이션 기법 (가변 분할 방식)
  2. 페이징 기법 (고정 분할 방식)
  3. 세그먼테이션 - 페이징 혼용 기법

 

구분 가상메모리 물리메모리
최대 메모리 크기 CPU 비트값에 의존 CPU 비트값에 의존
메모리 분할 방식 세그멘테이션 가변 분할 방식
페이징 고정 분할 방식
세그멘테이션-페이징 혼용
주소 지정 방식 가상 주소 절대 주소, 상대 주소

 

매핑 테이블

가상 메모리, 물리 메모리 매칭을 위해 매핑 테이블이 전제가 되어야 한다.

가상 주소와 물리 주소를 일대일 매핑 테이블로 관리한다.

 

논리적 변환을 할 때 자주 이용한다.

 


 

페이징 기법

고정 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 주소 공간을 같은 크기로 나눠 사용한다.

 

 

 

 

☞ 가상 주소의 분할된 각 영역은 페이지라 한다.

☞ 물리 메모리의 영역은 프레임이라 한다.

 

🔎 주소 변환 과정

예를 들어 프로세스가 30번지의 내용을 읽으려고 할 때의 주소 변환 과정은 다음과 같다.

 

  1. 가상 주소 30번지가 어느 페이지에 있는지 찾는다.
  2. 페이지 테이블의 페이지 3에서 해당 페이지가 프레임 1에 있다는 것을 알아낸다.
  3. 물리 메모리 프레임 1의 0번 위치에 접근 (이 주소가 가상 주소 30번지의 물리 주소)

 

🔎 정형화된 주소 변환

가상 주소를 VA = <P, D>로 표현한다.

☞ VA는 가상 주소

☞ P는 페이지

☞ D는 페이지 처음 위치에서 해당 주소까지의 거리

 

🎈 페이징 기법의 주소 변환 과정

VA = <P,D> ➡ PA = <F,D>

 

페이지 테이블

시스템 내에는 여러 개의 프로세스가 존재하고, 각 프로세스는 하나의 페이지 테이블을 가지며, 페이지 테이블은 운영체제 영역에 있다. 따라서 페이지 테이블의 크기가 너무 커지면 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어든다.

 

페이지 테이블 전체를 메모리에서 관리하느냐, 일부를 스왑 영역에서 관리하느냐에 따라 가상 주소를 물리 주소로 변환하는 방법이 달라진다. 그 방법에 대해 알아보자.

 

💨테이블 매핑 방식

  1. 직접 매핑
  2. 연관 매핑
  3. 집합-연관 매핑
  4. 역 매핑

1️⃣ 직접 매핑

페이지 테이블 전체가 운영체제 영역에 있는 경우 직접 매핑을 진행한다.

 

- 이 경우 별다른 부가 작업 없이 바로 주소 변환이 가능하여 직접 매핑이라고 한다

- 변환 속도가 가장 빠르다

- 페이지 테이블의 시작 주소는 페이지 테이블 기준 레지스터(PTBR)가 가지고 있다

 

2️⃣ 연관 매핑

페이지 테이블 전부를 스왑 영역에서 관리하는 경우 연관 매핑을 진행한다.

 

- 일부 테이블만 무작위로 물리 메모리에 가져오는 방식이다

- 원하는 프레임 번호가 있다면 페이지 테이블을 다 검색해야 한다

- 캐시 시스템과 매우 유사하다

 

3️⃣ 집합-연관 매핑

연관 매핑의 문제를 개선한 방식으로 페이지 테이블을 하나 더 생성한다.

 

- 일정한 묶음으로 모아놓아 디렉터리 매핑이라고도 부른다

- 전체 테이블은 스왑 영역에 존재한다

- 일부 테이블은 묶음 단위로 메모리에 존재한다

 

4️⃣ 역 매핑

앞 세 가지 매핑과 반대로 페이지 테이블을 구성하는 방식이다.

 

- 앞 세 가지(직접, 연관, 집합-연관) 매핑에선 페이지 번호를 기준으로 테이블 구성

- 역 매핑에서는 물리 메모리의 프레임 번호를 기준으로 테이블 구성

- 실제 프레임 수와 행의 수가 같다

 


 

세그먼테이션 기법

가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용한다. 세그먼테이션 기법에서도 물리 메모리가 부족할 때 스왑 영역을 사용한다.

 

가상 주소 VA = <S, D>

 

📗위 그림에서 프로세스 A의 32번지에 접근할 때 주소 변환 과정

  1. VA = <0, 32>
  2. 시작 주소 120에 거리 32를 더하면 물리 주소 152
  3. 152가 세그먼트 크기보다 큰지 점검 (크면 오류 출력, 크지 않다면 물리 주소 구한다)
  4. 물리 주소 152번지에 접근하여 원하는 데이터를 읽거나 쓴다

 


 

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

세그먼테이션 기법의 페이지 테이블 크기를 작게 유지하는 장점과 페이징의 수월한 메모리 관리 기법인 물리 메모리를 같은 크기로 나누어 관리하는 장점을 합친 가상 메모리 관리 기법이다.

 

가상 주소 VA = <S, P, D>

 

📗세그먼테이션-페이징 혼용 기법에서 가상 주소를 물리 주소로 변환하는 과정

  1. 가상 주소 VA = <S, P, D>를 구한다.
  2. 영역 검사, 권한 검사 등을 진행한다. 범위 밖일 시 오류 출력, 범위 안이면 연결된 페이지 테이블로 이동
  3. 페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지 찾는다.
    프레임 존재 -> 메모리 접근, 프레임 존재 X -> 스왑 영역으로 가서 해당 페이지를 물리 메모리로 가져온다.
  4. 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 쓴다.

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함