운영체제

8.가상 메모리 기초

J개발자 2020. 12. 2. 00:01

가상메모리는 물리(실제) 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술이다.

현대 메모리 관리의 가장 큰 특징이라 할 수 있다.

가상 메모리 시스템의 모든 플로세스는 자신이 메모리의 어느 위치에 있든 상관없이 0번지 부터 연속된 메모리 공간을 가지는데 논리 주소와 유사해 보이지만 논리 주소는 물리 메모리 주소공간에 비례하고 가상 주소는 가상의 주소 공간을 가진다는 차이점이 있다.

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


1.

메모리 관리자는 물리 메모리와 스왑영역을 합쳐서 프로세스가 사용하는 가상 주소를 실제 메모리의 물리 주소로 변환하는데 이러한 작업을 동적 주소 변환(DAT)라고 한다. 이 작업을 거치면 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치 가능하다. 메모리 관리자는 물리 메모리를 어떤 방법으로 나누고 사용자 프로세스를 어디에 배치하고, 부족한 공간을 어떻게 처리할지 복잡한 문제를 처리한다.

 

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

 

  • 매핑 테이블

가상 주소가 물리 메모리 어느 위치에 있는지를 알 수 있는 것이다.

매핑 테이블을 작성하면 가상 메모리 시스템에서 가상 주소는 실제로 물리 주소나 스왑영역 중 한 곳에 위치하며, 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리할 수 있게 된다.

매핑 테이블은 물리 메모리가 세그먼테이션으로 분할될 경우뿐 아니라 페이징 분할 경우도 똑같은 방식으로 적용된다.

(페이지 매핑 테이블,세그먼테이션 매핑 테이블)


 

 2.

페이징 기법: 고정 분할 방식으로 메모리 분할하여 관리하는 기법으로 물리 주소 공간을 같은 크기로 나누어 사용한다.

 

페이지 프레임
0 2
1 3
2 4
3 1

가상주소     물리주소

 

  • 페이징 기법의 주소 변환

가상 주소:   VA =<P,D>     P:페이지, D:페이지의 처음 위치에 해당 주소까지의 거리:오프셋(변위).

VA = <P,D>  → PA = <F,D>  이 과정에서 페이지 테이블을 이용하는 것이다.

 

P = (가상주소/한 페이지의 크기)의 몫

D = (가상 주소/한 페이지의 크기)의 나머지

 

  • 페이지 테이블 관리: 관리가 복잡한 이유는 시스템에 여러 개의 프로세스가 존재하고 프로세스마다 페이지 테이블이 하나씩 있기 때문이다.메모리 관리자는 특정프로세스가 실행될 때마다 해당 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환하는 작업을 반복한다.  자료 구조를 자주 사용하기 때문에 빨리 접근가능한 운영체제 영역의 일부분에 모아 놓는다.  페이지 테이블의 크기가 꽤 크기 때문에 크기를 적정하게 유지하는 것이 관리의 핵심이다.

<물리 메모리>

페이지 테이블A
페이지 테이블B
:
:
운영체제 영역
(페이지 테이블영역이 일부 포함)
프레임0
:
:
프레임n
사용자 영역

각 프로세스가 메모리에 접근하려고 할 때 메모리 관리자는 페이지 테이블의 위치를 재빨리 파악해야 하므로 각 페이지 테이블 시작 주소페이지 테이블 기준 레지스터(PTBR)에 보관한다.

 

  • 페이지 테이블 매핑

페이지 테이블이 위치한 곳에 따른 다양한 방식이 존재한다. 페이지 테이블이 운영체제 영역에만 있는 것이아니라 프로세스가 스왑으로 쫓겨날(이동)시 일부 같이 이동가능하기 때문이다.

 

직접 매핑 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재
연관 매핑 페이지 테이블 전체를 스왑 영역저장하고 일부만 물리 메모리에 갖고 스왑영역이 관리(프레임,페이지 번호 모두 표기→주소 변환 시 검색을 위해시간 낭비)
집합-연관 매핑 연관 매핑과 같은 원리에서 테이블을 일정 집합으로 자르고 덩어리 단위로 물리 메모리에 가져온다.(물리 메모리의 테이블 검사 필요 없어 시간 단축)
역매핑 물리 메모리의 프레임 번호를 기준으로 테이블 구성한다.(페이지와 프레임이 바뀌는 것)
프로세스의 수와 상관없이 테이블이 하나만 존재.
단, 프로세스 아이디와 페이지 번호 모두 검색 필요.
  • 연관매핑은 물리 메모리에 일부 페이지만 무작위로 저장되어 그 일부분을 변환색인버퍼(TLB) = 연관레지스터 라고 부른다. 캐시 시스템과 유사한 원리를 가지고 있다.(TLB hit/TLB miss)
  • 집합연관매핑은 디렉터리 매핑이라고도 한다. 일반적으로 컴퓨터를 사용할 때 파일이 많으면 디렉터리를 사용해 묶기 때문이다.(멀티 페이지 매핑이라고도함.)
  • 역매핑은<프레임번호,프로세스아이디,페이지번호>로 테이블이 구성되고 크기가 제일 작다. 연관매핑과 마찬가지로 페이지 테이블을 다 검사한 후 저장장치에 접근하기 때문에 검색시간 낭비라는 단점을 같고 있다.

 


3.

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

앞에서 페이징 기법은 메모리를 같은 크기의 페이지 단위 분할하여 크기 정보를 유지할 필요 없지만 세그먼테이션 기법은 크기 따라 메모리를 분할하여 정보를 포함한다.

이 기법도 물리 메모리 부족시 스왑영역을 사용한다.

가변 분할 방식이기 때문에 페이지 작고 단순하다는 장점과 외부 단편화 발생으로 인한 관리 복잡의 단점이 있다.

 

가상 주소: VA = <S,D>  S:세그먼트 번호, D:세그먼트 시작~해당 주소 거리

  

① 먼저 가상 주소 구한다. VA = <0,32>

② 세그먼테이션 테이블에서 세그먼트 0의 시작 주소를 알아낸 후 시작 주소 120에 거리 32를 더하여 152 번지를 구한다. 메모리 관리자는 거리가 세그먼트 크기보다 큰지 점건하고 크면 오류를 출력(trap)하고 아니면 물리 주소를 구한다.

③ 물리 주소 152번지에 접근하여 원하는 데이터 읽고 쓴다.

 

4.

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

 

권한 비트
:
:
프레임 번호
:
:

 

각 기법의 장점만 취한 메모리 관리 기법으로 메모리 접근 권한(코드영역/데이터 영역)까지 고료하여 페이지 테이블을 나타낸 것으로 테이블의 모든 행에는 접근 권한 관련 비트가 추가된다. 권한비트를 설정하여 테이블이 커지는 것을 해결한다.  해당 페이지 테이블의 시작 주소가 기록되어 있어 가상 주소 접근 시 세그먼테이션 테이블을 통과하면 페이지 테이블을 이용하여 가상 주소가 물리 주소로 변환된다.

만약 원하는 페이지가 물리 멤모리에 없으면 스왑영역에서 해당 페이지를 가져온다.

유닉스 운영체제의 경우 데이터의 소유 권한과 접근 권한이 같이 명시되어 있다. 어떤 파일이든 소유자가 지닌 권한 외에 자신이 속한 그룹이 지닌 권한, 자신의 그룹이 속하지 않은 다른 권한이 명시되어있다.

 


5.

 캐시 직접 매핑: 페이징 기법과 마찬가지로 일정 크기로 나뉘지만  Tag(태그)가 있어 메모리의 페이지가 캐시의 같은 위치에 올라오므로 태그만 확인하면 캐시 히트나 캐시 미스를 빠르게 확인 가능하다는 것이 추가된다. 캐시는 메모리 보다 작고 태그란 캐시에 블록 번호를 명시된 것이다.

캐시 연관 매핑

캐시 집합-연관 매핑

'운영체제' 카테고리의 다른 글

9.가상 메모리 관리  (0) 2020.12.02
7.물리 메모리 관리  (0) 2020.11.30
10.저장장치 관리  (0) 2020.11.14
3.프로세스와 스레드  (0) 2020.09.23
4.CPU스케줄링  (0) 2020.09.23