[운영체제] Chapter 11. File Systems Implementation (2)
2023. 2. 1. 22:53ㆍCS/운영체제
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
Page Cache and Buffer Cache, 프로그램의 실행
1. Page Cache and Buffer Cache
- Page Cache(페이지 단위로 관리)
- 가상 메모리의 페이징 시스템에서 사용하는 페이지 프레임을 caching의 관점에서 설명하는 용어
- 프로세스의 주소 공간을 구성하는 페이지가 swap area에 내려와 있는지 page cache에 올라와 있는지를 caching의 관점에서
- Memory-Mapped I/O를 쓰는 경우 file의 I/O에서도 page chace 사용
- Memory-Mapped I/O: 원래는 파일에 접근할 때 read, write 시스템 콜을 통해 접근했는데 해당 방법을 사용하면 파일의 일부를 가상 메모리 영역에 mapping 시켜서 매핑시킨 영역에 대한 메모리 접근 연산은 시스템 콜을 통해서가 아니라 파일의 입출력을 수행하게 함
- 메모리에서 데이터를 읽고 쓰는 것처럼 하지만 실제로는 파일에 데이터를 읽고 쓰는 효과를 가진다.
- OS에게 주어지는 정보가 제한적 → Clock algorithm 사용
- 가상 메모리의 페이징 시스템에서 사용하는 페이지 프레임을 caching의 관점에서 설명하는 용어
- Buffer Cache(block 단위로)
- 파일 데이터가 파일 시스템의 스토리지에 저장되어 있는지 운영체제의 버퍼 캐시에 올라와 있는지
- 파일 시스템을 통한 I/O 연산은 메모리의 특정 영역인 buffer cache를 사용
- 한번 읽어온 block에 대한 후속 요청 시 buffer cache에서 즉시 전달
- 모든 프로세스가 공용으로 사용
- 시스템 콜을 하면 무조권 CPU의 제어권이 OS에게 넘어가기 때문에
- Replacement algorithm 필요: LRU, LFU 등
- Unified Buffer Cache
- 최근의 OS에서는 기존의 buffer cache가 page cache에 통합됨
- 공간 구분을 미리 하지 않고 똑같이 페이지 단위로 관리하면서
- 파일 입출력으로서 공간이 필요하면 page 단위로 할당해서 버퍼 캐시로 사용하고
- 프로세스의 주소 공간으로 필요하면 page를 프로세스의 주소공간으로 할당
- 공간 구분을 미리 하지 않고 똑같이 페이지 단위로 관리하면서
- buffer cache도 페이지 단위로 관리한다.
- 최근에는 페이지 캐시(4KB)와 버퍼 캐시(512 byte)가 합쳐져 버퍼 캐시도 4KB 페이지 크기로 블럭들을 관리할 수 있다.
- 디스크의 swap area도 4KB 보다 더 큰 단위로 swapping을 해서 속도 효율성을 높일 수 있다.
- 최근의 OS에서는 기존의 buffer cache가 page cache에 통합됨
2. Unified Buffer와 File I/O
2-1. Unified Buffer Cache를 이용하지 않는 File I/O
- File을 open 하고 read/write 시스템 콜을 하면 OS가 해당 내용이 버퍼 캐시에 있으면 바로 전달하고 없으면 disk 파일 시스템에서 읽어와서 전달
- m-map을 사용하는 이유: 이미 메모리에 올라온 내용에 대해서는 운영체제를 호출하지 않고 자신이 직접 자신의 메모리에 접근하듯이 읽어올 수 있다.
- unified buffer cache를 이용하지 않는다면 무슨 방법을 쓰던 간 버퍼 캐시의 내용을 자신의 페이지 캐시에 copy 해야 하는 오버헤드가 발생
2-2. Unified Buffer Cache를 이용하는 File I/O
- Unified Buffer Cache를 이용하면 버퍼 캐시에 있는 내용을 카피하지 않고 페이지 캐시 자체가 사용자 프로세스의 논리적 영역에 매핑되어 페이지 캐시에 읽고 쓸 수 있다.
3. 프로그램의 실행 - 파일을 프로그램의 주소 영역에 매핑
3-1. 실행파일의 코드 영역
- 프로세스의 virtual memory에 존재하는 code 영역은 메모리에 올라왔다가 쫓겨날 때 swap area로 내려가지 않는다
→ 코드는 read only, 이미 파일 시스템에 실행 파일로 저장되어 있다. - 실행파일을 실행시킬 때 loader를 사용해서 메모리에 올려놓는데, 이때 memory mapped I/O를 사용하는 부분이 코드 부분
- 코드는 별도의 swap area 영역을 가지고 있지 않는다.
- 파일 시스템에서 파일 형태로 존재하는 내용이 그대로 프로세스의 주소 영역에 매핑이 된 상태
- 프로그램이 특정 코드를 접근하는데 메모리에 올라오지 않았다면 swap에서 올리는 게 아니라 파일 시스템에 실행파일에 있는 부분을 올리는 것
3-2. 사용자 프로그램이 파일을 접근하는 방식 - memory mapped I/O 사용
- copy가 아니라 바로 매핑해서 사용, (ㄱ) 내용 == (ㄴ) 내용, 논리적인 페이지(ㄱ)가 물리적인 메모리의 프레임에 올라와 있다.
- 장점) 이미 메모리에 올라와 있는 내용이면 운영체제의 도움을 받을 필요 없어서 더 빠르고, 카피하는 오버헤드가 발생하지 않는다.
- 단점) 다른 프로세스도 매핑해서 쓰기 때문에 일관성 문제 주의
- 프로그램이 OS에게 데이터 파일의 일부를 내 주소 공간 일부에 매핑해 달라고 시스템 콜
- 프로그램이 실행되면서 메모리의 위치를 접근했을 때 그 내용이 메모리에 올라와 있지 않다면 page fault 발생 → OS에게 CPU 제어권이 넘어가고, page fault난 페이지를 물리적 메모리에 올려놓음
- 가상 페이지(ㄱ)가 물리 메모리의 페이지(ㄴ)로 매핑
- 프로세스가 데이터 파일의 (ㄱ)에 접근할 때 OS의 도움을 받지 않고 물리적 메모리의 (ㄴ)에 데이터를 읽고 쓸 수 있다.
- (ㄴ)이 메모리에서 쫓겨나면 swap area에 쓰는 것이 아니라 mmap() 파일이기 때문에 파일에 수정된 내용을 써주고 쫓아내야 한다.
- 동일한 파일의 동일한 데이터에 대해 nmap을 호출하면 (ㄴ)이 공유되어 프로세스 A에게도, B에게도 매핑된다.
3-3. 사용자 프로그램이 파일을 접근하는 방식 - read, write 시스템 콜 사용
- 캐시에 있는 내용을 카피해서 프로세스의 주소 공간에 전달
- 복제본을 가지고 있는 것이기 때문에 일관성 문제가 발생하지 않는다.
- 프로그램 A가 데이터 파일의 특정 내용을 달라고 OS에게 시스템 콜
- OS는 버퍼 캐시에 해당 내용을 읽어와야 함
- unified 버퍼 캐시라면 (ㄴ)은 페이지 캐시, (ㄴ)은 프로세스 A의 주소공간에 매핑된 상태이지만 또한 (ㄴ)은 버퍼 캐시를 겸하고 있다.
- 요청한 부분이 이미 페이지 캐시(버퍼 캐시)에 올라와 있다면 해당 내용을 카피해서 사용자 프로세스에게 전달
[복습]
- 페이지 캐시: 가상 메모리의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱의 관점에서 설명, 스왑 영역에 내려와 있는지 페이지 캐시에 올라와 있는지
- Memory-Mapped I/O: 파일의 일부를 가상 메모리 영역에 매핑시켜 매핑 시긴 영역에 대한 메모리 접근 연산은 시스템 콜을 통해서가 아니라 파일의 입출력을 수행하게 함
- 버퍼 캐시: 파일 시스템을 통한 I/O 연산에 사용, 파일 데이터가 파일 시스템의 스토리지에 저장되어 있는지 운영체제의 버퍼 캐시에 올라와 있는지
- Unified Buffer Cache: 공간 구분을 미리 하지 않고 똑같이 페이지 단위로 관리하면서 파일 입출력으로서의 공간이 필요하면 페이지 단위로 할당해서 버퍼 캐시에게, 프로세스의 주소 공간이 필요하면 페이지를 프로세스의 주소 공간으로 할당
- m-map()을 사용: 운영체제를 호출하지 않고 자신이 직접 자신의 메모리에 접근하듯이 읽어올 수 있다.
- 운영체제의 도움이 필요 없기 때문에 더 빠르고, 카피하는 오버헤드가 발생하지 않는다.
- 다른 프로세스도 매핑해서 쓰기 때문에 일관성 문제 발생할 수 있다.
- Unified Buffer Cache를 이용: 버퍼 캐시에 있는 내용을 카피하지 않고 페이지 캐시 자체가 사용자 프로세스의 논리적 영역에 매핑되어 페이지 캐시에 읽고 쓸 수 있다.
- 실행 파일의 코드는 스왑 영역으로 내려가지 않는다. 이미 파일 시스템에 실행 파일로 저장되어 있다.
이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제] 강의 정리입니다.
https://core.ewha.ac.kr/publicview/C0101020140523142954456205?vmode=f
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 운영체제(2014) - 반효경 교수님 (0) | 2023.02.02 |
---|---|
[운영체제] Chapter 12. Disk Management and Scheduling (1), (2) (0) | 2023.02.02 |
[운영체제] Chapter 11. File Systems Implementation (1) (0) | 2023.02.01 |
[운영체제] Chapter 10. File Systems (0) | 2023.01.19 |
[운영체제] Chapter 9. Virtual Memory (2) (0) | 2023.01.19 |