1. 메모리 계층
레지스터 | CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억용량이 작다. |
캐시 | L1,L2캐시를 지칭. 휘발성, 속도 빠름, 기억용량 적음.L3캐시도 존재 * 데이터를 미리 복사해 놓는 임시저장소, 빠른장치와 느린장치 사이에서 속도차이에 따른 병목현상을 줄이기 위한 메모리 |
주기억장치 | RAM을 의미. 휘발성,속도, 기억용량 보통 |
보조기억장치 | HDD,SDD를 의미, 휘발성,속도 낮음, 기억용량 많음 |
* 캐싱계층 : 계층과 계층사이의 속도차이를 해결하기 위한 계층
* 캐시히트 : 원하는 데이터를 찾음(cpu내부 버스기반작동으로 빠름)
* 캐시미스 : 해당 데이터가 캐시에 없으면 메모리에서 데이터를 탐색(시스템버스 기반작동으로 느림)
* 캐시매핑 : 캐시가 히트되기 위해 매핑하는 방법
직접매핑 | 블록화, 처리가빠르지만 충돌 발생이 잦다.(적중률이 낮다.) |
연관매핑 | 직접매핑 단점 보완, 충돌은 적지만 모든블록 탐색해야해서 속도가 느리다. |
집합 연관매핑 | 직접+연관, 순서일치하면서 블록화를 시켜 검색이 효율적임 |
상세내용 참고 : https://ssoonidev.tistory.com/35
[컴퓨터 구조] 캐시 메모리(Cache)와 매핑 방법
1. Cache Memory 빠른 CPU, 느린 Memory 프로그램을 CPU 혼자서 수행하는 것이 아니라 메모리도 같이 참여한다. 암달의 법칙을 통해서 CPU 혼자 개선되어야 할 문제가 아니라 메모리도 역시 빨라야 한다
ssoonidev.tistory.com
*웹브라우저의 캐시
쿠키 | 만료기간을 설정할 수 있으며 키-값 형태 저장, 4KB까지 데이터 저장(최근검색어, 최근본상품) 쿠키 설정시 document.cookie로 쿠키를 볼 수 없게 httponly옵션을 거는 것이 중요 |
로컬스토리지 | 만료기간 없이 키-값 형태 저장, JSON형태로 데이터 취급, 브라우저 닫아도 유지, 도메인단위 저장 |
세션스토리지 | 만료기간 없이 키-값 형태 저장, 탭 단위로 스토리지 생성, 탭닫을 때 해당 데이터 삭제, 5MB까지 저장 가능 |
2. 메모리 관리
- 가상 메모리 : 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화 하여 실제 사용자들에게 매우 큰 메모리로 보이게 만드는 것, 가상 주소는 메모리관리장치(MMU)에 의해 실제주소로 변환
- TLB : 메모리와 CPU사이에 있는 주소변환을 위한 캐시. 페이지 테이블에 있는 리스트 보관하며 CPU가 페이지 테이블까지 가지 않도록해 속도를 향상 시킬 수 있는 캐시 계층
- 스와핑 : 페이지 부재를 방지하기 위해 당장 사용하지 않는 영역을 HDD로 옮겨 필요 시 다시 RAM으로 부르고, 사용하지 않으면 다시 HDD로 내려 RAM을 효과적으로 관리하는 것
- 페이지 부재시 스와핑 과정
a. CPU는 물리 메모리를 확인해 해당 페이지 부재시 트랩을 발생시켜 os에 알린다.
b. os는 CPU를 일시정지 시킨다.
c. os는 페이지 테이블을 확인해 가상 메모리에 페이지가 존재하는지 확인, 부재시 프로세스를 중단하고 현재 물리 메모리에 비어있는 프레임이 있는 탐색. 물리메모리에도 부재시 스와핑이 발동
d. 비어있는 프레임에 해당 페이지 로드, 페이지 테이블 최신화
e. 중단되었던 CPU 재시작
* 페이지: 가상메모리를 사용하는 최소 크기 단위
* 프레임 : 실제 메모리를 사용하는 최소 크기 단위
- 스레싱 : 메모리 페이지 부재율이 높은 것을 의미. 컴퓨터의 심각한 성능저하 초래(페이지 부재시 CPU이용률 저하 -> OS에서 가용성을 높이기 위해 더 많은 프로세스를 메모리에 올림 -> 악순환으로 스래싱 발생)
- 작업세트 : 프로세스의 과거사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어 메모리에 로드하는 것
- PFF : 페이지 부재 빈도를 상한선,하한선으로 조절
- 메모리 할당
연속 할당 | 고정분할방식 : 메모리를 미리 나누어 관리, 가변성,융통성 없음, 내부단편화 발생 |
가변분할방식 : 최초,최적,최악 적합으로 매 시점 프로그램 크기에 맞게 동적으로 메모리를 나눠 사용. 외부단편화 발생 | |
불연속 할당 | 페이징 : 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스 할당. 홀의 크기가 불균일한 문제가 사라지지만 주소변환이 복잡 |
세그멘테이션 : 의미단위인 세그먼트로 나눔. 공유,보안 측면에서 좋으나 홀크기 불균일 | |
페이지드 세그멘테이션 : 공유나 보안을 세그먼트로 나누고, 물리적 메모리는 페이지로 나눔 |
- 페이지 교체 알고리즘 : 스와핑을 최소화 시키기 위한 알고리즘
오프라인 알고리즘 | 먼 미래에 참조 될 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘. 최선의 방법. 단, 실제로 알수 있는 방법이 없기에 다른 알고리즘과의 성능 비교에 대한 기준이 된다. |
FIFO | 선입 선출 교체. 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법 |
LRU | 참조가 가장 오래된 페이지 교체. 각 페이지마다 계수기, 스택을 두어야한다. 보통 해시 테이블, 이중 연결 리스트의 자료구조로 구현 |
NUR | LRU의 단점을 보완. clock 알고리즘이라 불림 |
LFU | 가장 참조 횟수가 적은 페이지를 교체 |
'Computer Science > 운영체제' 카테고리의 다른 글
CPU 스케줄링 알고리즘 (0) | 2022.10.05 |
---|---|
프로세스와 스레드 (0) | 2022.10.04 |
운영체제, 컴퓨터의 개념 및 구조 (0) | 2022.09.28 |