while(1) 작심삼일();

8. 가상 메모리의 기초 본문

CS/operation system

8. 가상 메모리의 기초

hanjongho 2021. 10. 6. 02:35

가상 메모리 : 크기가 다른 물리메모리에서 일관되게 프로세스를 실행하는 기술. (이론적으로는 2^bit 크기)

 

동적주소 변환 : MMU가 관리하는 가상 메모리의 크기(물리 메모리 + 스왑영역)을 실제 메모리의 물리 주소로 변환하는 작업

 

페이지 테이블 : 각 프로세스마다 하나씩 할당되어 있고 운영체제 영역에 포함되어 있음. 가상주소의 각 페이지가 물리 메모리의 어디에 있는지 나타냄. 물리 주소의 영역은 페이지와 구분하기 위해 프레임이라고 함. 페이지 테이블의 크기가 너무 크면 그 만큼 운영체제의 영역이 늘어서 사용자 영역이 줄어들고, 페이지 테이블 또한 스왑영역으로 이동될 수도 있음.

 

페이징(고정 분할 방식) 주소 변환  : 프로세스 크기와 상관없이 같은 크기로 나뉨. 프로세스가 분산될 수 있음. 관리가 수월하나 나눈 크기보다 적은 프로세스가 배치될 경우 자원 낭비. VA = <P, D> (VA = 가상 주소, P = 페이지, D = 페이지 처음부터 해당 주소까지의 거리)

  • VA = <P, D> (VA = 가상 주소, P = 페이지, D = 페이지 처음부터 해당 주소까지의 거리)를 페이지 테이블 매핑 방법을 통해 PA = < F, D> (PA = 실제 물리 주소, F = 프레임) 으로 변환 (ex. 페이지 크기가 10B이고 VA = <3, 2>이 PA = <1, 1> 변환되었다는 것은 가상 주소 32번지가 물리주소 11로 변환) 

페이지 테이블 매핑 방법

  • 직접 매핑 : 모든 페이지 테이블이 물리 메모리에 있는 경우. 페이지 테이블 시작주소가 각 프로세스의 PCB에 있기 때문에 주소 변환이 빠름
  • 연관 매핑 : 모든 페이지 테이블을 스왑 영역에 두고 일부만 물리 메모리로 가져오는 경우. 캐시와 비슷하게 메모리를 절약할 수 있으나, TLB를 다 검색해야 하므로, 성능이 떨어짐
  • 집합 - 연관 매핑 : 연관 매핑과 동일하게 모든 페이지 테이블을 스왑 영역에 두지만, 크기가 같은 페이지 테이블을 묶어서 전체 테이블을 찾아보지 않아도 TLB 미스를 알 수 있음. 위 2가지 매핑의 장점을 합친 방식
  • 역 매핑 : 위 3가지 방식처럼 가상 주소 페이지를 기준으로 프레임 번호를 매핑과 반대로, 물리 메모리의 프레임 번호를 기준으로 어떤 프로세스의 어떤 페이지를 가지고 있는 지 구성. <프레임 번호, 프로세스 아이디, 페이지 번호>로 구성 되어 테이블 크기가 작음. 물론 프로세스 ID 를 다 찾아야하고 없으면 그 이후에 스왑영역에 가야하니때문에 시간이 낭비 됨.

세그먼테이션(가변 분할방식) 주소 변환 : 프로세스 크기에 맞게 메모리가 분할 됨. 한 덩어리로 처리 가능하나 프로세스 종료 시 해당 메모리를 다른 프로세스가 사용할 때 공간이 애매해짐. VA = <S, D> (S = 세그먼트 번호) 세그먼테이션 테이블은 limit, address을 가지고 있음. 페이지 테이블이 작고 단순하지만 외부 단편화 발생으로 인해 메모리 관리가 복잡함

  • 세그먼트 번호(S)를 통해 시작 주소를 알아 낸 후 D를 더해 물리주소를 구하는데 limit을 통해 메모리 범위를 벗어났는지 확인을 함. 벗어나면 트랩이 발생됨

세그먼테이션 - 페이징 : VA = <S, P, D> 가상메모리에서는 세그먼테이션과 페이징의 장점을 모아 혼용한 기법을 사용

  • 페이징 기법에서 페이징 테이블에 메모리 접근 권한 검사까지 진행을 해야하기 때문에 권한 비트가 추가 되는데 더욱 크기가 커짐 → 서로 관련 있는 영역을 세그먼테이션 테이블로 묶어 크기를 줄임 

페이지 테이블의 권한 비트 

  • 접근 비트 : 메모리에 올라온 후 사용된 적 있으면 1
  • 변경 비트 : 메모리에 올라온 후 변경된 적 있으면 1
  • 유효 비트 : 물리 메모리에 있으면 0, 스왑영역에 있으면 1
  • 읽기, 쓰기, 실행 : 메모리 접근 권한 확인 

'CS > operation system' 카테고리의 다른 글

9. 가상 메모리 관리  (0) 2021.10.06
7. 물리 메모리 관리  (0) 2021.10.06
6. 데드락  (0) 2021.10.06
5. 프로세스 동기화  (0) 2021.10.05
4. CPU 스케줄링  (0) 2021.10.05
Comments