jeong_yooony.log
로그인
jeong_yooony.log
로그인
[코비] 3.2 메모리
최정윤
·
2023년 8월 25일
팔로우
0
CS
0
코비
목록 보기
10/38
3.2.1 메모리 계층
메모리 계층
크기가 작을수록(상위계층) 속도가 빠르며 용량이 작다.
레지스터: CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적음
캐시: L1, L2 캐시를 지칭
주기억장치: 메모리 즉 RAM 지칭
보조기억장치: HDD, SDD 지칭
메모리 계층이 있는 이유?
경제성과 캐시 때문
캐시
데이터를 미리 복사해놓은 임시저장소
빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
메모리와 CPU 사이의 속도차이가 너무 커서 그 중간에 레지스터 계층을 두어 속도 차이를 해결한다.
속도 차이를 위해 만든 계층을 캐싱 계층이라 한다.
지역성의 원리
자유 사용하는 데이터를 설정하는 근거
1. 시간 지역성
최근 사용한 데이터에 다시 접근하려는 특성
2. 공간 지역성
최근 접근한 데이터를 이루고 있는 공간 혹은 그 가까운 공간에 접근하는 특성
캐시히트와 캐시미스
캐시히트: 캐시에서 원하는 데이터를 찾은 것
캐시미스: 해당 데이터가 캐시에 없다면 주 메모리로 가서 데이터를 찾아오는 것
1. 캐시매핑
캐시가 히트되기 위해 매핑하는 방법
CPU의 레지스터와 주 메모리(RAM) 간에 데이터를 주고 받을 때를 기반으로 설명
2. 웹 브라우저의 캐시
쿠키
만료기한이 있는 키-값 저장소
로컬 스토리지
만료기한이 없는 키-값 저장소
웹 브라우저를 닫아도 유지되고 도메인 단위로 저장, 생서
클라이언트에서만 수정 가능
세션 스토리지
만료기한이 없는 키-값 저장소
탭 단위로 세션 스토리지를 생성, 탭을 닫을 때 해당 데이터가 삭제
클라이언트에서만 수정 가능
3. 데이터베이스의 캐싱 계층
데이터베이스 위에 레디서 데이터 베이스 계층을 '캐싱 계층'으로 두어 성능을 향상
3.2.2 메모리 관리
운영체제의 대표적인 할일 중 하나
컴퓨터 내의 한정ㅇ된 메모리를 극한으로 활용하는 것
가상 메모리
컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것
가상 메모리는 가상 주소와 실제 주소가 매핑되어 있음
프로세스의 주소 정보가 들어있는 '페이지 테이블'로 관리
스와핑
당장 사용하지 않는 영역을 하드디스크로 옯겨 필요할 때 다시 RAM으로 불러와 올리고, 사용하지 않으면 다시 하드디스크로 내림을 반복하여 RAM을 효과적으로 관리하는 것
가상 메모리에는 존재하지만 실제 RAM에는 없는 데이터에 접근할 때 발생하는 페이지 폴트를 방지하기 위함
페이지 폴트
프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우 발생
스레싱
메모리의 페이지 폴트율이 높은 것 -> 심각한 성능 저하를 초래
메모리에 너무 많은 프로세스가 동시에 올라가면 스와핑이 많이 일어나서 발생
페이지 폴트 발생 ▶️ CPU 이용률 낮아짐 ▶️ 더 많은 프로세스를 메모리에 올림 ▶️ 악순환 반복... => 스레싱 발생
운영체제에서 스레싱을 해결하는 법
1. 작업세트
프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드
2. PFF
페이지 폴트 빈도를 조절하는 방법
상한선과 하한선을 만들어, 상한선을 도달하면 페이지를 늘리고 하한선에 도달하면 페이지를 줄임
메모리 할당
시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당
연속 할당
프로세스를 순차적으로 공간에 할당하는 것
고정 분할 방식: 메모리를 미리 나누어 관리
가변 분할 방식: 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용
불연속 할당
페이지: 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당
세그멘테이션: 의미단위인 세그먼트로 나눈다.
페이지드 세그멘테이션: 공유나 보안을 의미 단위의 세그먼트로 나누고, 물리적 메모리는 페이지로 나누는 것
페이지 교체 알고리즘
페이지 교체 알고리즘을 기반으로 스와핑 발생
오프라인 알고리즘
먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 것
FIFO
가장 먼저 온 페이지를 교체 영역에 먼저 놓는 방법
LRU
참조가 가장 오래된 페이지를 바꾸는 것
해시 테이블과 이중 연결 리스트로 구현
LFU
가장 참조 횟수가 적은 페이지를 교체 (많이 사용되지 않은 것)
[참고자료]
https://velog.io/@94applekoo/CS-3.2-%EB%A9%94%EB%AA%A8%EB%A6%AC
최정윤
[공부블로그] https://jeong-yooon.tistory.com/
팔로우
이전 포스트
[코비] 3.1 운영체제와 컴퓨터
다음 포스트
[코비] 네트워크 면접 예상질문 준비
0개의 댓글
댓글 작성