File - Free space management, Efficiency and performance

갱두·2021년 12월 5일
0

📚 운영체제

목록 보기
14/14

Free space management

Disk space에 free space를 관리하기 위해서 Free space list를 저장해둠
✔️ 디스크 super block에 저장해둠

  • super block : 파일 시스템에 대한 총체적인 정보를 담고 있음
    어느 부분이 비어있는 블럭이고, 사용하는 블럭인지, 어디부터가 data block 이고 inode 블럭인지 . .
  • inode 블럭 : 메타데이터를 따로 저장하는 곳

Bit map / vector

0이면 비어있는 공간, 1이면 사용 중인 공간

  • contiguous 파일을 얻기 쉬움 (연속된 n개의 free block을 찾는데 효과적이다)
  • 0 이나 1값을 저장할 부가적인 공간이 필요하다

Linked List

모든 free block을 링크로 연결함

  • 추가적인 공간 낭비 ❌
  • 연속적으로 free space가 있는 공간을 찾아야 하는데 찾기가 쉽지 않음

Etc.

  • Grouping : 링크드 리스트의 변형으로 첫번째 free block이 n개의 포인터를 가진다. 하나의 free block에 나머지 free block에 대한 위치 정보를 저장해두는 방식

Efficiency & Performance

디스크는 컴퓨터 부품 중에 제일 느리기 때문에 bottle neck 의 주 원인임
그래서 효율성 🔼, 퍼포먼스 🔼 해야함.

퍼포먼스 🔼

1. Buffer Cache / Page Cache


✔️ 페이지 캐시

  • Demand Paging에 사용되는 프로세스 메모리의 별도 섹션
  • Virtual memory 기술을 사용해서 페이지 캐싱
  • Memory-Mapped IO가 사용

✔️ 버퍼 캐시

  • 커널 메모리의 별도 섹션
  • 최근에 사용된 디스크 블럭이 저장됨
  • 여기에 있는게 요청이 되면 디스크 access할 필요 ❌

📎 Unified Buffer Cache

최근에는 둘이 통합되었다고 함 = 두번 캐싱되는 것을 막기 위해
buffer cache도 페이지 단위로 관리함

2. Synchronus / Asynchronus write

✔️ Synchronus write

  • buffered ❌ , cached ❌
  • 프로세스가 진행되기 전에 디스크에 도달해야 함
  • 가끔 OS나 app에 의해 필요한 경우가 있음

✔️ Asynchronus write

  • cache에 저장됨
  • 가장 많이 사용되고 bufferable, faster

3. Free behind & Read ahead

✔️ Free behind

  • 다음 페이지가 요청되는 즉시 버퍼에서 페이지 제거
  • 이전 페이지는 사용되는 일이 거의 없기 때문

✔️ Read ahead

  • 요청된 페이지 + 후속 페이지까지 미리 읽어둠
  • 이후의 페이지는 사용될 확률이 높기 때문!
profile
👩🏻‍💻🔥

0개의 댓글