학습 개요
- 가상 메모리는 실제 메모리(주 기억 장치)의 용량보다 더 많은 양의 기억 공간이 필요한 프로그램을 실행할 수 있게 하는 중요한 개념임
- 이러한 동작이 가능하기 위해서는 가상의 커다란 프로세스 기억 공간을 정해진 방법으로 분할하고, 그 중 현재 필요한 부분만 메모리에 적재되도록 해야 함
- 이를 위해 프로세스에 의해 참조되는 주소를 실제 메모리에서 사용하는 주소와 분리하고 필요한 영역을 적절한 시점에 메모리에 적재함
- 이러한 처리를 위한 가상 메모리 관리 기법을 알아보고, 가상 주소와 실 주소 사이의 변환 방법을 학습하고 메모리 호출 기법을 알아봄
학습 목표
- 가상 메모리의 개념과 주소 변환에 대해 설명할 수 있음
- 페이징 기법과 세그먼테이션 기법에서의 주소 변환 과정을 설명할 수 있음
- 요구 페이지 호출 기법과 예상 페이지 호출 기법을 설명할 수 있음
강의록
가상 메모리의 개념
연속 메모리 할당
메모리 크기보다 더 큰 기억 공간이 필요한 프로세스는 실행 불가
가상 메모리
메모리 크기보다 더 큰 기억 공간이 필요한 프로세스도 실행할 수 있게 하는 방법
- 실행 중인 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리
- 현재 필요한 일부만 메모리에 적재
- 현재 실행하고 관련 있는 일부분만 실제 메모리에 올려 실행 가능
- 가상 주소 a를 실 주소 b로 사상해야 함
- 시스템 형태
- 보조 기억 장치에 어떤 특정한 곳에 해당하는 프로세스의 전체 가상 주소 공간 저장되어있음
- 필요할 때마다 일부분만 가져와 실제 메모리 상에 올림
- CPU가 메모리에서 해당 부분 동작 시킴
사상(mapping)
- 프로세스 실행을 위해 가상 주소를 실 주소로 변환하는 과정
- 동적 주소 변환(DAT)
- 프로세스가 실행되는 동안 사상
- 인위적 연속성
가상 주소 공간에서 연속적인 주소가 실 주소 공간에서도 연속적일 필요는 없음
실 주소에서는 위치가 연속적이지 않지만 가상 주소에서는 연속적일 수 있음 → 동적 주소 변환으로 인해 바로 찾을 수 있음
블록 단위 주소 변환
주소 변환
- 주소 변환 사상 표
동적 주소 변환을 위한 정보를 가진 표
- 주소 변환이 바이트나 워드 단위로 이뤄지면 변환에 필요한 정보 량이 너무 많아 비효율적임 → 블록 사상 시스템 사용해 주소 변환
블록 사상 시스템
- 블록 단위로 주소 변환
- 가상 메모리의 각 블록이 메모리의 어디에 위치하는지 관리
- 가상 주소 v = (b, d)
- b: 블록 번호
- d: 블록의 시작 점으로부터의 변위
- 가상 주소 표현
- v라는 가상 주소는 b 블록 안에서 시작 위치로부터 d만큼 떨어져 있는 위치에 존재
- 사상표 b → b’
- 실주소 r은 b’에서 d만큼 떨어져 있는 위치에 존재
- 블록의 크기는 적절히 정해야 함
- 크기가 커질수록
- 사상 표 크기 감소
- 블록 전송 시간 증가, 동시에 적재할 프로세스 수 감소
- 크기가 작아질수록
- 블록 전송 시간 감소, 동시에 적재할 프로세스 수 증가
- 사상 표 크기 증가
- 크기가 커질수록
블록 구성 방식
- 페이지(page)
- 블록의 크기가 동일
- 세그먼트(segment)
- 블록의 크기가 다를 수 있음
페이징 기법
- 가상 메모리를 페이지 단위로 나누어 관리하는 기법
- 메모리 영역도 페이지와 동일한 크기의 페이지 프레임으로 나눔
- 페이지 프레임
- 페이지를 담을 수 있는 틀
- 실제 메모리에 존재하는 페이지 프레임에다 가상 메모리 상에 있는 특정 페이지 적재할 수 있음
- 페이지가 페이지 프레임에 적재 된 정보를 가지고 있어야 함 → 페이지 사상 표
- 페이지 프레임
페이지 사상 표
- 가상 주소를 실 주소로 동적 변환할 수 있게 함
- 페이지 번호에 대한 페이지 프레임 번호 저장
- 페이지 번호를 인덱스로 사용
- 페이지 존재 비트
- 실제 메모리에 적재가 되어있는 페이지인지 체크
- 0
- 페이지가 실제 메모리 프레임에 올려져 있지 않음
- 1
- 페이지가 실제 메모리 프레임에 적재되어 있음
- 보조 기억 장치 주소
- 실제 보조 기억 장치에서의 주소 값
페이징 기법
- 직접 사상에 의한 동적 주소 변환
- 페이지 사상 표를 직접 이용
- 연관 사상 표에 의한 동적 주소 변환
- 페이지 변환 정보를 연관 메모리에 저장한 연관 사상 표를 이용
- 연관 메모리
- 그곳에 저장되어 있는 어떤 데이터들이 있을 때 저장된 값을 가지고 바로 위치를 찾아 액세스 후 값을 볼 수 있는 고속 메모리
- 페이지 번호가 저장 되어 있어 해당 페이지 번호 찾아 빠르게 페이지 프레임 번호 찾을 수 있음
- 연관/직접 사상에 의한 동적 주소 변환
- 연관 사상 표에는 가장 최근에 참조된 페이지만 보관
- 연관 사상 표에 없을 때만 직접 사상 이용
- 3번 페이지가 최근에 사용되었을 경우
- 연관 사상 표에서 3번 페이지 찾음
- 대응 되는 5번 프레임 번호 찾아 실 주소 계산할 수 있음
- 3번 페이지가 최근에 사용되지 않았을 경우
- 연관 사상 표에서 3번 페이지 찾지 못함
- 페이지 사상 표에서 실 주소 계산해야 함
- 해당하는 프로세스의 시작 주소가 b주소라는 것을 어딘가에 보관하고 있음
- 시스템에 많은 프로세스들이 존재하여 페이지 사상 표가 여러 개 존재하기 때문에 페이지 별로 해당하는 사상 표가 시작하는 특정 주소가 필요함
- 페이지 사상 표는 하나의 프로세스 마다 하나씩 존재함
- 찾고자 하는 가상 주소의 페이지 번호 더해 b + 3라는 위치 찾아냄
페이징 기법의 특징
- 논리적 의미와 무관한 동일 크기의 페이지로 나눔
- 메모리 보호는 페이지 단위로 이루어짐
- 외부 단편화가 발생하지 않음
- 내부 단편화는 발생 가능
세그먼테이션 기법
- 가상 메모리를 세그먼트 단위로 나누어 관리하는 기법
- 세그먼트
- 논리적 의미에 부합하는 다양한 크기의 블록
- 세그먼트
- 세그먼트 사상표
- 세그먼트 번호에 대한 실 주소에서의 시작 위치 저장
- 인덱스로 사용
- 세그먼트 길이는 오버플로 확인용
- 세그먼트 번호에 대한 실 주소에서의 시작 위치 저장
동적 주소 변환
페이징/세그먼테이션 혼용 기법
- 세그먼테이션 기법의 논리적 장점 + 페이징 기법의 메모리 관리 측면의 장점
- 가상 메모리를 세그먼트 단위로 분할 후 각 세그먼트를 다시 페이지 단위로 분할
- 메모리는 페이지 프레임으로 분할
- 가상 주소 v = (s, p, d)
- s : 세그먼트 번호
- p : 페이지 번호
- d : 페이지 내 변위
- 세그먼트 사상 표에 각각 저장되어 있는 값들은 각각의 페이지 사상 표의 위치를 가지고 있음
- 세그먼트로 페이지 사상 표를 찾고 그 곳에서 페이지 프레임 번호를 찾아 실제 메모리를 찾음
동적 주소 변환
- 연관 사상 표에 있을 경우
- 세그먼트 번호와 페이지 번호 이용해 연관 사상 표에서 검색
- 3, 7에 대응되는 사상 정보 5 확인
- 5번 페이지 프레임에 변위 값 더해 실제 주소 찾음
- 연관 사상 표에 없을 경우
- 세그먼트 시작 주소 활용 해 세그먼트 값 3 더해 b+3 인덱스를 찾음
- s’ 주소 확인
- 해당 주소 값은 페이지 사상 표의 시작 주소 값
- s’ + 7 값 가지고 실제 주소 찾음
- 연관 사상 표에 있을 경우
메모리 호출 기법
메모리 호출 기법
- 어느 시점에 페이지 또는 세그먼트를 메모리에 적재할 것인가를 결정하는 기법
- 페이징 기법에서의 호출 기법 종류
- 요구 페이지 호출 기법
- 예상 페이지 호출 기법
요구 페이지 호출 기법
프로세스의 페이지 요구가 있을 때 요구 된 페이지를 메모리에 적재하는 방법
예상 페이지 호출 기법
곧 사용될 것으로 예상되는 페이지를 미리 메모리에 적재하는 방법
메모리 호출 기법 비교
- 요구 페이지 호출 기법
- 옮길 페이지 결정에 대한 오버 헤드 최소화
- 적재된 페이지는 실제로 참조됨
- 프로세스 시작 시점에는 연속적으로 페이지 부재 발생
- 예상 페이지 호출 기법
- 예상이 잘못된 경우 시간과 메모리 공간 낭비
- 프로세스 시작 시점에 적용하면 성능이 개선됨
정리 하기
- 가상 메모리는 메모리 크기보다 더 큰 기억 공간을 사용하는 프로세스를 실행할 수 있음
- 프로세스에서 사용 되는 가상 주소는 동적 주소 변환을 통해 메모리의 실 주소로 변환 됨
- 연속적인 가상 주소가 실 주소 공간에서도 연속적일 필요는 없음
- 페이징 기법은 페이지라는 고정 된 크기의 블록 단위로 기억 장치를 관리하는 기법임
- 세그먼테이션 기법은 모듈화에 따른 논리적 의미에 부합하는 다양한 크기의 세그먼트 단위로 기억 장치를 관리하는 기법임
- 요구 페이지 호출 기법은 페이지가 필요한 시점에 메모리에 적재하는 방법임
- 예상 페이지 호출 기법은 앞으로 사용 될 것으로 예쌍 되는 페이지를 미리 메모리에 적재하는 방법임