여름의 서재

[운영체제] 가상 메모리의 기초 본문

CS/운영체제

[운영체제] 가상 메모리의 기초

엉아_ 2021. 12. 9. 10:46
728x90

💡 가상 메모리의 개요

- 가상 메모리

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

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

 

💡 페이징 기법

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

 

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

: VA = <P, D> -> PA = <F, D>

* VA: 가상 주소, P (페이지), D (페이지의 처음위치에서 해당 주소까지의 거리)

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

 

📌 페이지 테이블 엔트리

: 페이지 테이블의 각각희 한줄. 페이징 기법에서 페이지 테이블 엔트리는 프레임 번호만 가짐. 

 

- 가상 주소를 <P, D>로 변환하는 공식

  • P = 가상주소/한 페이지의 크기 의 몫
  • D = 가상주소/한 페이지의 크기 의 나머지

2. 페이지 테이블 매핑 방식

- 직접 매핑

: 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식. 주소 변환 속도가 빠르지만 메모리가 충분할 때 사용할 수 있음.

 

- 연관 매핑

: 전체 페이지 테이블을 스왑 영역에 두고 페이지 데이블의 일부를 물리 메모리에 가져오는 방식. 물리 메모리에는 일부 페이지만 무작위로 저장되어 있고 그 일부분의 테이블을 변환 색인 버퍼(TLB), 연관 레지스터라고 부름.

  • TLB 히트: 원하는 페이지 번호가 변환 색인 버퍼에 있는 경우
  • TLB 미스: 원하는 페이지 번호가 변확 색인 버퍼에 없는 경우, 스왑 영역에 저장된 직접 매핑 테이블을 사용하여 프레임 번호로 변환한다.

- 집합-연관 매핑

: 연관 매핑의 문제를 개선한 방식으로, 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옴.

📌 디렉터리 테이블

: 해당 묶음이 현재 메모리에 있는지, 스왑 영역에 있는지를 표시하는 테이블. 이 테이블을 살펴보면 전체 테이블을 찾아보지 않아도 TLB 미스를 바로 알 수 있다.

 

- 역매핑

: 위의 세가지 매핑과 달리 물리 메모리의 프레임 번호를 기준으로 테이블을 구성

 

💡 세그먼테이션 기법

: 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용

 

- 세그먼테이션 테이블

  • limit: 세그먼트의 크기를 나타냄, 메모리를 보호하는 역할을 함.
  • address: 물리 메모리상의 시작 주소

📌 트랩

: 프로세스의 크기보다 더 큰 주소에 접근하려고 하면 메모리 관리자는 해당 프로세스를 강제 종료하는데 이때 발생하는 오류.

: 자신의 영역을 벗어나는 주소에 접근하거나 숫자를 0으로 나누는 것과 같이 사용자가 의도치 않게 일으키는 인터럽트

 

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

: 페이징 기법과 세그먼테이션 기법을 혼합하여 메모리 관리를 효율적으로 하는 기법.

: 페이징 기법에 세그먼테이션 테이블을 추가하고, 권한 비트와 같이 중복되는 데이터를 세그먼테이션 테이블로 옮겨옴.

 

- 메모리 접근 권한

: 메모리의 특정 번지에 저장된 데이터를 사용할수 있는 권한. 읽기, 쓰기, 실행, 추가

: 메모리 접근 권한 검사는 가상 주소에서 물리 주소로 주소 변환이 일어날 때마다 시행. 권한이 없으면 트랩 발생

 

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

: 페이지 테이블에 권한 비트가 추가되면 페이지 테이블의 크기가 커진다. 인접한 페이지의 메모리 접근 권한이 같은 경우가 많은데도 불구하고 페이지마다 권한 비트를 설정하여 메모리를 낭비하는 요소가 됨.

-> 세그먼테이션 테이블을 이용해서 해결. 페이지로 분할된 가상 주소 공간에서 서로 관련있는 영역을 하나의 세그먼트로 묶어 세그먼테이션으로 관리.

 

 

Comments