본문 바로가기
Programing/OS

[OS] Cache

by 꾸압 2022. 8. 7.

 

<종류>

  - Cache 는 다음 3가지 포맷으로 사용된다.

    * Memory

    * File

    * CDN

 


 

[Memory]

<설명>

  - 메인 Memory와 CPU 간의 data 속도 향상을 위한 중간 buffer 역할을 하는, CPU 내외에 있는 고속 Memory

    ==> 전체 System 성능 개선

  - 실제 Memory 와 CPU 사이에서 빠른 전달을 위해 미리 data를 저장해두는 Memory

    ==> 본래 Memory 가 가지고 있던 data 일부를 가져와 빠르게 실행하기 위해 쌓아둔 것 === Cache Memory

  - 저장된 data가 언제든 지워질 수 있으므로, 그걸 전제로 서버를 설계해야함.

  - request 빈도가 높지만, data 량이 많지 않은 것으로 cache 하면 유용함.

 


 

[File]

<설명>

  - web server 와 browser가 통신할 때, web server가 보낸 html data의 일부(크기가 크거나, 다시 호출될 가능성이 높은 data 등)를 browser 내부 특정 directory에 미리 임시 저장

  - server가 보낸 file이 local pc 의 일부에 임시 저장된 것.

  - 목적? 통신 시 file 호출 시간을 효율성있게 단축하려고.

  - 단점 : server에서 이미지 file 등을 새로 업로드 하였을 때 cache file이 업데이트 되지 않았다면(아직 file을 cache로 등록할 주기(period)가 아니라던가), 예전 이미지 file을 호출이 됨.

    == > 이 문제는 기존 Cache file을 날려, server로 부터 새로운 file을 업데이트 받으면 해결.

 


 

[CDN]

<설명>

  - cdn 은 Contents Delivery Server. 아주 먼 곳의 file-data를 매번 가져올 때 발생할 performance 저하를 cache로 줄임.

    ==> Network 구간일 멀어 hit-rate(data 적중률) 이 떨어지거나, 전송 속도가 느리거나, 오래 걸릴 수 있음.

  - 해당 Client와 가까운 곳에 server를 두고 data를 cache(미리 저장) 하여, client-server 통신 속도를 빠르게 함.

  - 자주 쓰는 file을 가까운 CDN Service Server에서 끌어오기

  - 미국에 origin server 가 있는데 아시아나 유럽에 service 하는 경우, 아시아 server에 cache & 유럽 server에 cache하여 client에게 빠른 service 제공 가능.

 


 

<Caching>

  - cache 메모리 영역에 data가 접근하는 방식

  - data의 Locality(지역성) 특성을 통해 성능 개선

    @@ Locality :

      - CPU는 Memory의 어떤 위치에서 값을 가져옴. 만약 해당 내용이 Memory에 없다면, 다시 harddisk로부터 해당하는 파일의 일부를 Memory로 불러 들여야 함. 이 과정이 Hit Rate 이며, 이런 local 영역에서 Hit Rate와 Performance는 비례하므로, 어떤 값을 사용할 것인가의 예측(선택)이 중요. 이를 통해 최근 사용했던 Memory 또는 해당 Memory 인근에 접근 가능성이 높음을 지칭하는걸 Locality라 함.

      - 공간 지역성 && 시간 지역성. 2가지로 구성

      - 공간 지역성이란? 한번 접근한 data의 인근에 저장된 data가 다시 접근할 가능성이 높은 것 (ex. Array 배열)

      - 시간 지역성이란 ? 한번 접근한 data가 가까운 시간 내에 다시 접근할 가능성이 높은 것 (ex. for-while 반복문)

 


 

<출처 1> https://m.blog.naver.com/complusblog/221204759836

<출처 2> https://wikidocs.net/65523

<출처 3> https://wikidocs.net/22298

<출처 4> https://www.youtube.com/watch?v=jXLeXgIWNbQ

<출처 5> https://m.post.naver.com/viewer/postView.nhn?volumeNo=15948884&memberNo=36916118

<출처 6>

 

 

'Programing > OS' 카테고리의 다른 글

[OS] Spooling  (0) 2022.08.09
[OS] Buffering  (0) 2022.08.08
[OS] Deadlock 예제 코드 (with Java, C++)  (0) 2022.07.24
[OS] Deadlock (데드락)  (0) 2022.07.21

댓글