• toc {:toc}

File System Structure

  • Disk ๋Š” ๋ฎ์–ด์“ฐ๊ธฐ, ๋žœ๋ค ์ ‘๊ทผ์„ ์ œ๊ณตํ•œ๋‹ค.
    • I/O ์ „์†ก์€ ํ•˜๋‚˜ ์ด์ƒ์˜ sector ๋กœ ์ด๋ฃจ์–ด์ง„ block ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. (512bytes or 4KB)
    • ์ผ๋ฐ˜์ ์œผ๋กœ 4KB
  • File system โ†’ secondary storage ์— ์œ„์น˜ํ•œ๋‹ค.
  • Mapping Logical to physical
  • Logical file system ์€ metadata ์ •๋ณด๋ฅผ ๋‹ค๋ฃฌ๋‹ค.
  • Metadata : ๊ตฌ์กฐ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ •๋ณด. ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • File Control Block (FCB) ๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • File organization module โ†’ logical block ๊ณผ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ๊ฐ ํŒŒ์ผ์˜ logical block โ‡’ 0~N ์œผ๋กœ ๋ฒˆํ˜ธ ๋งค๊ฒจ์ง„๋‹ค.
    • Free-space manager ๋ฅผ ํ†ตํ•ด ํ• ๋‹น๋˜์ง€ ์•Š์€ block ์„ ์ถ”์ ํ•œ๋‹ค.
  • Basic file system
    • logical block ์ฃผ์†Œ๋“ค์— ๋Œ€ํ•ด ๋“œ๋ผ์ด๋ธŒ์— ๋ช…๋ น์„ ๋‚ด๋ฆฐ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์™€ ์บ์‰ฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
    • Block I/O subsystem ์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค.
  • Device driver
    • I/O device ๋ฅผ ๋‹ค๋ฃฌ๋‹ค.
    • ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์‚ฌ์ด ์ •๋ณด๋ฅผ ์ „์†กํ•œ๋‹ค.
    • High level ๋ช…๋ น์ด ์ฃผ์–ด์ง€๊ณ  low level instruction ์„ ์ถœ๋ ฅํ•œ๋‹ค.

Disk Structure

  • Partition : ๋””์Šคํฌ์˜ ๋…ผ๋ฆฌ์  ๋ถ„ํ• ์„ ๋œปํ•œ๋‹ค. โ‡’ ๋””์Šคํฌ๋ฅผ ๋ถ„ํ• ํ•œ ๊ฒƒ์„ ๋งํ•จ.
    • Raw(w/o file system), Formatted(w/ file system) ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Volumn : ํ•˜๋‚˜์˜ file system ์˜ logical area
    • Device directory ๋˜๋Š” volume table of contents ๋ฅผ ์ด์šฉํ•ด file system ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.

File System Operation

  • Boot control block (per volumn) : OS ๋ฅผ boot ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
    • OS ๋ฅผ ํฌํ•จํ•œ volumn ์˜ ๊ฒฝ์šฐ ์ฃผ๋กœ volumn ์˜ ์ฒซ block ์„ boot control block ์ด ์ฐจ์ง€ํ•œ๋‹ค.
  • Volumn control block (per volumn) : volumn ์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
    • ์ด block ์ˆ˜, free block ์ˆ˜, ํฌ๊ธฐ, ๋“ฑ
  • Directory structure (per file system) : file ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  • File control block (per file) : file ์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • Mount table : file system mount, mount point ๋“ฑ์„ ์ €์žฅํ•œ๋‹ค.
  • Directory structure cache : ์ตœ๊ทผ ์ ‘๊ทผํ•œ directory ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • System-wide open-file table : ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์—ด๋ฆฐ file ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • Per-process open-file table : system-wide open-file table ์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฐ pointer ๋ฅผ ํฌํ•จํ•œ๋‹ค.

image

image

  • ํŒŒ์ผ open ๊ณผ์ •
  1. Open
  2. ๋””์Šคํฌ์—์„œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  3. ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์—์„œ ํŒŒ์ผ์„ ์„ ํƒํ•œ๋‹ค.
  4. FCB ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.
  5. ์ฒ˜์Œ ์˜ฌ๋ฆฌ๋Š” ๊ฒฝ์šฐ system-wide open-file table ์— entry ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  6. Per-process open-file table ์— ํ•ด๋‹น ํŒŒ์ผ์˜ system-wide open-file table entry ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” pointer ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

Directory Implementation

  • Linear List : Data block ์— ๋Œ€ํ•ด (file name / pointer) ์ €์žฅ
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • ์‹œ๊ฐ„ ์†Œ์š”๊ฐ€ ์žˆ๋‹ค. (์„ ํ˜• ๋ณต์žก๋„)
    • linked list ๋˜๋Š” B+ tree ์ด์šฉํ•ด ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ
  • Hash Table : hash ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ linear list
    • Search time ์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
    • Collision : ํ•ด์‰ฌ ํ•จ์ˆ˜์— ์˜ํ•ด ๋ณ€ํ™˜๋์„ ๋•Œ ๊ฐ™์€ ์œ„์น˜์— 2 ๊ฐœ์˜ ํŒŒ์ผ์ด ์œ„์น˜ํ•˜๋Š” ์ƒํ™ฉ
      • ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ file ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ โ†’ Collision ๋ฐœ์ƒ X
      • ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด linked list ๋กœ ํŒŒ์ผ ์—ฐ๊ฒฐ

Contiguous Allocation Method

  • ๊ฐ file ์ด contiguous block ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ ์œ ํ•œ๋‹ค.
  • ๊ฐ„๋‹จํ•˜๋‹ค.
  • (file, Start, Length) ๊ตฌ์กฐ
  • ๋ฌธ์ œ์ 
    • ๋น„์–ด์žˆ๋Š” ๊ณต๊ฐ„์„ ์ฐพ๋Š” ๊ณผ์ • (Free frame ์ฐพ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค. Free disk block ์ฐพ๊ธฐ)
    • ๋™์  ์ €์žฅ์†Œ ํ• ๋‹น
    • External fragmentation
  • โ‡’ ๋ณ€ํ˜•
  • ์ฒ˜์Œ์—๋Š” contiguous ํ•˜๊ฒŒ ์ €์žฅ
  • Hole ์ด ์ƒ๊ฒผ์„ ๋•Œ contiguous ํ•˜๊ฒŒ ์ €์žฅํ•œ ํ›„ ์ €์žฅํ•˜์ง€ ๋ชปํ–ˆ์„ ๋•Œ ๋‹ค์Œ hole ์—์„œ contiguous ํ•˜๊ฒŒ ์ €์žฅ

Linked Allocation Method

  • ๊ฐ file ์ด block ์˜ linked list ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • Block ์•ˆ์— ๋‹ค์Œ block ์˜ ๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋œ๋‹ค.
  • (file, Start, End) ๊ตฌ์กฐ
  • ์••์ถ•, External fragmentation ์—†๋‹ค.
  • ๋ฌธ์ œ์ 
    • ์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ๋‹ค. ---โ‡’ ์ค‘๊ฐ„ ์ •๋ณด๊ฐ€ ์œ ์‹ค๋˜๋ฉด ๋‹ค์Œ block ์€ ์ „๋ถ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
    • Block ์˜ ์ค‘๊ฐ„ ์œ„์น˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” disk seek ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • File Allocation Table (FAT)
    • File ๋“ค์ด ์—ฐ๊ฒฐ๋œ ๋ฒˆํ˜ธ๋“ค์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” table ์ด๋‹ค.
    • Table ์ด ๊ฐ block ์— ๋Œ€ํ•ด ์—ฐ๊ฒฐ๋œ block number ๋กœ ์ธ๋ฑ์‹ฑ๋œ ํ•˜๋‚˜์˜ entry ๋งŒ ๊ฐ–๋Š”๋‹ค.
    • MS Dos ์—์„œ ์‚ฌ์šฉ๋๋‹ค.

Indexed Allocation Method

  • ๊ฐ block ์˜ pointer ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” index block ๋ฅผ ์ง€๋‹Œ๋‹ค.
  • (file, index block)

Performance of Allocation Methods

  • File access type ์— ๋”ฐ๋ผ ์ข‹์€ ๋ฐฉ๋ฒ• ๋‹ค๋ฅด๋‹ค.
    • Contiguous โ†’ sequential / random
    • Linked โ†’ sequential / not random
  • ๋งŒ๋“ค ๋•Œ contiguous or linked ๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • Indexed ๊ฐ€ ๋” ๋ณต์žกํ•˜๋‹ค.
    • ํ•˜๋‚˜์˜ block ์„ ์ฝ์œผ๋ คํ•ด๋„ index block ์„ ์ฝ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ์—ฐ์‚ฐ ๋ฐœ์ƒ
    • โ‡’ ์—ฌ๋Ÿฌ ๊ฐœ ์—ฐ์†๋œ ๋ฌถ์Œ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค. โ‡’ throughput ํ–ฅ์ƒ, CPU overhead ๊ฐ์†Œ
  • NVM โ†’ disk head ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•„์š”

Free-Space Management

  • ์ด์šฉ ๊ฐ€๋Šฅํ•œ block, cluster ๋ฅผ ์ถ”์ ํ•˜๋Š” free-space list ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Bit vector or bit map (n blocks)
  • block free : 1
  • block occupied : 0
  • word โ‡’ bit ๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ
  • (0 ์œผ๋กœ ๊ตฌ์„ฑ๋œ word) X (word ์•ˆ์˜ bit ์˜ ์ˆ˜) + (1 ์ด ๋‚˜์˜ฌ ๋•Œ ๊นŒ์ง€์˜ bit ์ˆ˜) โ‡’ free block
  • Contiguous file ์„ ์–ป๊ธฐ ์‰ฝ๋‹ค.
  • Linked List (Free List) : free block ์ด linked list ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  • Grouping : n ๊ฐœ์˜ free block ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋„๋ก linked list ๊ตฌ์„ฑ
  • Counting : (start addr, length) ๋กœ counting ํ•ด ์ €์žฅ [(0, 2), (6, 2), (14, 3) โ€ฆ]
  • Space Maps

Efficiency and Performance

  • Efficiency
    • Fragmentation ๋ฐœ์ƒํ•˜๋ฉด ํšจ์œจ ๊ฐ์†Œ
    • Metadata ์ฆ๊ฐ€ โ‡’ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณต๊ฐ„ ๊ฐ์†Œ โ‡’ ํšจ์œจ ๊ฐ์†Œ
    • Metadata ํ•„์š”์‹œ ์ถ”๊ฐ€ โ‡’ ๋นˆ๊ณต๊ฐ„ ์ฐพ๋Š” overhead โ‡’ ํšจ์œจ ๊ฐ์†Œ
    • FCB ๊ณต๊ฐ„ ๋ฏธ๋ฆฌ ํ• ๋‹น โ‡’ ์•ˆ ์“ฐ๋ฉด ํšจ์œจ ๊ฐ์†Œ
  • Performance
    • data ์™€ metadata ๊ฐ€ ๊ฐ™์ด ์œ„์น˜ํ•˜๋„๋ก ์œ ์ง€ํ•ด disk ๊ฐ€ ๋œ ์›€์ง์ด๊ฒŒ ํ•œ๋‹ค.
    • Buffer cache : ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” block ์— ๋Œ€ํ•œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์—ญ์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
    • Synchronous : ๋ฐ”๋กœ disk ์— ์ž‘์„ฑ
    • Asynchronous : buffer ์— ๋†”๋‘๊ณ  ๋‚˜์ค‘์— disk ์— ์ž‘์„ฑ (๋” ํ”ํ•œ ๋ฐฉ์‹)
      • ๋ชจ์•˜๋‹ค๊ฐ€ ์ž‘์„ฑํ•ด์„œ ๋” ๋น ๋ฅด๋‹ค. ๊ณ„์† ์ ‘๊ทผํ•  ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ.
    • Free-behind / read-ahead : sequential access ์— ์ตœ์ ํ™”
    • Read ๊ฐ€ ์ฃผ๋กœ write ๋ณด๋‹ค ๋А๋ฆฌ๋‹ค.
      • read โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ฝ์–ด์•ผ ํ•œ๋‹ค.
      • write โ†’ ๋ฐ์ดํ„ฐ buffer ์— ์ €์žฅํ•ด๋’€๋‹ค๊ฐ€ ๋ฎ์–ด์”Œ์šฐ๋ฉด ๋œ๋‹ค.

Page Cache

  • Virtual memory, address ๋ฅผ ์ด๋™ํ•ด page ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ๋””์Šคํฌ๋กœ์˜ ์ ‘๊ทผ๋ณด๋‹ค cache ์ ‘๊ทผ์ด ๋” ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•œ ๋ฒˆ ์ฝ์€ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ page cache ์˜์—ญ์— ์ €์žฅ์‹œ์ผœ ๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ โ‡’ ๋””์Šคํฌ ์ ‘๊ทผ ๊ฐ์†Œ
  • Memory-mapped I/O ์ด page cache ์ด์šฉ
  • File system ์˜ routine I/O ๋Š” buffer cache ์ด์šฉ

Unified Buffer Cache

  • ๋Œ€๋ถ€๋ถ„์˜ block ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” block ์ด๋‹ค.
  • โ†’ ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด buffer cache ์— ์กด์žฌ
  • โ†’ ๋”ฐ๋ผ์„œ buffer cache ์—๋„ ์กด์žฌํ•˜๊ณ  page cache ์—๋„ ์กด์žฌํ•˜๋Š” ์ด์ค‘ cache ๋ฌธ์ œ ๋ฐœ์ƒ
  • โ†’ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ™์€ page cache ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Recovery

  • Consistency checking : ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธ / ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณต๊ตฌ
  • Back up ํ•ด ๋†“๊ณ  ๋ณต๊ตฌํ•œ๋‹ค.

Log Structured File Systems

  • Log structured(or journaling) : ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ฑฐ๋ž˜๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ log ์— ์จ์ง„๋‹ค.
  • ๊ฑฐ๋ž˜๊ฐ€ ๊ฐ€๋” device ๋‚˜ disk section ์— ์จ์ง€๋Š” ๊ฒฝ์šฐ ์žˆ๋‹ค.
  • log ๋Š” asynchronous ํ•˜๊ฒŒ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ์— ๋ฐ˜์˜๋œ๋‹ค.
    • log ๊ธฐ๋ก๋งŒ ๋˜๊ณ  disk ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ถฉ๋Œ์ด ๋‚˜๋ฉด log ์—์„œ ๋‚จ์•„์žˆ๋Š” ๋ชจ๋“  ๊ฑฐ๋ž˜๋Š” ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.