전공/운영체제

File system -2

러비코스믹 2025. 6. 7. 15:24

Free-Space Management 

  ㄴ list -> bitmap

block number : (워드당 비트 수) * (0 값 워드 수) + 첫 번째 1 비트의 오프셋

//  CPU) 워드 내 첫 번째 "1" 비트의 오프셋을 반환하는 명령어 있음

 

ex) block size = 4KB (2^12 bytes), Disk = 1 TB (2^40 bytes)

  • n = 2^40 / 2^12 = 2^28 (32MB)의 비트맵 필요.
  • cluster size (block모음) : 4blcok -> 8MB의 메모리 

Linked Free Space List on Disk

공간 낭비 X, 효율적 할당 : 2->3 하고 포인터 설정 후 다음에 4번부터 이어서

<> 연속할당은 불리

 

Free-Space Management

  • Grouping (그룹화): ~= index.
  • Counting (카운팅): 연속 할당시 유용
    • 8|6|17 : 8번부터 6개 연속 -> 17번으로
    • 17|2|25 : 17번부터 2개 이어서 25번으로
    • // 바로 위 사진 참고
  • Space Maps (스페이스 맵):
    | **Pool (Volume)** | 전체 저장소 공간. 여러 디스크의 묶음 // 수백개의 metaslab                   
    | **VDEV**          | 실제 물리 장치 또는 장치 묶음                       
    | **Metaslab**      | 디스크를 일정한 단위로 나눈 작은 블록 관리 단위             
    | **Space Map (log) | 각 Metaslab 내의 공간 상태(할당/해제)를 추적하는 데이터 구조
    [1] 디스크 → many  metaslab (공간 관리 단위)
    [2] 각 메타슬랩 -> Space Map(Log) 보유
        - block 할당/해제를 log 로 기록 (카운팅 + 오프셋 형식)
    [3] 메타슬랩 사용 시
        → Space Map log -> memory load
        → 트리 구조로 정리 (빠른 검색/결합 가능)
    [4] contiguous free block → 하나로 압축 기록 


  • TRIMing Unused Blocks
    • HDD) overwrite  <> NVM : 지우고 free space에 써야함 
      •  TRIM) NVM의 해당 page 가 free space임을 알림 
        •  garbage colletion, free block -> 삭제

//NVM : NonVolatile Memory // SSD, Flash.. <> HDD: NAND 기반

 

 Performance

  • Buffer cache : 자주 사용되는 block 임시 buff
  • Synchronous writes: Disk write 까지 wait //반환 기다림 
  • Asynchronous writes: 그냥 쓰고 다른일함 // 비동기
  • Free-behind and read-ahead: 순차 접근 최적화
    •  속도) Write >> Read : 값을 받을때까지 기다려야하므로
      • > read-ahead: 미리 읽기, free-behind: 사용한 블록은 즉시 버퍼에서 해제
      • >> sequential access 일때 유용

 

Page Cache (페이지 캐시)

  • Disk block 대신 가상 메모리 기법/ 주소로 page cache
  • Memory-mapped I/O) 페이지 캐시
  • 일반적인 File system I/O) 버퍼캐시 사용

ㄴ 동일한 Data가 두 캐시에 이중으로 존재할수있음

>>

 

Unified Buffer Cache 

  •  동일한 page cache -> Memory-mapped page 와 일반적인 File system 모두 cahche
  •  ㄴ이중 캐싱을 방지

 

Recovery

  • Consistency checking : Directory data <-비교-> Disk data block -> slow
  • ㄴ 다른 Device 로 백업

 

Log Structured File Systems (LFS)

  : 모든 변경을 log 로 순차적 기록

[1] 트랜잭션(단위) 생성 → 로그에 기록 (순차적)
[2] File system) 비동기적으로 해당 변경을 반영 
[3] 반영될시 해당 로그 제거
if) 충돌 시, 남은 로그를 보고 Recovery

 

 

File System (파일 시스템 구조)

volume : 1~N partition

 ㄴ volume 별로 File system이 따로 들어감

 

Partitions and Mounting

    • Boot block: boot loader // OS를 memory로 올려주는 code
    • Root partition : OS 포함. 부팅 시 mount
    • 마운트 할때: file system ->  metadata consistency checked

 

 

Virtual File Systems (VFS)

: user(app) -> VFS API 로 파일 접근

  ㄴVFS interface) virtual node(vnode) 로 File systems 연결 

'전공 > 운영체제' 카테고리의 다른 글

File system  (1) 2025.06.07
I/O systems  (0) 2025.06.05
Virtual memory-2  (0) 2025.05.23
가상메모리  (0) 2025.05.15
메모리-4  (0) 2025.05.11