ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 실습과 그림으로 배우는 리눅스 구조 6장 정리
    운영체제 2022. 11. 6. 21:15

    메모리  계층

    • 메모리 장치의 종류
      • 레지스터
      • 캐시 메모리
      • 메모리
      • 저장 장치
    • 위로 올라갈수록 용량이 작고, 비싸며, 빠르다. 

     

     

    캐시 메모리

    • CPU에서 메모리에 접근하는 시간이 길기 때문에, CPU 입장에서는 레이턴시가 발생한다.
    • 캐시 메모리 처리는 커널을 통하지 않고, 하드웨어 단에서 처리된다.  
    • 캐시 메모리를 이용해서 메모리 접근 시간을 고속화 한다.
    • 캐시 메모리는 일반적으로 CPU에 내장되어 있지만, 외부에 있는 경우도 있다.

     

    • 캐시 메모리의 값이 변경되는 경우
      • 캐시 메모리의 엔트리가 변경되면 더티 플래그가 표시된다. 
      • 더티 플래그가 기록된 데이터는 나중에 백그라운드 처리로 메모리에 다시 기록된다. 

     

    • 캐시 메모리가 가득 찬 경우
      • 캐시 메모리에 존재하지 않는 데이터를 추가로 읽으면, 기존의 캐시 메모리 중 하나를 파기한다.
      • 비어 있는 자리에 해당하는 주소의 데이터를 채운다.
      • 파기하는 데이터가 더티 플래그가 있다면, 메모리 내부의 해당 데이터를 동기화하는 작업이 함께 일어난다.
        • 위 작업이 반복되면 스래싱이 발생하여 성능이 크게 감소할 수 있다. 

     

     

    계층형 캐시 메모리 

    • 계층형 구조를 구성하는 캐시 메모리
    • L1, L2, L3 캐시 메모리가 있으며, 번호가 작을수록 빠르다.
    • 캐시는 참조의 국소성(Locality of Reference)을 따른다. 
      • 시간 국소성
        • 특정 시점에 접근하는 데이터는 가까운 미래에 접근할 가능성이 높다. 
        • ex) 반복문
      • 공간 국소성
        • 특정 시점에 접근하는 데이터는 근처의 데이터 주소에 접근할 가능성이 높다.
        • ex) 배열 

     

     

    Translation Lookaside Buffer

    • 프로세스가 가상 주소의 데이터에 접근하는 과정
      1. 커널 메모리 내 페이지 테이블을 참고하여 가상 주소를 물리 주소로 변환
        • 이 과정을 Translation Lookaside Buffer를 통해서 고속화할 수 있다.  
      2. 해당 물리 주소로 접근 
        • 이 과정은 캐시 메모리를 통해서 고속화 된다. 

     

     

    페이지 캐시 

    • 저장 장치 내의 파일 데이터를 메모리에 캐싱하는 방식
    • 메모리에 페이지 단위로 데이터를 저장한다. 
    • 동작 흐름
      1. 프로세스가 파일의 데이터를 읽어들임
      2. 파일의 데이터를 커널의 메모리 내에 있는 페이지 캐시 영역에 복사
      3. 이후 파일의 데이터를 프로세스 메모리 영역에 복사  
    • 커널은 자신의 메모리 안에 페이지 캐시에 캐싱한 파일과 범위 등의 정보를 보관하는 관리 영역을 가지고 있다. 
    • 같은 데이터를 읽을 때, 페이지 캐시에 있는 데이터를 읽는 방식은 저장 장치에 접근하여 읽는 경우보다 빠르다. 
    • 프로세스에서 데이터 쓰기를 하는 경우
      • 커널은 페이지 캐시에 새로운 데이터가 기록되었다는 더티 페이지 플래그를 붙인다.
      • 더티 페이지의 내용은 커널의 백그라운드로 처리하여 저장장치 내 파일에 반영된다. 
    • 메모리가 부족할 때
      • 커널이 페이지 캐시를 해제하여 빈 공간을 만든다.
      • 더티 페이지가 아닌 페이지를 삭제한다.
      • 그래도 부족하다면 더티 페이지를 wrtite back한 후, 페이지 캐시를 파기한다. 
      • 메모리 부족이 더티 페이지의 write back을 자주 발생시키면, 시스템 성능이 저하된다.  

     

     

    동기화된 쓰기

    • 페이지 캐시에 더티 페이지가 있을 때 시스템 전원이 강제로 꺼진다면, 페이지 캐시에 있는 내용들은 모두 사라진다.
    • 그래서 중요한 파일의 경우 write() 시스템 콜이 발생할 때마다 페이지 캐시 외에 저장장치에도 동기화 되어 쓰기가 발생하도록 설정할 수 있다. 

     

     

    하이퍼스레드

    • 하이퍼 스레딩은 CPU 코어 안의 레지스터 등 일부 자원을 여러 개 두고, 시스템 입장에서 각각 논리 CPU로써 인식되게 하는 하드웨어 기능
    • 낭비되는 CPU 자원을 최대한 활용한 기술
      • 실제로 CPU의 계산 처리 속도에 비해 메모리 접근 속도는 매우 느리므로 CPU 입장에서는 데이터 전송을 기다리는 시간이 길다.
    • 2배의 성능을 내는 것은 아니며, 약 20~30%의 성능 향상을 낼 수 있다.
    • 하드웨어 단에서 하이퍼스레드를 끄고 켤 수 있다. 

     

    • 하이퍼스레딩을 켰을 때

    실제 물리 CPU는 6개이며, 12개의 논리 CPU를 확인할 수 있다. 

     

    • CPU 짝 확인하기 

    논리 CPU2, 3이 CPU 코어 안의 하이퍼스레드 짝임을 알 수 있다. 

     

     

    Reference

    실습과 그림으로 배우는 리눅스 구조 

    반응형

    댓글

Designed by Tistory.