CF) CPU : '메모리'에 올라와 있는 프로그램의 명령어들을 실행할 뿐.
1. 메모리 계층 : 레지스터, 캐시, 저장장치.
- 레지스터 : CPU 안에 있는 작은 메모리. 휘발성. 속도 : 가장 빠름. 기억용량 : 가장 적음.
- 캐시 : L1, L2 캐시를 지칭. 휘발성. 속도 빠름. 기억용량 적음. (L3캐시도 있음).
- 메모리(RAM, 주기억장치) : RAM. 휘발성. 속도 : 보통. 기억용량 : 보통.
ㄴ HDD로부터 일정량의 데이터를 복사, 임시저장 후 필요시마다 CPU 에 전달.
- 보조기억장치 : HDD, SDD를 일컬음. 휘발성. 속도낮음, 기억용량 많음.
1] 캐시(cache) : 데이터를 미리 복사해 놓는 임시 저장소.
- 빠른 장치와 느린 장치에서 속도 차이에 따른 병목현상을 줄이기 위한 메모리.
ㄴ 데이터를 접근하는데 시간이 오래 걸리는 경우 해결, 재연산 시간 절약.
ㄴ실제로 메모리와 CPU 사이의 속도 차이가 크기 때문에, 레지스터 계층을 통해 속도차 해결.
- 캐싱 계층 : 속도차가 큰 계층을 완충하는 계층.
* 지역성의 원리 : 자주 사용하는 데이터에 대한 근거가 되는 것.(시간/공간 지역성)
1) 시간 지역성(temporal locality) : 최근 사용한 데이터에 다시 접근하려는 특성.
ㄴ ex) for문의 변수 i.
2) 공간 지역성(spatial locality) : 최근 접근한 데이터를 이루고 있는 공간이나, 그 가까운 공간에 접근하는 특성.
ㄴ ex) 배열.
2] 캐시히트(캐시에 원하는 데이터 有)와 캐시미스(캐시에 원하는 데이터 無)
- 캐시히트시 : 해당 데이터를 제어장치를 거쳐 가져오게 됨.
ㄴ 위치도 가깝고, CPU 내부 버스를 기반으로 작동하기 때문에 빠름.
- 캐시미스시 : 해당 데이터를 메모리에서 가져오게 됨.
ㄴ 시스템 서브를 기반으로 작동하기 때문에 느림.
* 캐시 매핑 : 캐시가 히트되기 위해 매핑하는 방법.
- CPU의 레지스터와 주 메모리(RAM)간에 데이터를 주고받을 때를 기반으로 설명.
이름 | 설명 |
직접 매핑 | 처리가 빠르지만 충돌발생이 잦음. |
연관 매핑 | 순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑. 충돌이 적지만, 속도가 느림(블록을 탐색해야 하기 때문) |
집합 연관 매핑 | 직접 매핑과 연관 매핑을 합쳐 놓은 것. 순서는 일치시키지만, 집합을 두어 저장 -> 블록화 되어있기 때문에 검색이 효율적. |
* 웹 브라우저의 캐시(소프트 웨어의 캐시) : ex) 쿠키, 로컬스토리지, 세션스토리지
1) 쿠키 : 만료기간이 있는 키-값 저장소.
- same site 옵션을 strict로 설정하지 않았을 경우, 다른 도메인에서 요청했을 때 자동 전송됨.
- 4kb 까지 저장 가능하며, 만료기간 설정 가능.
- document.cookie로 쿠키를 볼 수 없게 httponly 옵션을 거는것이 중요.
2) 로컬 스토리지 : 만료기한이 없는 키-값 저장소.
- 10MB 까지 저장 가능하며, 웹브라우저를 닫아도 유지됨.
- 도메인 단위로 저장, 생성됨.
- HTML5를 지원하지 않는 웹 브라우저에서는 사용 불가능하며, 클라이언트에서만 수정 가능.
3) 세션 스토리지 : 만료기한이 없는 키-값 저장소.
- 5MB 까지 저장 가능하며, HTML5를 지원하지 않는 경우 사용 불가, 클라이언트에서만 수정 가능.
* 데이터베이스의 캐싱 계층
- 데이터베이스 시스템 구축시에도, 메인 데이터베이스 위레 레디스(REDIS) 데이터베이스 계층을 캐싱계층으로 두어 성능을 향상시키기도 함.
2. 메모리 관리 : 운영체제의 대표적인 할 일 중 하나(한정된 메모리 극한 활용)
1] 가상 메모리(virtual memory)
- 메모리 관리 기법의 하나.
- 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화 하여, 사용자에게 매우 큰 메모리로 보이게 만드는 것.
- 가상주소(logical address) : 가상적으로 주어진 주소.
ㄴ 메모리관리장치(MMU)에 의해 실제주소로 변환됨.
- 실제주소(physical address) : 실제 메모리상에 있는 주소.
- 가상메모리 덕분에 실제 주소를 의식할 필요 없이 프로그램을 구축 할 수 있음.
- 페이지테이블 : 가상주소와 실제주소가 매핑되어있고 프로세스의 주소 정보가 들어있음.
ㄴ 이 때, 속도 향상을 위해 TLB 사용
*TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시.
페이지 테이블에 있는 리스트를 보관하여 CPU가 페이지 테이블까지 가지 않도록 속도를 향상시킬 수 있는 캐시 계층.
* 페이지 폴트(page fault) : 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근 했을 경우 발생.
* 스와핑 :
'CS > CS' 카테고리의 다른 글
[CS] CPU스케줄링 알고리즘 (0) | 2022.10.25 |
---|---|
[CS] 운영체제(OS)와 컴퓨터 (0) | 2022.10.25 |
[CS] 운영체제와 컴퓨터 (0) | 2022.10.25 |
[CS] HTTP(HTTP/1.0, HTTP/1.1, HTTP/2, HTTPS, HTTP/3) (0) | 2022.10.04 |
[CS] IP주소(APR, 홉바이홉통신, 주소체계, 주소를 이용한 위치정보) (0) | 2022.10.04 |
야나의 코딩 일기장 :) #코딩블로그 #기술블로그 #코딩 #조금씩,꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!