본문 바로가기
CS/운영체제

운영체제 가상 메모리, 개념, 블록 단위 주소 변환, 메모리 호출 기법

by Renechoi 2023. 6. 15.

1. 가상 메모리의 개념 

 

연속 메모리 할당

- 메모리 크기보다 더 큰 기억공간이 필요한 프로세스는 실행불가 

-> 그러한 프로세스도 실행할 수 있게 하는 방법으로 가상 메모리 사용 

 

즉, 아무리 큰 프로세스라도 한 순간에는 사용하는 부분이 작다. 따라서 현재 실행하는 부분만 메모리에 올려서 사용할 수 있게 함. 

 

 

가상메모리 

- 실행 중인 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리

- 현재 필요한 일부만 메모리에 적재 

 

 

보조기억장치에 전체를 저장해놓고 쓰이는 부분을 메모리에 올려서 씀 

이때 실주소라는 것은 메모리에서 쓰이는 주소 

 

가상주소 a이지만 실제 주소는 b이므로 사상이 필요

 

 

사상(mapping)

- 프로세스 실행을 위해 가상주소를 실주소로 변환하는 과정

- 동적 주소변환(DAT): 프로세스가 실행되는 동안 사상 

- 인위적 연속성: 가상주소 공간에서 연속적인 주소가 실주소 공간에서도 연속적일 필요는 없다는 개념 

 

 

 

 

 

2. 블록 단위 주소변환 

 

주소변환 사상표 : 동적 주소 변환을 위한 정보를 가지는 표 

 

주소 변환이 바이트나 워드 단위로 이뤄지면 변환에 필요한 정보량이 너무 많아 비효율적이라는 문제가 생긴다. 

 

 

블록 사상 시스템

- 블록 단위로 주소 변환

- 가상 메모리의 각 블록이 메모리의 어디에 위치하느지 관리

- 가상주소 v = (b,d)

  -> b: 블록 번호

  -> d: 블록의 시작점으로부터의 변위(거리) 

 

 

- 거리를 안다면 실주소 r에 대해서도 b`+d 를 하여 찾을 수 있음 

 

- 블록의 크기는 적절히 정해야 한다. 

 -> 크기가 커질수록 : 사상표 크기 감소, 블록 전송시간 증가, 동시 적재 프로세스 수 감소 

 -> 크기가 작을수록:  사상표 크기 증가, 블록 전송시간 감소, 동시 적재 프로세스 수 증가 

 

= 블록의 크기가 증가할수록 사상표 크기는 감소한다는 것은 큰 블록을 전송할 때 더 많은 데이터를 한 번에 처리하므로, 전체 전송 시간이 줄어들기 때문. 예를 들어, 한 번에 1MB 크기의 블록을 전송하는 것보다 한 번에 4MB 크기의 블록을 전송하는 것이 전체 전송 시간을 줄일 수 있다.  또한 블록이 크면 그만큼 처리하는데 자원이 많이 들 수 있기 때문에 동시 적재 프로세스 수는 감소한다. 

 

 

 

 

블록 구성 방식 

 

페이지: 블록의 크기가 동일 

세그먼트: 블록의 크기가 다를 수 있음 

 

 

페이징 기법 

- 가상 메모리를 페이지 단위로 나누어 관리하는 기법

- 메모리 영역도 페이지와 동일한 크기의 페이지 프레임으로 나눔

  -> 페이지 프레임: 페이지를 담을 수 있는 틀 

 

 

페이지 사상표

- 가상주소를 실주소로 동적 변환할 수 있게 함 

- 페이지 번호에 대한 페이지 프레임 번호 저장 

 

 

 

 

직접 사상에 의한 동적 주소 변환

- 페이지 사상표를 직접 이용 

- 페이지 크기 M = 1024 

 

 

페이지 변환 정보를 연관 메모리에 저장한 연관사상표를 이용 

 

가상주소 v = (3, 8)

실주소 r = 5M + 8 = 5128 

 

- 연간메모리: 모든 것에서 한번에 찾는 것 

 

 

연관/직접 사상에 의한 동적 주소 변환 (같이 사용함)

- 연관 사상표에는 가장 최근에 참조된 페이지만 보관

- 연관 사상표에 없을 때만 직접 사상 이용 

 

 

 

페이징 기법의 특징

- 논리적 의미와 무관한 동일 크기의 페이지로 나눔

- 메모리 보호는 페이지 단위로 이루어짐

- 외부 단편화가 발생하지 않음 (같은 크기이므로)

- 내부 단편화는 가능 

 

 

 

세그먼테이션 기법 

- 가상 메모리를 세그먼트 단위로 나누어 관리

  -> 세그먼트: 논리적 의미에 부합하는 다양한 크기의 블록 

- 세그먼트 사상표를 이용하여 동적 주소 변환 

 

크기가 다르기 때문에 실주소를 정해서 바로 거기에 적재 

 

 

 

세그먼테이션 사상표 

- 세그먼트 번호에 대한 실주소에서의 시작 위치 저장

- 세그먼트 길이는 오버플로우 확인용 

 

 

크기가 다르기 때문에 실주소를 모두 가지고 있어야 함 

 

 

동적 주소 변환 

 

 

 

 

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

- 세그먼테이션 기법의 논리적 장점 + 페이징 기법의 메모리 관리 측면의 장점 

- 가상 메모리를 세그먼트 단위로 분할 후 각 세그먼트를 다시 페이지 단위로 분할

- 메모리는 페이지 프레임으로 분할

- 가상주소 v = (s, p, d) // s= 세그먼트 번호, p = 페이지 번호, d = 페이지 내 변위 

 

 

즉, 

 

 

 

 

동적 주소 변환 

 

 

 

 

가상 주소 (3, 7, 8)에 대해 3번 세그먼트를 찾고 없다면 직접 사상 

 

 

 

3. 메모리 호출 기법 

 

- 어느 시점에 페이지 또는 세그먼트를 메모리에 적재할 것인가를 결정하는 기법

- 페이징 기법에서의 호출기법 종류

  -> 요구 페이지 호출기법

  -> 예상 페이지 호출기법 

 

- 프로세스의 페이지 요구가 있을 때 요구된 페이지를 메모리에 적재하는 방법 

 

 

-> 옮길 페이지 결정에 대한 오버헤드 최소화

-> 적재된 페이지는 실제로 참조됨 

-> 프로세스 시작 시점에는 연속적으로 페이지 부재 발생 

 

 

예상 페이지 호출 기법

- 곧 사용될 것으로 예상되는 페이지를 미리 메모리에 적재하는 방법 

 

-> 예상이 잘못된 경우 시간과 메모리 낭비

-> 프로세스 시작 시점에 적용하면 성능이 개선됨 

 

 

 

 


참고자료: 운영체제(김진욱, 이인복 공저, KNOU press 출판) 

 
 
 
 
반응형