페이지 캐시는 운영체제의 주어지는 정보가 제한적이었다.
버퍼 캐시 - 파일의 데이터를 운영체제가 읽어온 내용을 자기 영역에 저장해놓고
이 파일을 다른 프로세스가 요청하면 디스크로 가지 않고 바로 데이터를 주게된다.
최근에는 Unified Buffer Cache 로 합쳐서 관리한다.
Buffer cache도 페이지 단위로 관리한다.
페이지 캐시는 메모리 관리할때 페이지 프레임들을 두고,
페이지 프레임에 당장 필요한 내용을 메모리에 올려두고 필요하지 않은 애들을 쫒아내는 것이었다.
그걸 캐시에 관점에서 페이지 캐시라고 한다.
버퍼 캐시는 파일을 읽고 그 내용을 커널 영역에 저장해뒀다가 다른 프로세스가 요청하면 데이터를 주는
형식이었다.
페이지 캐시는 프로세스의 주소 공간의 페이지가 Swap area 로 내려가 있는가 ,
아니면 Page Cache 에 올라가 있는가 의 얘기고
버퍼캐시는 파일 시스템에 내려가있는가 아니면, 버퍼 캐시에 올라가있는가 의 관점이다.
기존에 방식에서는 운영체제가 해당하는 파일 내용이 버퍼 캐시에 있는지 확인하고
없으면 파일시스템에서 가져와서 프로세스에 전달하는 방식이었다.
또 memory-mapped I/O 에서는 자신의 주소 공간 중 일부를 파일에 맵핑해놓는다.
디스크에서 읽어와서 버퍼 캐시에 저장해놓는것까지는 똑같다.
그걸 이제 페이지 캐시에 copy를 해서 준다.
Unified Buffer Cache 방식에서는 운영체제가 버퍼 캐시 공간을 따로 두지 않고
필요에 따라서 페이지 캐시 공간을 할당해서 쓴다고 했다.
프로그램이 파일시스템에 저장되어있다가, 실행파일을 실행시키면
프로세스가 되고 프로세스만의 독자적인 주소 공간인 Virtual Memory 가 생성된다.
주소변환을 해주는 하드웨어에 의해서 당장 필요한 부분은 물리적인 메모리에 올라가있게 되고
공간이 한정되어있기 때문에 쫒겨나는건 Swap Area로 넘어가게 된다.
여기서 code 부분은 쫒겨날때 Swap area 에 내려가지 않는다 왜냐면
code 는 read only 여서 이미 실행파일에 저장이 되어있는것 이미 파일시스템에 있기 때문에
Swap area로 가지 않는다.
-> code 부분이 memory mapped I/O 의 대표적 예시
데이터 파일도 파일시스템에 저장이 되어있는데 ,
프로그램이 실행되다가, 자신의 주소의 메모리 접근만 하는게 아니라 파일의 내용을 읽어오는
read 가 발생하기도 하는데, 이 파일 데이터를 자신의 데이터에 mapped 하기 위해
운영체제에 요청을 하고 데이터 파일의 일부를 프로세스의 주소 공간에 mapping 해두는것
'프로그래밍 > 운영체제' 카테고리의 다른 글
[운영체제] Disk Management and Scheduling (0) | 2020.06.22 |
---|---|
[운영체제] File System Implementation (0) | 2020.06.21 |
[운영체제] File and File System (0) | 2020.06.20 |
[운영체제] Virtual Memory 2 - Clock , Working set, PFF (0) | 2020.06.20 |
[운영체제] Virtual Memory - FIFO, LRU, LFU (0) | 2020.06.20 |