CS전공 지식 -메모리

KIM HYUNMIN·2024년 9월 9일

CS 기초지식

목록 보기
6/13

1) 메모리 계층
2) 메모리 관리

1) 메모리 계층


출처:https://velog.io/@ajm0718/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0

  • 레지스터: cpu 안에 있는 작은 메모리,휘발성,속도 가장 빠름, 기억 용량이 가장 적다
  • 캐시: L1,L2 캐시를 지칭한다. 휘발성,속도빠름,기억용량적음
  • 주기억장치: RAM이라고 부름, 휘발성,속도 보통,기억용량 보통
  • 보조기억장치: HDD,SDD를 일컬으며 비휘발성,속도 낮음,기억용량 많다.

1_1) 캐시
: 캐시는 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다.

1_2) 지역성
: 기억장치 내의 정보를 균일하게 접근하는 것이 아닌, 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성

  • 시간지역성: 최근에 참조된 주소의 내용은 곧 다음에 다시 참조된다는 것
  • 공간지역성: 대부분의 실제 프로그램이 참조된 주소와 인접한 주소의내용이 다시 참조된다는 것

1_3) 캐시히트와 캐시미스
캐시히트: 캐시히트는 컴퓨터에서 사용되는 캐시 메모리에서 필요한 데이터가 이미 캐시에 존재하는 상태를 말한다. 이 경우 데이터를 찾기 위해 메인 메모리나 하드디스크에 접근할 필요 없이 캐시에서 바로 데이터를 가져올 수 있다.
캐시미스: 컴퓨터에서 사용되는 캐시메모리에서 필요한 데이터가 캐시에 없는 상태를 말한다. 이 경우 CPU는 데이터를 찾기 위해 메인메모리나 하드디스크에 접근해야 한다.

1_4) 웹브라우저의 캐시

  • 쿠키
  • 로컬 스토리지
  • 세션 스토리지

2) 메모리관리

2_1) 가상메모리
: 가상메모리란 프로그램이 혼자 메모리를 사용하는 것처럼 메모리를 가상화한 것을 말한다.

2_2) 스와핑
: 멀티프로그래밍 환경에서 실행할 수 있는 프로세스의 수를 늘리기위해 사용하는 기술이다. 이 를 통해 시스템이 실제로 가지고 있는 물리 메모리보다 전체 프로세스의 총 가상 주소 공간이 더 커질수 있게 해주는 메모리 관리 기술이다.

프로세스의 코드와 데이터를 실행하기 위해서는 해당 사항들이 메모리에 존재해야하는데 이때 필요하지 안흔 프로세스 또는 프로세스의 일부를 메모리에 대기시키는 것은 메모리의 낭비가 일어난다. 그렇기 때문에 사용하지 않는 프로세스는 일시적으로 하드 디스크와 같은 보조 저장 장치에 옮겨놨다가 필요할 때 다시 메모리에 불러와 사용한다.

2_3) 스레싱
: 스레싱이란 페이즈 부재율이 증가하여 CPU 이용율이 급격하게 떨어지는 현상을 얘기한다. 스레싱이 발생하는 이유는 프로세스를 처리하는 시간보다 메모리에 적재되지 못한 페이지로 인하여 페이지 교체에 드는 시간이 증가하게 디고 그로 인해 CPU 이용율이 떨어지게 된다.

해결방법

  • Working set: 지역성의 원리를 이용하여 지역성 집합이 메모리에 동시에 올라갈 수 있도록 보장하는 메모리 관리 방법이다. 워킹셋이라는 이름과 같이 프로세스의 작업을 구성하는 자주 참조되는 페이지들의 집합이다.
  • 페이지 부재 빈도(Page Fault Frequency): 프로세스의 페이지 부재율을 주기적으로 조사하고 이값에 근거하여 각 프로세스에 할당할 메모리양을 동적으로 예측하고 조절하는 알고리즘이다.

2_4) 메모리 할당

● 연속할당 : 메모리에 연속적으로 공간을 할당하는 것

고정분할 방식: 메모리를 미리 나누어 관리하는 방식, 융통성 없음

가변분할 방식: 매시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용(최초,최적,최악 적합)

● 불연속할당: 메모리를 연속적으로 할당하지 않음

페이징: 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다. 내부 단편화 문제가 발생한다.

  • 물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정 크기의 페이지로 분리되어 있음

  • 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장됨

  • 모든 프로세스는 하나의 페이징 테이블을 가지고 있으며, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있음

  • 이를 통해 하나의 프로세스를 나눈 가상 메모리 페이지들이 각각 실제 메인 메모리의 어디 프레임에 적재되어 있는지 알아낼 수 있음

세그먼테이션: 페이지 단위가 아닌 논리적 단위인 세그먼트로 나누는 방식이다. 프로세를 이루는 메모리는 코드영역,데이터 영역,스택 영역, 힙 영역으로 이루어 진다.

  • 세그먼트는 의미가 같지 않는 논리적 내용을 기준으로 프로그램을 분할하기 때문에 크기가 같지 않다.
  • 외부단편하가 발생한다는 단점이 있다.

페이지드 세그먼테이션: 프로그램을 의미 단위인 세그먼트로 나눠 공유나 보안 측면에 강점을 두고 임의의 길이가 아닌 동일한 크기의 페이지 단위로 나누는 것을 말한다.

※ 내부 단편화 외부 단편화

내부 단편화
: 프로세스가 사용하는 메모리 공간에 남는 부분

외부 단편화
: 메모리 공간 중 사용하지 못하게 되는 부분

페이지 교체 알고리즘

: 페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 방법을 페이지 교체 알고리즘이라고 한다.

종류

OPT - Optimal : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
(가장 이상적 하지만 미리 사용할 페이지를 알아야하므로 불가능)
FIFO - First In First Out : 가장 먼저 들어온 페이지를 교체
LRU - Least Recently Used : 가장 오랫동안 사용되지 않은 페이지 교체
LFU - Least Frequently Used : 참조 횟수가 가장 작은 페이지 교체
MFU - Most Frequently used : 참조 횟수가 가장 많은 페이지 교체
NUR - Not Used Recently : 최근에 사용하지 않은 페이지 교체

profile
Linux,Window,Network,docker,kubernets

0개의 댓글