데이터를 미리 복사해 놓는 임시 저장소
-> 계층과 계층 사이에서 속도 차이를 해결하기 위한 임시 저장소
레지스터: 메모리와 CPU 사이의 속도 차이를 해결
주 기억 장치: 캐시 메모리와 보조기억장치 사이의 속도 차이를 해결
자주 사용되는 데이터의 특성
캐시를 직접 설정할 때 자주 사용되는 데이터를 기반으로 설정하는 특성
캐시에서 원하는 데이터를 찾는 것
캐시에 원하는 데이터가 없어서 주메모리로 가서 데이터를 찾는 것
캐시가 히트되기 위해 매핑되는 방법
직접 매핑
연관 매핑
집합 연관 매핑
메모리에 프로그램을 할당할 때 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당
메모리에 연속적으로 공간을 할당하는 것
메모리를 미리 나누어 관리하는 방식
가변 분할 방식
매 시점 프로그램 크기에 맞게 동적으로 메모리를 나눠서 사용하는 방식
2-1. 최초적합: 위에서부터 바로 보이는 공간에 할당
2-2. 최적적합: 가장 크기에 맞는 공간부터 채우고 나머지 할당
2-3. 최악적합: 가장 크기가 큰 공간부터 채우고 나머지 할당
내부 단편화
-> 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상외부 단편화
-> 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상
운영체제는 여러개의 작업을 효율적으로 수행하기 위해 불연속 할당을 사용
단점
- 메모리 할당, 헤제 시 오버헤드가 발생할 수 있음
- 메모리 공간이 분산되어 있어 프로세스가 불연속 공간에 할당될 경우 페이지 교체 등 작업이 복잡해질 수 있음
운영체제에서 불연속 할당을 사용하는 방법
- 링크드 리스트: 공간 낭비가 발생할 수 있음
- 비트맵: 블록을 0, 1(사용 가능, 불가능)로 표시
- 페이지 테이블: 가상 메모리 시스템에서 사용하는 방법
물리적인 주소 공간을 페이지로 나누어 사용
프로세스틑 각각 페이지 테이블을 가지고 이는 물리적인 주소와 가상 주소를 매핑하는 역할
위 두가지 방법보다 효율적
가상 메모리를 구현하는데 필요한 기술
페이징
세그멘테이션
페이지드 세그멘테이션
메모리 내에 저장된 페이지 중에서 어떤 페이지를 교체할지 결정하는 알고리즘
먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘
ex) 정렬 알고리즘
FIFO (First In First Out)
- 새로운 데이터가 들어오면 가장 오래전에 들어온 데이터를 제거하고 새로운 데이터를 추가
- 오래된 데이터가 최근에 데이터와 비슷한 경우에 성능이 저하될 수 있음
LRU (Least Recently Used)
- 참조가 가장 오래된 페이지를 교체하는 방법
- 캐시 히트율을 높일 수 있음
- 데이터를 저장하는데 추가적인 비용이 듬
NUR (Not Used Recently) or Clock 알고리즘
- 최근 사용여부를 0, 1로 표시하여 교체하는 방법 (1이 참조)
- 시계방향으로 돌면서 0을 찾는 순간 프로세스 교체
LRU: 데이터를 사용할 때마다 최근 사용 시간을 갱신
NUR: 사용하지 않은 데이터를 주기적으로 스캔, 최근 사용 여부를 판단