조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 개요
- 메모리의 크기는 컴퓨터마다 다름
- OS가 물리 메모리의 크기에 의존한다면, 메모리 크기별로 프로그램이 동작하지 않을 수 있음
가상 메모리
- 물리 메모리의 크기와 관계없이 프로세스에 큰 메모리 공간을 제공하는 기술
- 프로세스는 특별한 고려 없이 메모리를 사용할 수 있습니다 (물리 메모리 크기, 위치 등)
프로세스 가상 주소
- 프로세스는 0번지부터 시작하는 연속된 메모리 공간을 가집니다.
- 자신이 어느 위치에 있는지 신경쓰지 않아도 됩니다.
메모리 분할 방식
- 운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당함
- ex) 페이징, 세그먼테이션, 세그먼테이션-페이징 혼용
메모리 관리자
- 메모리 자원을 효율적으로 관리하고 프로세스들이 요구하는 메모리를 적절히 제어하는 역할
기능 | 설명 |
스왑 |
물리 메모리가 부족하면 스왑 영역으로 일부 데이터를 보냄.
|
동적 주소 변환 |
가상 주소를 물리 주소로 변환하여 실제 메모리 위치를 참조.
|
매핑 테이블 관리 |
가상 주소와 물리 주소를 일대일로 매핑하는 테이블을 관리.
|
2. 페이징 기법
- 고정 분할 방식을 이용한 가상 메모리 관리 기법
- 물리 주소 공간을 같은 크기로 나누어 사용함
페이지 vs 프레임
페이지 | 프레임 |
가상 메모리에서 데이터를 저장하는 일정 크기의 블록 번호는 0번부터 시작하여 매겨짐. |
물리 메모리에서 데이터를 저장하는 일정 크기의 블록.
페이지와 동일한 크기. |
페이지 테이블
- 어떤 페이지가 어떤 프레임에 있는지 기록하는 테이블
PTBR
- 각 프로세스의 페이지 테이블의 시작 주소를 저장하는 레지스터
- 각 프로세스의 PCB에 저장됨
관리
- 프로세스마다 페이지 테이블을 운영함
- 프로세스 수에 따라 페이지 테이블이 생겨나고, 페이지 테이블의 크기가 커지면 메모리 자원이 많이 필요
- 페이지 테이블 용량이 커질수록, 실제 사용할 수 있는 영역이 줄어듬
- 페이지 테이블의 크기를 적정하게 유지하는 것이 중요
페이지 테이블 관리 방식
매핑 방식 | 설명 | 장점 | 단점 |
직접 매핑 | 페이지 테이블이 물리 메모리에 상주 | 빠른 주소 변환 속도 |
많은 메모리 사용,
작은 메모리에서 비효율적 |
연관 매핑 | 페이지 테이블을 스왑 영역에 저장 일부만 로드 |
메모리 효율성 |
주소 변환 속도가 느릴 수 있음
|
집합-연관 매핑 | 페이지 테이블을 디렉토리로 나누어 관리 | 효율적인 주소 변환 연관 매핑의 문제 해결 |
일부 페이지 테이블을 여전히 검색 필요
|
역매핑 | 물리 메모리 프레임 번호 기준으로 테이블 관리 | 하나의 테이블만 존재 |
전체 테이블 스캔이 필요할 수 있음
|
- 전체를 메모리에 관리할 경우와 일부를 스왑 영역에서 관리할 경우, 가상 주소를 물리 주소로 변환하는 방법이 달라짐
- 프레임이 스왑 영역에 있을 경우, invalid라고 표시됨
주소 변환
- 가상 주소 x번지가 어느 페이지에 해당하는지 찾기
- 페이지 테이블의 페이지 y로 가서 해당 페이지의 프레임 찾기
- 물리 메모리 프레임 y의 (x번지 % 페이지 크기) 번째 위치에 접근
3. 세그먼테이션 기법
- 프로세스의 크기에 따라 메모리를 분할
- 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안됨 (limit 컬럼 사용)
- 스왑 영역을 사용할 경우 address 컬럼에 'I'로 표시함
주소 변환
- 가상 주소에 따른 물리 주소를 구함
- 해당 물리 주소에서 쓰고자 하는 데이터가 범위에 넘어가는지 검사
- 물리 주소에 접근하여 원하는 데이터를 읽거나 씀
4. 세그먼테이션 - 페이징 기법
세그먼테이션 테이블
- 페이지 테이블의 페이지들 중 권한 비트가 같은 공통된 정보를 모아 관리하는 테이블
권한 비트
- 페이지마다 접근 권한이 다름
- 페이지 테이블의 모든 행에는 권한 비트가 추가됨
- 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트로 적절한 접근인지 확인함
중복된 권한 비트 문제 해결
- 인접한 페이지에는 권한이 같은 페이지가 많은데, 중복적인 값이 많아 메모리를 낭비하게 됨
- 이러한 문제를 해결하기 위해 세그먼테이션 테이블을 이용함
- 논리적 단위(세그먼트)로 메모리를 나누고, 각 세그먼트마다 하나의 권한 비트 집합을 적용함
5. 캐시 매핑 기법
- CPU 캐시와 RAM 사이에서 데이터를 효율적으로 교환하기 위해 사용하는 방법
태그
- 캐시에 저장된 데이터가 원래 메모리의 어느 위치에서 온 데이터인지 식별하는데 사용하는 식별자
종류
항목 | 직접 매핑 | 연관 매핑 |
집합-연관 매핑
|
블록 | 각 메모리 블록은 하나의 고정된 캐시 위치에 매핑 | 메모리 블록이 캐시 메모리 어느 위치에나 매핑됨 |
캐시를 집합으로 나누고 각 집합 내에서 연관 매핑 사용
|
태그 | 캐시의 블록 번호 | - |
각 집합에 자리를 가지도록 설정
|
블록 거리 | 메모리 블록에서 캐시로 올라올 때의 위치 정보 | - | - |
장점 | 캐시 히트나 캐시 미스를 빠르게 확인할 수 있음 | 캐시 충돌 적음 |
자리다툼 문제가 완화됨
|
단점 | 여러 메모리 블록이 같은 캐시 블록을 공유할 때 자리다툼 문제가 발생 | 캐시 검색이 느림 |
각 집합에서 직접 매핑을 사용하므로 자리다툼 문제를 완화하나 여전히 발생 가능
|
'OS' 카테고리의 다른 글
[쉽게 배우는 운영체제] 11. 파일 시스템 (3) | 2024.12.14 |
---|---|
[쉽게 배우는 운영체제] 9. 가상 메모리 관리 (0) | 2024.12.13 |
[쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 6. 교착 상태 (1) | 2024.12.12 |
[쉽게 배우는 운영체제] 5-1. 프로세스 동기화: 임계 영역 (0) | 2024.12.12 |