[운영체제] Chapter 11. File Systems Implementation (2)

2023. 2. 1. 22:53CS/운영체제

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 사용
  • 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을 해서 속도 효율성을 높일 수 있다.

 

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가 아니라 바로 매핑해서 사용, (ㄱ) 내용 == (ㄴ) 내용, 논리적인 페이지(ㄱ)가 물리적인 메모리의 프레임에 올라와 있다.
  • 장점) 이미 메모리에 올라와 있는 내용이면 운영체제의 도움을 받을 필요 없어서 더 빠르고, 카피하는 오버헤드가 발생하지 않는다.
  • 단점) 다른 프로세스도 매핑해서 쓰기 때문에 일관성 문제 주의

  1. 프로그램이 OS에게 데이터 파일의 일부를 내 주소 공간 일부에 매핑해 달라고 시스템 콜
  2. 프로그램이 실행되면서 메모리의 위치를 접근했을 때 그 내용이 메모리에 올라와 있지 않다면 page fault 발생 → OS에게 CPU 제어권이 넘어가고, page fault난 페이지를 물리적 메모리에 올려놓음
  3. 가상 페이지(ㄱ)가 물리 메모리의 페이지(ㄴ)로 매핑
    • 프로세스가 데이터 파일의 (ㄱ)에 접근할 때 OS의 도움을 받지 않고 물리적 메모리의 (ㄴ)에 데이터를 읽고 쓸 수 있다.
  4. (ㄴ)이 메모리에서 쫓겨나면 swap area에 쓰는 것이 아니라 mmap() 파일이기 때문에 파일에 수정된 내용을 써주고 쫓아내야 한다.
  5. 동일한 파일의 동일한 데이터에 대해 nmap을 호출하면 (ㄴ)이 공유되어 프로세스 A에게도, B에게도 매핑된다.

3-3. 사용자 프로그램이 파일을 접근하는 방식 - read, write 시스템 콜 사용

  • 캐시에 있는 내용을 카피해서 프로세스의 주소 공간에 전달
  • 복제본을 가지고 있는 것이기 때문에 일관성 문제가 발생하지 않는다.
  1. 프로그램 A가 데이터 파일의 특정 내용을 달라고 OS에게 시스템 콜
  2. OS는 버퍼 캐시에 해당 내용을 읽어와야 함
    • unified 버퍼 캐시라면 (ㄴ)은 페이지 캐시, (ㄴ)은 프로세스 A의 주소공간에 매핑된 상태이지만 또한 (ㄴ)은 버퍼 캐시를 겸하고 있다.
  3. 요청한 부분이 이미 페이지 캐시(버퍼 캐시)에 올라와 있다면 해당 내용을 카피해서 사용자 프로세스에게 전달

 

[복습]

    1. 페이지 캐시: 가상 메모리의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱의 관점에서 설명, 스왑 영역에 내려와 있는지 페이지 캐시에 올라와 있는지
    2. Memory-Mapped I/O: 파일의 일부를 가상 메모리 영역에 매핑시켜 매핑 시긴 영역에 대한 메모리 접근 연산은 시스템 콜을 통해서가 아니라 파일의 입출력을 수행하게 함
    3. 버퍼 캐시: 파일 시스템을 통한 I/O 연산에 사용, 파일 데이터가 파일 시스템의 스토리지에 저장되어 있는지 운영체제의 버퍼 캐시에 올라와 있는지
    4. Unified Buffer Cache: 공간 구분을 미리 하지 않고 똑같이 페이지 단위로 관리하면서 파일 입출력으로서의 공간이 필요하면 페이지 단위로 할당해서 버퍼 캐시에게, 프로세스의 주소 공간이 필요하면 페이지를 프로세스의 주소 공간으로 할당
    5. m-map()을 사용: 운영체제를 호출하지 않고 자신이 직접 자신의 메모리에 접근하듯이 읽어올 수 있다.
      • 운영체제의 도움이 필요 없기 때문에 더 빠르고, 카피하는 오버헤드가 발생하지 않는다.
      • 다른 프로세스도 매핑해서 쓰기 때문에 일관성 문제 발생할 수 있다.
    6. Unified Buffer Cache를 이용: 버퍼 캐시에 있는 내용을 카피하지 않고 페이지 캐시 자체가 사용자 프로세스의 논리적 영역에 매핑되어 페이지 캐시에 읽고 쓸 수 있다.
    7. 실행 파일의 코드는 스왑 영역으로 내려가지 않는다. 이미 파일 시스템에 실행 파일로 저장되어 있다.

 

 

 

 


이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제] 강의 정리입니다.

https://core.ewha.ac.kr/publicview/C0101020140523142954456205?vmode=f 

 

반효경 [운영체제] 26. File System Implementations 2

설명이 없습니다.

core.ewha.ac.kr

 

728x90