레지스터, 캐시, 메모리, 저장장치로 구성
위로 갈수록 빠르고 비용이 높으며, 아래로 갈수록 용량이 크다
병목 현상
을 줄이기 위한 메모리지역성의 원리
캐시에 저장 할 수 있는 데이터의 양은 많지 않기 때문에, 자주 사용되는 데이터를 넣어줘야 한다. 이때 근거가 되는 것은지역성
이다
- 시간 지역성
- 특정 데이터가 한번 참조된 경우, 가까운 미래에 또 한번 참조될 가능성이 높은 것
- 공간 지역성
- 특정 데이터와 인접한 주소의 데이터가 참조될 가능성이 높은 것
캐시 히트 : 캐시에서 원하는 데이터를 찾은 경우
캐시 미스 : 원하는 데이터가 캐시에 없는 경우 주 메모리에 가서 데이터를 찾아오는 것
캐시가 히트되기 위해 매핑하는 방법
직접 매핑(direected mapping)
연관 매핑(associative mapping)
집합 연관 매핑(set associative mapping)
1. 쿠키
- 만료 기한이 있는 키-값 저장소
- HTTP의 일종으로 서버가 사용자 웹 브라우저 즉 로컬에 저장하는 데이터
- 일시적으로 필요한 가벼운 데이터 저장이 필요할 때(ex. 로그인 자동 완성, 오늘 더 이상 창을 보지 않음 팝업 등)
2. 로컬 스토리지
- 만료 기한이 없는 키-값 저장소
- 브라우저를 닫아도 유지
- 도메인 단위로 저장. 생성
- 지속적으로 필요한 데이터 저장이 필요할 때(ex. 자동 로그인)
3. 세션 스토리지
- 만료 기한이 없는 키-값 저장소
- 탭을 닫을 때 해당 데이터 삭제
- 탭 단위로 생성
- 일시적으로 필요한 데이터 저장이 필요할 때(ex. 일회성 로그인, 입력 폼 저장, 비로그인 장바구니)
메모리관리장치(MMU)
에 의해 실제 주소로 변환. -> 실제 주소 의식할 필요 없기 프로그램 구축 가능페이징(Paging)
, 세그멘테이션(Segmentation)
페이지 폴트
발생. 프로세스 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우에 발생
페이지 폴트 작동 방식
1. CPU는 물리 메모리를 확인해 해당 페이지가 없다면 트랩을 발생해 운영체제에게 알림
2. 운영체제는 CPU의 동작을 잠시 멈춤
3. 운영체제는페이지 테이블
을 확인해 가상 메모리에 페이지가 존재하는지 확인. 없다면 프로세스를 중단.
4. 페이지폴트이면, 현재 물리 메모리에 비어있는 프레임(Free Frame)이 있는지 찾는다.
5. 비어있는 프레임에 해당 페이지를 로드하고, 페이지 테이블을 최신화 한다.
6. 중단되었던 CPU 다시 시작.
메모리의 페이지 폴트율이 높은 것 -> 심각한 성능 저하 초래!!
페이지 폴트 발생 -> CPU 이용률 낮아짐 -> 운영체제 : "CPU 한가하니? 프로세스 더 올려줄게" -> 악순환 반복되며 스레싱
발생
해결 방법
작업 세트
, PFF
작업 세트(working set)
- 프로세스의 과거 사용 이력인 지역성을 통해 결정된
페이지 집합
을 만들어 미리 메모리에 로드하는 방법. 탐색 비용과 스와핑 줄일 수 있음PFF(Page Fault Frequency)
- 페이지 폴트 빈도를 조절하는 방법.
- 상한선과 하한선을 만들어, 상한선에 도달했다면 프레임을 늘리고 하한선에 도달했다면 프레임을 줄인다
연속 할당
과 불연속 할당
연속 할당
- 메모리에
연속적으로
공간을 할당하는 것
A, B, C가 순차적으로 공간에 할당되었다. 이는 메모리를 미리 나누어 관리하는고정 분할 방식
과 매 시점 프로그램의 크기에 맞게 메모리를 분할하여 사용하는가변 분할 방식
이 있다.고정 분할 방식
- 메모리를 미리 나누어 관리하는 방식.
- 미리 나뉘어 있어 융통성이 없음
내부 단편화
발생 : 메모리를 나눈 크기보다 프로그램이 작아 들어가지 못하는 공간이 많이 발생하는 현상.가변 분할 방식
- 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용
- 내부단편화 발생x,
외부 단편화
는 발생할 수 있음- 외부 단편화 : 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상. 예를 들어 45,55 공간이 있는데 프로그램이 70이어서 들어가지 못함
- 최초적합(first fit), 최적적합(best fit), 최악적합(worst fit)
불연속 할당
- 메모리를 연속적으로 할당하지 x
- ex)
페이징 기법
,세그멘테이션
,페이지드 세그멘테이션
페이징(paging)
- 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스 할당
- 비어 있는 메모리 공간의 크기가 균일하지 않은 문제 없어짐
- but 주소 변환 복잡해짐
세그멘테이션(segmentation)
- 세그먼트 단위로 나눔
- 논리적 내용을 기반으로 나눔(stack, code, data 영역 등으로 나눔)
- 공유와 보안 good(페이징은 일정한 크기로 나뉘어 영역이 섞이기 때문에 까다로움)
- 세그먼트의 크기가 다양하기 때문에 홀의 크기가 균일하지 않음. 외부 단편화 발생
스와핑이 적게 일어나도록 설계하기 위한 페이지 교체 알고리즘.
오프라인 알고리즘 : 비교를 위한 가장 좋은 알고리즘
주홍철 작가님의 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.