프로세스는 디스크에 직접 액세스 할 수 없다. OS가 디스크로부터 4KB크기의 블록을 읽어내어, 메모리상에 위치시킨다. 프로세스가 해당 메모리에 액세스한다. 데이터 읽기를 마친 프로세스는 할당된 메모리를 해제하지 않고 남겨둔다(페이지 캐시) 메모리 용량이 부족해지는 경우 LRU(가장 오래된 것을 파기하고, 새로운 것을 남김)

데이터 규모에 맞게 메모리 조정 -> 메모리 증설로 대응 불가 시, 분산 => 국소성을 고려한 분산(데이터 액세스 패턴에 따른 분산)

대규모 데이터를 다룰 때의 포인트

I/O대책의 기반은 OS에 있다.

OS가 캐시를 통해 대규모 데이터를 효율적으로 처리하고, OS캐시로 제대로 처리할 수 없게 되었을 때 분산에 대해 고려한다.

강의 8. OS의 캐시 구조

OS에는 디스크 내의 데이터에 빠르게 액세스할 수 있도록 하는 캐시 구조가 갖춰져 있다. 메모리를 이용해서 디스크 액세스를 줄이는 원리가 OS캐시

리눅스의 페이지 캐시의 특성

  1. 페이지라는 것은 대체 무엇인가?

가상메모리 : 논리적인 선형 어드레스를 물리적인 물리 어드레스로 변환하는 것 ※ 스왑 : 가상메모리를 응용한 기능 중 하나로, 물리 메모리가 부족할 때 2차 기억장치(디스크)를 메모리로 간주해서 외형상의 메모리 부족을 해소하는 원리

![<https://velog.velcdn.com/images/dnwls3525/post/a0e58fcb-29e6-4a0f-8b2e-da429adc5ec8/image.png>](<https://velog.velcdn.com/images/dnwls3525/post/a0e58fcb-29e6-4a0f-8b2e-da429adc5ec8/image.png>)

가상 메모리 구조

가상메모리 구조가 존재하는 이유 : 물리적인 하드웨어를 OS에서 추상화하기 위함

https://velog.velcdn.com/images/dnwls3525/post/09119053-9a17-47f7-8715-b4093f6188ae/image.png

메모리에 붙어있는 주소를 직접 프로그램에 사용하게 되면 곤란한 일이 발생한다.

[1] 프로세스에서 메모리를 요청할 때, [2]OS가 메모리에서 빈 곳을 찾는다. [3]비어있는 곳을 찾아 반환할 때, 다른 어드레스②를 반환한다. => 개별 프로세스에서는 메모리의 어느 부분을 사용하는지 관여하지 않고, 특정 번지부터 시작(0x000부터시작)하는 것으로 정해져 있으면 다루기 쉽기 때문

가상메모리 구조 : OS는 커널 내에서 메모리를 추상화하고 있다.(메모리를 직접 프로세스로 넘기지 않음)