ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Careerthon] 메모리
    네트워크/CS Study 2023. 11. 7. 15:28

    개요

    • 메모리계층
    • 웹캐시
    • 가상 메모리
    • 메모리 할당

    메모리계층

    메모리계층을 알아야 하는 이유는?

     - 경제성 : 메모리는 레지스터로 갈수록 속도는 빨라지지만 용량이 적어지는 특성이 있고 디스크로 갈수록 반대의 특징을 보인다. 이러한 계층을 통해서 어떻게 효율적으로 메모리를 관리할 것인지를 알 수 있다.

     - 동작원리 : CPU 내부의 레지스터에서 하드디스크까지 메모리의 계층이 나뉘어져 있는데 운영체제는 이를 어떻게 활용하는지를 알 수 있게 된다.

     - 프로그램의 실행속도를 어떻게 올릴 수 있는가는 이러한 RAM과 CPU의 소통이 얼마나 빠르냐가 영향을 미치므로 RAM과 CPU는 어떻게 소통하는지를 통해서 이를 파악 할 수 있다.

     

    메모리 계층구조

    메모리계층 특징

    • 메모리 계층은 레지스터, 캐시( L1, L2, L3 ), RAM, 디스크(HDD / SSD)로 이루어져 있다.
    • 레지스터로 갈수록 속도는 매우 빠르지만 용량이 적고, 디스크로 갈수록 속도는 느려지지만 용량은 커진다.

     

    동작원리

    1. CPU는 RAM을 통해 프로그램 데이터를 가져온다(하드디스크는 너무 느림)
    2. 프로그램 작동시 RAM은 HDD로부터 데이터를 복사해 임시로 저장하고 필요시 CPU에게 데이터를 넘긴다.
    3. RAM도 CPU에 비해서 속도가 느리기 때문에 CPU내부나 근처에 캐시메모리를 두어 데이터를 저장한다.
    4. 캐시메모리는 레지스터와 호흡하며, CPU내부의 데이터를 일시적으로 저장하는 가장 빠른 메모리이다.

    cf) 게임 중 "로딩중"이라는 메세지는 대부분 하드디스크에서 RAM으로 데이터를 전송하는 과정 중에 나타난다.

     


    캐시

    데이터를 미리 복사해놓는 임시 저장소

     

    빠른장치와 느린장치에서 속도차이에서 발생하는 병목현상을 줄이기 위한 메모리로써 계층 사이에 위치한 계층을 캐싱 계층이라고도 한다.

     

    지역성

    데이터를 미리 복사해 놓는 임시 저장소이기 때문에 용량이 적다.

    저장해야할 데이터를 선별하는 기준으로 파레토법칙을 사용하고 있고 이때 기준이 지역성이다.

    파레토법칙 : 전체 결과의 80%는 상위 20%에 의해 발생한다는 법칙

    • 시간지역성
      • 최근에 사용한 데이터에 다시 접근하려는 특성
    • 공간지역성
      • 최근에 접근한 데이터를 이루고 있는 공간이나, 그 가까운 공간에 접근하는 특성

    캐시히트 & 캐시미스

    캐시히트 : CPU가 값을 가져오려할 때 원하는 데이터를 찾았을 경우

    캐시미스 : 없을 때

    캐시매핑 : 캐시가 히트되기 위해 매핑하는 방법


    웹캐시

    Client의 요청(html, image, js, css 등)에 대해 첫 요청 시에 파일을 내려받아 특정 위치에 복사본을 저장한다

    이후 동일한 URL의 요청에 대해 다시 내려받지 않고 복사본을 사용해 더 빠르게 서비스를 제공한다.

    장점: 네트워크 트레픽 감소, 응답시간 감소

     

    종류

    어디에 적용하느냐에 따라 다음과 같이 나뉜다

    1. Browser Caches
      • 브라우저 또는 HTTP요청을 하는 Client Application에 의해 내부 디스크에 캐시
      • 공유하지 않는 한 개인에 한정된 캐시
      • 재방문 또는 back버튼을 통한 페이지 이동시에 극대화
    2. Proxy Caches
      • Browser Caches와 동일하게 동작하나 네트워크 상에서 동작함 (Client, Server X)
      • 큰 회사나 IPS의 방화벽에 설치된다.
    3. Gateway Caches
      • 서버 앞 단에 설치되어 요청에 대한 캐쉬 및 효율적인 분배를 통해 가용성, 신뢰성, 성능 등을 향상

    가상 메모리

    메모리관리기법 중 하나로, 실제 사용할 수 있는 메로리 자원을 추상화해서 사용자에게 더 큰 메모리로 보이게 만드는 것

    초창기 컴퓨터는 RAM의 용량이 실행되는 Application의 주소공간보다 커야만 실행이 되었는데 그에 따라서 실제 메모리 용량이 부족해짐을 느껴 이러한 물리 메모리 크기의 한계를 극복하고자 나온 기술이며 가상주소와 실제주소가 매핑되어있다.

    즉 128MB 메모리(실제)로 256MB의 프로세스를 돌릴 수 있게 됨

     

    이때 프로세스는  가상주소( 가상메모리에 있는 주소  )를 사용하기 때문에 실제 물리주소(디스크내 주소)를 알 수 없다 여기서 MMU(Memory Management Unit)를 통해서 가상주소를 물리주소로 변환하는 것이 가능하다.

    TLB는 속도를 향상시키기 위해 사용한다.

     

    페이지폴트 & 스와핑

    가상메모리에는 존재하고 실제 메모리인 RAM에 존재하지 않는 데이터에 접근 시도했을 경우 페이지폴트가 발생한다.

    이때 스와핑이 일어나게되는데 과정은 아래와 같다.

    1. CPU는 물리 메모리를 확인하고 해당 페이지가 없다면 트랩을 발생시켜 운영체제에 알린다
    2. 운영체제는 CPU의 동작을 멈춘다
    3. 운영체제가 가상메모리에 페이지가 존재하는지 확인하고 없으면 프로세스를 중단한다.
    4. 물리 메모리에 비어있는 프레임이 있는지 찾고 없으면 스와핑을 발생시킨다.
    5. 비어있는 프레임에 해당 페이지를 로드하고 페이지 테이블을 최신화한다.
    6. 중단되었던 CPU를 다시 시작한다.

    자주 발생할 시 운영체제는 CPU가 한가하다고 생각하여 많은 양의 프로세스를 메모리에 올리게 되는데 이와 같은 악순환의 반복인 스레싱이 발생하는데 이는 CPU 및 IO작업을 무리하게 요구당하게 되고 속도가 급격히 떨어뜨린다.

     

    스레싱 해결하기 위한 방법

    1. 작업세트 : 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어 미리 메모리에 로드한다.
    2. PFF : 페이지 폴트 빈도를 조절하는 방법 상한선과 하한선을 만들어 상한선 도달 시 프레임을 늘리고 하한선은 줄인다.  
    3. 메모리를 늘리거나 HDD=> SSD로 바꾼다

    메모리 할당

    메모리에 프로세스를 할당할 때 시작 메모리 위치, 메모리 할당 크기 등을 기준으로 할당한다.

     

    연속할당

    프로세스를 페이지 단위로 쪼개지 않고, 메모리에 연속적으로 공간을 할당하는 것

    • 고정분할방식(fixed partition allocation)
      • 메모리를 미리 나누어 관리하기 때무에 융통성이 없다.
      • 나누어 놓은 메모리의 크기보다 프로세스의 크기가 작아 메모리에 낭비되는 부분이 발생하는 내부 단편화가 발생한다.
    • 가변분할방식(variable partition allocation)
      • 매 시점 프로세스의 크기에 맞게 메모리를 나눠 사용한다.
      • 메모리를 나눈 크기보다 프로세스의 크기가 커 들어가지 못하는 공간이 발생하는 외부 단편화가 발생한다.

    불연속할당

    현대 운영체제가 쓰는 방법으로 프로세스를 동일한 크기의 페이지로 나누고 프로세스마다 페이지 테이블을 두어 이를 통해 프로세스를 할당한다.

    • 페이징
      • 프로세스를 동일한 크기의 페이지로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다
      • 페이지와 프레임을 대응시키기 위해 paging table이 필요하다.
    • 세그멘테이션
      • 페이지 단위가 아닌 의미 단위로 프로세스를 나눈다.
      • 세그먼트들의 크기가 서로 다르기 때문에 빈 공간을 찾아 프로세스가 메모리에 할당한다.
      • segmentation table이 필요하다.
    • 페이지드 세그멘테이션
      • 공유나 보안을 세그먼트로 나누고, 물리적 메모리는 페이지로 나누는 것을 말한다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    https://velog.io/@yzii/%EB%A9%94%EB%AA%A8%EB%A6%AC

    댓글

Designed by Tistory.