본문 바로가기
운영체제

[운영체제] 운영체제 부숴버리기 (4) 가상메모리, 페이징 기법, 세그먼트 기법

by windy7271 2024. 6. 16.
728x90
반응형

가상 메모리란 프로그램이 혼자 메모리를 사용하는 것처럼 메모리를 가상화한 것을 말한다

 

연속메모리 할당은 메모리 크기보다 더 큰 기억공간이 필요한 프로세스는 실행 불가하다.

그럴때 가능하게 하는 방법이 가상 메모리이다. 

 

실행중인 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리한다. 현재 필요한 일부만 메모리에 적재한다.

 

 

 

프로세스 입장에서는 a이지만 실제 메모리상에서는 b 라는 주소로 처리하게 된다.

그래서 주소 a 를 주소 b로 사상해줘야할 필요가 있다. 즉 바꿔준다고 생각하면 된다.

 

사상 

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

 

가상주소공간 에서 실주소 공간으로 변환할때 주소변환 기법을 사용해야한다.

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

  • 인위적 연속성인 특징을 가진다.
  • 가상주소 공간에서 연속적인 주소가 실주소 공간에서도 연속적인 필요는 없다.

 

블록 단위 주소변환

1. 주소 변환 사상표 : 동적 주소 변환을 위한 정보를 저장한다. 즉 HashMap 

  • 주소변환이 바이트나 원드 단위로 이뤄지면 변환에 필요한 정보량이 너무 많아 비효율적이다.

위 단점을 해결하고자 나온 시스템이 블록 사상 시스템

  • 블록 단위로 주소변환
  • 가상 메모리의 각 블록이 메모리의 어디에 위치하는지 관리

 

블록으로 b가 b' 으로 매핑할때 사상표에는 

블록 b가 b' 을 가르키도록 사상표를 가지면 된다.

가상주소는 v = (b,d) 라고 표현한다.

이렇게 되면 b는 b' 를 가르키게 되고 

b' 와 거리 d를 사용해서 r을 구할 수 있다.

 

V = (블록번호, 블록 시작점부터의 변위)

 

블록의 크기는 적절하게 정해줘야한다.

블록의 크기커질수록 사상표의 크기감소하고, 블록의 전송시간증가, 동시에 적재할 프로세스 수 가 감소한다.

 

블록 구성방식 

페이징 기법 : 가상메모리 블록의 크기가 동일 , 

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

더보기

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

페이징 표현 방법

페이징 사상표 중 1 row

3 : 페이지 번호

1:  페이지 존배비트 (실제 메모리상에 존재하느냐)

s : 보조기억장치 주소  

5 : 페이지 프레임 번호

 

 

가상메모리 블록의 크기가 다름 : 세그먼트

 

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

직접사상: 페이지 사상표를 직접 이용한다.

 

ex ) 페이지 크기 M = 1024 , v= (3,8)이면

= 000011 0000001000

앞에는 페이지번호, 뒤에는 크기.

3번 찾아가고 

앞에 1이면 적재되어 있다 > 몇번 프레임에 ?? -> 5번 페이지 프레임

실주소 = r = 5M + 8

000101 00000010000

 

연관사상에 의한 동적 주소변환

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

- 연관사상표 - 

페이지 번호 페이지프레임번호
1 2
2 5
3 4

 

가상주소 v = (3,8)

000011 0000001000

순차적으로 하지 않고 동시에 한 번에 살펴볼 수 있다는 장점이 있다.

 

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

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

연관 사상표에 없을때만 직접사상을 이용한다.

 

페이징 기법의 특징 

  • 논리적 의미와 무관 한 동일 크기의 페이지로 나뉜다.
  • 메모리 보호는 페이지 단위로 이루어진다.
  • 왼부 단편화 발생 x 내부 단편화 발생 가능

 

반응형

댓글