선릉역 1번 출구

메모리 관리_가상 메모리의 기초 본문

Computer/Operating system

메모리 관리_가상 메모리의 기초

choideu 2022. 1. 8. 17:12

가상 메모리의 기초

가상 메모리의 개요

1) 가상 메모리 시스템

가상 메모리란 크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술임 = 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술

 

현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원한다는 것임

논리 주소는 주소 공간에 비례하고, 가상 주소는 물리 메모리 공간이 아닌 가상의 주소 공간을 가짐

이론적으로 가상 메모리의 크기는 무한대이지만, 실제로 최대 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정됨 -> 가상 메모리가 가지는 최대 크기의 제약에도 불구하고 가상 메모리는 물리 메모리의 내용 중 일부를 하드디스크의 일부 공간인 스왑 영역으로 옮겨 물리 메모리의 부족한 부분을 보충함

동적 주소 변환: 물리 메모리와 스왑 영역을 합쳐 프로세스가 사용하는 가상 주소를 실제 메모리의 물리 주소로 변환하는 것

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

[프로그램이 실행되기 위해서는 주기억장치로 들어가야 하는데, 실행될 프로그램이 주기억장치보다 크거나 여러 개인 경우에는 주기억장치 공간의 부족으로 인해 프로그램이 제대로 실행되지 못할 수 있다. 그래서 당장 실행에 필요한 부분만 주기억장치에 저장하고, 나머지는 보조기억장치에 두고 동작하도록 하여 이런 문제를 해결할 수 있는데, 이런 개념을 가상 메모리라 하며 운영체제에서 지원한다.]

 

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

매핑 테이블: 메모리를 관리할 때 사용하는 것

가상 메모리 시스템에서 가상 주소는 물리 주소나 스왑 영역 중 한 곳에 위치하고, 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리함

페이지 매핑 테이블: 페이징 기법에서 사용하는 매핑 테이블

세그먼테이션 매핑 테이블 : 세그먼테이션 기법에서 사용하는 매핑 테이블

페이징 기법

1) 페이징 기법의 구현

페이지: 가상 주소의 분할된 각 영역을 부르는 말

프레임: 가상 주소의 페이지와 구분하기 위해 물리 주소의 각 영역을 부르는 말

페이지 크기 = 프레임 크기

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

*Invalid는 swap area를 의미함

 

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

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

VA: virtual address

PA: physical address

P: Page

F: Frame

D: Distance

앞서 본 페이지 테이블의 한 행을 페이지 테이블 엔트리(PTE)라고 함

 

3) 페이지 테이블 관리

페이지 테이블 관리가 복잡한 이유는 시스템에 여러 개의 프로세스가 존재하고 프로세스마다 페이지 테이블이 하나씩 있기 때문임 -> 프로세스는 메모리에 올라와야 실행이 가능하기 때문에 모든 프로세스의 일부 프로세스가 물리 메모리의 프레임에 올라와 있고 어떤 페이지가 어떤 프레임에 있는지 관리하기 위해 프로세스마다 페이지 테이블이 존재함

 

페이지 테이블의 경우 빨리 접근해야하는 자료 구조이기 때문에 물리 메모리 영역 중 운영체제 영역에 존재하는데, 프로세스 수가 많을 수록 페이지 테이블의 크기도 커지기 때문에 프로세스가 사용할 수 있는 영역이 줄어듦

 

물리 메모리의 크기가 작을 때는 페이지 테이블도 스왑 영역에 옮겨짐

 

페이지 테이블 접근을 빠르게 하기 위해 Page Table Base Register를 사용해 각 페이지 테이블의 시작 주소를 보관함

PTBR는 각 프로세스의 PCB에 저장되는 데이터로, 물리 메모리 내에 페이지 테이블의 시작주소를 가지고 있음

 

4) 페이지 테이블 매핑 방식

1. 직접 매핑

페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식

2. 연관 매핑

물리 공간이 작을 때 사용하는 방식으로 모든 페이지 테이블을 저장장치의 스왑 영역에서 관리하고 그 중 일부만 물리 메모리에 가지고 있음

일부 내용만을 무작위로 가져오기 때문에 페이지 테이블의 열이 2개임(페이지, 프레임)

3. 집합-연관 매핑

연관 매핑의 문제를 개선한 방식으로 모든 페이지 테이블을 스왑 영역에서 관리하고 일ㄹ부만 물리 메모리로 가져온다는 것은 동일하지만 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옴

4. 역매핑

1~3과 다르게 물리 메모리의 프레임 번호를 기준으로 테이블을 구성함 

물리 메모리의 프레임에 어떤 프로세스의 어떤 페이지가 올라와 있는지를 표시함

프로세스의 수와 상관없이 테이블이 하나만 존재해 테이블의 크기가 매우 작다는 것이 장점이지만 프로세스가 가상 메모리에 접근할 때 프로세스 아이디와 페이지 번호를 모두 찾아야 하는 단점이 있음 또 프로세스가 페이지에 없다면 페이지를 모두 검색한 후에야 스왑 영역에 있다는 것을 알게 되기 때문에 속도가 매우 느림

 

세그먼테이션 기법

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

물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용함

세그먼테이션 테이블: 매핑 테이블

 

2) 세그먼테이션 기법의 주소 변환

VA = <S,D>

S: segment number

trap: 사용자가 사용하겠다고 선언한 프로세스의 크기보다 더 큰 주소에 접근하려고 할 때 메모리 관리자가 해당 프로세스를 강제 종료하는데, 이때 사용하는 오류

 

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

1) 메모리 접근 권한

메모리 접근 권힌: 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한

읽기/쓰기/실행/추가 권한이 있고 추가 권한은 쓰기 권한이 항상 동반되어야 하기 때문에 같이 취급해 총 8가지 경우의 수가 나옴

 

메모리 접근 권한 검사는 가상 주소에서 물리 주소로 주소 변환이 일어날 때마다 시행됨

ex) 읽기만 가능한 메모리 영역에 쓰기를 하려고 하면 메모리 오류인 트랩이 발생함

 

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

페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트가 추가됨

즉 메모리 관리자는 주소 변환이 발생할 때마다 테이지 테이블의 권한 비트를 이용해 유용한 접근인지를 판단함

 

그러나 페이지 별로 권한 비트를 추가하면 사이즈가 커지게 되는데 이는 세그먼테이션 테이블을 이용해 해결가능함

-> 페이지로 분할된 가상 주소 공간에서 서로 관련 있는 영역을 하나의 세그먼트로 묶어 세그먼테이션 테이블로 관리하고, 각 세그먼트를 구성하는 페이지를 해당 페이지 테이블로 관리하는 방식임

 

세그먼테이션-페이징 혼용기법은 현재 대부분의 운영체제가 채택하고 있는 방식임

 

3) 세그먼테이션-페이징 혼용 기법의 주소 변환

https://velog.io/@thalals/OS-8.%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9D%98-%EA%B8%B0%EC%B4%88#3-%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%85%8C%EC%9D%B4%EC%85%98---%ED%8E%98%EC%9D%B4%EC%A7%95-%ED%98%BC%EC%9A%A9-%EA%B8%B0%EB%B2%95%EC%9D%98-%EC%A3%BC%EC%86%8C-%EB%B3%80%ED%99%98 참고

'Computer > Operating system' 카테고리의 다른 글

window registry  (0) 2022.10.04
window OS structure  (0) 2022.10.04
메모리 관리_물리 메모리 관리  (0) 2022.01.08
Operating system(2)-2  (0) 2021.12.18
Operating system(2)-1  (0) 2021.12.18
Comments