조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 개요
- 메모리의 크기는 컴퓨터마다 다름
- OS가 물리 메모리의 크기에 의존한다면 메모리 크기별로 프로그램이 동작하지 않을 수 있음
가상 메모리
- 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술
- 프로세스는 운영체제가 어디있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용할 수 있음
프로세스 가상 주소
- 0번지부터 시작하는 연속된 메모리 공간을 가짐 (자신이 어느 위치에 있는지 상관 X)
메모리 관리자
- 스왑 영역: 물리 메모리의 부족한 부분을 스왑 영역으로 보충
- 동적 주소 변환: 물리 메모리와 스왑 영역을 합쳐 프로세스가 사용하는 가상 주소를 실제 메모리의 물리 주소로 변환함
메모리 분할 방식
- 운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당함
- 세그먼테이션, 페이징, 세그먼테이션-페이징 혼용
매핑 테이블
- 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리함
2. 페이징 기법
구현
- 고정 분할 방식을 이용한 가상 메모리 관리 기법
- 물리 주소 공간을 같은 크기로 나누어 사용함
페이지
- 페이지 단위라 부르며, 0번부터 번호를 매겨 관리함
- 페이지당 프레임이라는 물리 주소의 단위로 매핑됨
- 페이지와 프레임의 크기는 같음
페이지 테이블
- 특정 페이지에 매핑된 프레임 정보는 페이지 테이블에 담겨있음
- 프레임이 스왑 영역에 있을 경우, invalid라고 표시됨
주소 변환
과정
- 가상 주소 x번지가 어느 페이지에 해당하는지 찾기
- 페이지 테이블의 페이지 y로 가서 해당 페이지의 프레임 찾기
- 물리 메모리 프레임 y의 (x번지 % 페이지 크기) 번째 위치에 접근
페이지 테이블 관리
- 페이지 테이블은 운영체제 영역에 존재함
- 어떤 페이지가 어떤 프레임에 있는지 관리하기 위해 프로세스마다 페이지 테이블을 운영함
- 프로세스 수에 따라 페이지 테이블이 생겨나고, 페이지 테이블의 크기가 커지면 이를 저장하기 위한 메모리 자원이 많이 필요
- 페이지 테이블 용량이 커질수록, 실제 사용할 수 있는 영역이 줄어듬
- 페이지 테이블의 크기를 적정하게 유지하는 것이 중요
PTBR
- 각 프로세스의 PCB에 저장되는 데이터
- 물리 메모리 내에 페이지 테이블의 시작 주소를 가지고 있음
페이지 테이블 매핑 방식
- 사용할 수 있는 물리 메모리 영역이 적을 경우, 페이지 테이블의 일부도 스왑 영역으로 옮겨짐
- 전체를 메모리에 관리할 경우와 일부를 스왑 영역에서 관리할 경우, 가상 주소를 물리 주소로 변환하는 방법이 달라짐
직접 매핑
- 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 상주
- 장점
- 주소 변환이 빠름
- 단점
- 메모리를 많이 차지
연관 매핑
- 페이지 테이블 전체를 스왑 영역에 저장
- 무작위로 일부만 물리 메모리에 로드하여 사용
- 변환 색인 버퍼 (연관 레지스터)
- 일부 로드된 페이지 테이블
- 장점
- 메모리 사용량이 효율적
- 단점
- 물리 메모리 내의 페이지 테이블을 다 검색해야 함
- 이렇게 해도 원하는 프레임 번호를 번호를 얻지 못하면 스왑 영역에 있는 페이지 테이블을 검색함
집합-연관 매핑
- 페이지 테이블을 일정한 크기의 디렉토리로 나누어 관리
- 연관 매핑의 문제를 개선한 방식
- 스왑 영역에서 무작위로 물리 메모리에 로드 X
- 디렉토리 테이블
- 같은 크기의 여러 묶음으로 나눔 (디렉토리 단위)
- 현재 메모리에 로드된 집합을 표시
역매핑
- 물리 메모리의 프레임 번호를 기준으로 테이블 구성
- 페이지 넘버를 기준으로 구성 X
- 프레임 1 -> 페이지 0으로 매핑됨
- 현재 어떤 프레임이 메모리에 올라와있는지 표시
- 장점
- 프로세스의 수와 상관없이 테이블이 하나만 존재함
- 단점
- 원하는 PID, page를 전체 스캔해서 찾아야 함
3. 세그먼테이션 기법
- 프로세스의 크기에 따라 메모리를 분할
구현
- 매핑 테이블을 사용함
- 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안됨 (limit 컬럼 사용)
- 스왑 영역을 사용할 경우 address 컬럼에 'I'로 표시함
주소 변환
- 가상 주소에 따른 물리 주소를 구함
- 해당 물리주소에서 쓰고자 하는 데이터가 범위에 넘어가는지 검사
- 물리 주소에 접근하여 원하는 데이터를 읽거나 씀
4. 세그먼테이션 - 페이징 기법
메모리 접근 권한
코드 영역
- 읽기 및 실행 권한
데이터 영역
- 읽기 및 쓰기
세그먼테이션 - 페이징 혼용 기법의 도입
권한 비트가 같은 영역을 세그먼테이션 테이블로 관리
- 페이지마다 접근 권한이 다름
- 페이지 테이블의 모든 행에는 권한 비트가 추가됨
- 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트로 적절한 접근인지 확인함
- 인접한 페이지에는 권한이 같은 페이지가 많은데, 중복적인 값이 많아 메모리를 낭비하게 됨
- 이러한 문제를 해결하기 위해 세그먼테이션 테이블을 이용함
세그먼테이션 - 페이징 혼용 기법의 주소 변환
- 순수 페이징 기법을 사용하면 중복되는 데이터로 페이지 테이블이 커지므로 혼합하여 사용함
5. 캐시 매핑 기법
캐시 직접 매핑
block
- 메모리의 페이지 수를 캐시의 페이지 수로 나눔
- 하나의 단위를 블록이라 함
- 메모리의 블록이 캐시로 올라올 때 항상 같은 위치에 올라옴
- 메모리의 어떤 블록에서 올라온 페이지인지만 확인하면 됨
tag
- 캐시의 블록 번호
block distance
- 블록에서의 거리
- 올라가야 할 캐시의 위치 정보
장점
- 태그만 확인하면 캐시 히트나 캐시 미스를 빠르게 확인할 수 있음
단점
- 메모리 블록이 정해진 캐시 블록에만 매핑됨
- 여러 메모리 블록이 같은 캐시 블록을 공유할 때 자리다툼 문제가 발생함
- 서로 다른 메모리 블록들이 같은 캐시 블록을 공유해야 할 경우, 자주 덮어씌워짐
캐시 연관 매핑
- 메모리 워드가 캐시 메모리를 자유롭게 사용할 수 있음
- 캐시가 메모리 워드의 주소를 전부 가지고 있음
- 자리를 고정하지 않고 필요한 블록을 선택할 수 있음
단점
- 캐시 히트인지 캐시 미스인지 확인하기 위해 캐시의 모든 주소를 검색해야 함
캐시 집합-연관 매핑
- 캐시를 K개의 집합으로 나누고 각 집합에 직접 매핑을 사용함
- 각 집합에는 직접 매핑과 같이 자리를 가지도록 설정함
장점
- 자리다툼 문제가 완화됨
'OS' 카테고리의 다른 글
[쉽게 배우는 운영체제] 10. 입출력 시스템과 저장장치 (1) | 2024.12.13 |
---|---|
[쉽게 배우는 운영체제] 9. 가상 메모리 관리 (0) | 2024.12.13 |
[쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 6. 교착상태 (1) | 2024.12.12 |
[쉽게 배우는 운영체제] 5-1. 프로세스 동기화 (0) | 2024.12.12 |