๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OS

11์žฅ File Systems Implementation

reference: kocw์˜ ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜์™€ ๊ถŒ์ง„์šฑ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜(๋Œ€ํ•™ ์ •๊ทœ ์ˆ˜์—…)
์ˆ˜์—…์„ ๋“ฃ๊ณ ๋‚˜์„œ ๊ฐ•์˜ ๊ต์žฌ๋ฅผ ํƒ€์ดํ•‘ํ•˜๊ณ  ํ•„๊ธฐํ•œ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์›น๋ทฐ์—์„œ toc๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
github์˜ md ํŒŒ์ผ๋กœ ๋ณด๋Š” ๊ฒŒ ํŽธํ•˜์‹œ๋‹ค๋ฉด, ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


-> ์‹ค์ œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๊ฐ€?

*๊ต์ˆ˜๋‹˜์˜ ํ•œ๋งˆ๋””: computer science์—์„œ ๊ณตํ†ต์˜ ํ™”๋‘๋Š” ์ตœ์ ํ™”! Optimization์ด๋‹ค. (๋น„์šฉ์€ ์ ๊ฒŒ, ํšจ์œจ์€ ์ข‹๊ฒŒ-์†๋„๋Š” ๋น ๋ฅด๊ฒŒ, ๊ณต๊ฐ„ ํ™œ์šฉ์€ ์ ๊ฒŒ ๋“ฑ)

01 Allocation of File Data in Disk

  • Contiguous Allocation
  • Linked Allocation
  • Indexed Allocation

01-1 Contiguous Allocation

count๋ผ๋Š” ํŒŒ์ผ์€ 0์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ธธ์ด๊ฐ€ 2 - 2๊ฐœ์˜ block์„ ์ฐจ์ง€ํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.

  • ์žฅ์ 
    • fast I/O
      • ํ•œ ๋ฒˆ์˜ seek/rotation ์‹œ ๋งŽ์€ ๋ฐ”์ดํŠธ transfer
        • HDD์—์„œ ํ—ค๋“œ๊ฐ€ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ seek, ์›ํŒ์ด ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์„ rotation์ด๋ผ๊ณ  ๋งํ•จ.
      • realtime file ์šฉ์œผ๋กœ, ํ˜น์€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค์˜ swapping ์šฉ
    • direct access (= random access) ๊ฐ€๋Šฅ - ์ •๋ณด๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋‹ˆ๊นŒ ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์ 
    • external fragmentation (์ €์žฅํ•˜์ง€ ๋ชปํ•˜๋Š” hole-๋นˆ ๊ณต๊ฐ„ ๋ฐœ์ƒ)
    • file grow๊ฐ€ ์–ด๋ ค์›€
      • file ์ƒ์„ฑ ์‹œ ์–ผ๋งˆ๋‚˜ ํฐ hole์„ ๋ฐฐ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€?
      • grow ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋‚ญ๋น„ (ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ๊ฒƒ์„ ๋Œ€๋น„ํ•ด์„œ ๋ฏธ๋ฆฌ ํ• ๋‹น → internal fragmentation)

์ฐธ๊ณ ๋กœ, ์™ธ๋ถ€ ์กฐ๊ฐ์€ ์•„๋ฌด๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•˜๊ณ , ๋‚ด๋ถ€ ์กฐ๊ฐ์€ ์ด๋ฏธ ํ• ๋‹น์ด ๋๋Š”๋ฐ ์•„์ง ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.

01-2 Linked Allocation

jeep ํŒŒ์ผ์€ 9๋ฒˆ์—์„œ ์‹œ์ž‘ํ•ด์„œ 25๋ฒˆ์—์„œ ๋๋‚œ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•ด๋‘์—ˆ๋‹ค.

9๋ฒˆ์ง€์— ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” 16๋ฒˆ์ง€์— ์žˆ๋‹ค๊ณ  ์จ์ ธ์žˆ๋‹ค.

  • ์žฅ์ 
    • external fragmentation ๋ฐœ์ƒ X
  • ๋‹จ์ 
    • No direct access (= no random access) - ๊ฐ™์€ ํŒŒ์ผ ๋‚ด์—์„œ ์—ด๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
    • seek ์‹œ ๋งŽ์€ ์‹œ๊ฐ„ ์†Œ์š”
    • reliability ๋ฌธ์ œ
      • ์ค‘๊ฐ„์— ํ•˜๋‚˜์˜ ์„นํ„ฐ๊ฐ€ bad sector ๋˜๋ฉด (์‰ฝ๊ฒŒ ๋งํ•ด ๊ณ ์žฅ, pointer ์œ ์‹ค) ๊ทธ ๋’ท ๋ถ€๋ถ„์€ ๋ชจ๋‘ ์žƒ์Œ
    • ํฌ์ธํ„ฐ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด block์˜ ์ผ๋ถ€๊ฐ€ ๋˜์–ด ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง
      • ๋ณดํ†ต ํ•œ ์„นํ„ฐ๋Š” 512 bytes (๊ทธ๋ฆผ์—์„œ ํ•œ ๊ฐœ์˜ ๋ฒˆ์ง€)๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ ๋งˆ์ง€๋ง‰ 4 bytes์— ๋‹ค์Œ ๋ธ”๋Ÿญ์„ ์œ„ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•จ์œผ๋กœ์จ 508 bytes๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ → 1%๊ฐ€ ํ•ญ์ƒ ์†ํ•ด (ํฐ ๊ฐ’์ด๋‹ค!)

๋ณ€ํ˜•: FAT(File-Allocation Table) ํŒŒ์ผ ์‹œ์Šคํ…œ

  • ํฌ์ธํ„ฐ๋ฅผ ๋ณ„๋„์˜ ์œ„์น˜์— ๋ณด๊ด€ํ•˜์—ฌ reliability์™€ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • MS-DOS์™€ OS/2์—์„œ ์‚ฌ์šฉ
    • ์ฐธ๊ณ ๋กœ, MS-DOS์—์„œ FAT → winFAT32 → NTFS ๋กœ ๊ฐœ์„ ์‹œ์ผœ ์‚ฌ์šฉํ•œ๋‹ค.

01-3 Indexed Allocation

index๋ž€? ๋ชฉ๋ก

jeep๋ž€ ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋“ค์ด 19๋ฒˆ์ง€ block์— ๋“ค์–ด์žˆ๋‹ค.

19๋ฒˆ์ง€์— ๊ฐ€๋ณด๋‹ˆ, ์ฒซ๋ฒˆ์งธ๋Š” 9๋ฒˆ์ง€, ๋‘๋ฒˆ์งธ๋Š” 16๋ฒˆ์ง€, ... ์™€ ๊ฐ™์ด ๋ชฉ๋ก์„ ์•Œ๋ ค์ค€๋‹ค.

  • ์žฅ์ 
    • external fragmentation ๋ฐœ์ƒ X
    • direct access ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ํŒŒ์ผ์ด ๊ต‰์žฅํžˆ ์ž‘์€ ๊ฒฝ์šฐ์—๋„ ๊ณต๊ฐ„ ๋‚ญ๋น„ (์‹ค์ œ๋กœ ๋งŽ์€ ํŒŒ์ผ๋“ค์ด ๊ต‰์žฅํžˆ ์ž‘์Œ)
      • ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•œ ๋ธ”๋ก + ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ธ”๋ก
    • ๊ต‰์žฅํžˆtoo ํฐlarge ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค ๋ธ”๋ก์œผ๋กœ ๋ชจ๋‘ ํ‘œํ˜„ ๋ถˆ๊ฐ€๋Šฅ
      • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
      1. linked scheme : ๋งˆ์ง€๋ง‰์— ๋˜ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค ๋ธ”๋ก์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด
      2. multi-level index : ์ธ๋ฑ์Šค๊ฐ€ ๋˜ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค ๋ธ”๋ก์„ ๊ฐ€๋ฆฌํ‚ด

02 UNIX์™€ MS-DOS์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ

02-1 UNIX(Linux) ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ

  • Boot block
    • ๋ถ€ํŒ…์— ํ•„์š”ํ•œ ์ •๋ณด (bootstrap loader)
    • ์–ด๋– ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋ผ๋„ 0๋ฒˆ ๋ธ”๋ก์ด boot block
  • Super block
    • ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ด€ํ•œ ์ด์ฒด์ ์ธ ์ •๋ณด
      • ์–ด๋””๊ฐ€ ๋นˆ ๊ณต๊ฐ„์ธ์ง€, ์–ด๋””๊นŒ์ง€๊ฐ€ inode list์ธ์ง€ ๋“ฑ
  • Inode (์ค‘์š”!)
    • ํŒŒ์ผ ํ•˜๋‚˜ ๋‹น inode ํ•˜๋‚˜ ํ• ๋‹น
    • ํŒŒ์ผ ์ด๋ฆ„์„ ์ œ์™ธํ•œ ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ (ํŒŒ์ผ ์ด๋ฆ„์€ data block์— ์ €์žฅ)
    • direct blocks๋Š” ๋ฐ”๋กœ data block์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ , single indirect๋Š” index 1๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ , double์€ index๋ฅผ 2๋‹จ์œผ๋กœ ๊ฐ–๋Š”๋‹ค.
  • Data block
    • ํŒŒ์ผ์˜ ์‹ค์ œ ๋‚ด์šฉ์„ ๋ณด๊ด€
    • directory file
      • (ํŒŒ์ผ ์ด๋ฆ„, inode ๋ฒˆํ˜ธ)

02-2 MS-DOS ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ

ms-dos์™€ windows ๊ณ„์—ด

์ฐจ์ด์ : FAT๊ณผ Root directory

  • Root directory๋Š” ๋ง ๊ทธ๋Œ€๋กœ C:, D: ์„ ์˜๋ฏธํ•œ๋‹ค.
  • FAT: File Allocation Table
    • FAT์€ linked allocation์„ ์กฐ๊ธˆ ๋ณ€ํ˜•ํ•œ ๊ฒƒ์ด๋‹ค.
    • linked allocation์—์„œ๋Š” ์ค‘๊ฐ„์— ํ•˜๋‚˜์˜ ์„นํ„ฐ๊ฐ€ bad sector ๋˜๋ฉด ๊ทธ ๋’ค์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์ฝ์ง€ ๋ชปํ•œ๋‹ค๊ฑฐ๋‚˜ ํฌ์ธํ„ฐ์˜ ์ €์žฅ์œผ๋กœ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์ด ๋‚ฎ์•„์ง€๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค. ๋‹ค์Œ ๋ธ”๋ก์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋””๋ ‰ํ† ๋ฆฌ ํŒŒ์ผ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  FAT์— ์ €์žฅํ•ด๋‘ ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ  direct access ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.

03 Free-Space Management

์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•: Bit map or bit vector

  • ํ•ด๋‹น ๋ธ”๋ก์ด ์‚ฌ์šฉ์ค‘์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋น„ํŠธ๋กœ ํ‘œํ˜„
    • bit[i] = 0 : block[i] free
    • bit[i] = 1 : block[i] occupied
  • ์žฅ์ : ์—ฐ์†์ ์ธ n๊ฐœ์˜ free block ์„ ์ฐพ๋Š” ๋ฐ ํšจ๊ณผ์ 
  • ๋‹จ์ : bit map์€ ๋ถ€๊ฐ€์ ์ธ ๊ณต๊ฐ„์„ ํ•„์š”๋กœ ํ•จ

๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•: Linked list

  • ๋ชจ๋“  free block ๋“ค์„ ๋งํฌ๋กœ ์—ฐ๊ฒฐ
  • ์žฅ์ : ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ์—†์Œ
  • ๋‹จ์ : ์—ฐ์†์ ์ธ ๊ฐ€์šฉ๊ณต๊ฐ„(๋นˆ๊ณต๊ฐ„)์„ ์ฐพ๊ธฐ๋Š” ์–ด๋ ค์›€

์„ธ๋ฒˆ์งธ ๋ฐฉ๋ฒ•: Grouping

  • indexed list ๋ฐฉ๋ฒ•์˜ ๋ณ€ํ˜•
    • ์ฒซ๋ฒˆ์งธ free block์ด n๊ฐœ์˜ pointer๋ฅผ ๊ฐ€์ง
    • n-1 pointer (0, 1, ... , n-1)๋Š” free data block์„ ๊ฐ€๋ฆฌํ‚ด
    • ๋งˆ์ง€๋ง‰ pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” block์€ ๋˜ ๋‹ค์‹œ n pointer๋ฅผ ๊ฐ€์ง

๋„ค๋ฒˆ์งธ ๋ฐฉ๋ฒ•: Counting

  • ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์ข…์ข… ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ฐ์†์ ์ธ block์„ ํ• ๋‹นํ•˜๊ณ  ๋ฐ˜๋‚ฉํ•œ๋‹ค๋Š” ์„ฑ์งˆ์— ์ฐฉ์•ˆ
  • (first free block, # of contiguous free blocks) ์ •๋ณด๋ฅผ ์œ ์ง€
    • ex) (31, 5) 31๋ฒˆ์ง€ block๋ถ€ํ„ฐ 5๊ฐœ์˜ free block ์žˆ์Œ
  • ์—ฐ์†์ ์ธ free block ์„ ์ฐพ๋Š”๋ฐ ํšจ๊ณผ์ 

04 Directory Implementation

๋ชจ๋“  ๋ฐฉ๋ฒ•์€ trade off (์žฅ์ ์ด ์žˆ์œผ๋ฉด ๋‹จ์ ์ด ์žˆ๊ณ )

๊ธฐ์ค€: performance(์„ฑ๋Šฅ-์†๋„ํฌํ•จ)/์ €์žฅ๊ณต๊ฐ„/๋น„์šฉ

  • Linear list
    •   
    • <file name, file์˜ metadata>์˜ ๋ฆฌ์ŠคํŠธ
    • ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์— ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” linear search ํ•„์š”
    • ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค ๋น„ํšจ์œจ์ 
  • Hash Table
    • linear list + hashing
    • file name์„ ์ด ํŒŒ์ผ์˜ linear list ์œ„์น˜๋กœ ๋ฐ”๊พธ์–ด์คŒ
    • search time์„ ์—†์• ์„œ ํšจ์œจ์ ์ด์ง€๋งŒ ํ•ด์‹œ ํŠน์ง• ์ƒ collision ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • File์˜ metadata ๋ณด๊ด€ ์œ„์น˜
    • ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด ์ง์ ‘ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜
    • ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ํฌ์ธํ„ฐ๋ฅผ ๋‘๊ณ  ๋‹ค๋ฅธ ๊ณณ์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ex) inode, FAT ๋“ฑ
  • Long file name์˜ ์ง€์›
    • <file name, file์˜ metadata>์˜ list์—์„œ ๊ฐ entry๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ •๋œ ํฌ๊ธฐ
    • ํŒŒ์ผ ์ด๋ฆ„์ด ์—”ํŠธ๋ฆฌ ๊ธธ์ด๋ณด๋‹ค ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ ์—”ํŠธ๋ฆฌ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ํฌ์ธํ„ฐ๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ•
    • ์ด๋ฆ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ ํŒŒ์ผ ์ผ๋ถ€์— ์กด์žฌ

05 VFS and NFS

VFS (Virtual File System)

  • ์„œ๋กœ ๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ file system์— ๋™์ผํ•œ ์‹œ์Šคํ…œ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” OS์˜ layer
  • ๋‹ค์–‘ํ•œ file system (HDD, CDROM, NTFS ๋“ฑ) ์–ด๋””์— ์ €์žฅ๋˜๋“  ์ƒ๊ด€์—†์ด ํŒŒ์ผ ์œ„์น˜๋งŒ ์ œ๋Œ€๋กœ ์•Œ๋ ค์ฃผ๋ฉด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

NFS (Network File System)

  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์ด ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋‹ค
  • ์ฆ‰ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋„๋ก ํ•ด์ค€๋‹ค
  • NFS๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ๋Œ€ํ‘œ์ ์ธ ํŒŒ์ผ ๊ณต์œ  ๋ฐฉ๋ฒ•์ด๋‹ค
  • ํŒŒ์ผ ์œ„์น˜๋งŒ ์ œ๋Œ€๋กœ ์•Œ๋ ค์ฃผ๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํƒ€๊ณ  ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์š”์ฒญํ•ด์„œ ์›ํ•˜๋Š” ํŒŒ์ผ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ex) google drive -> network drive

06 Page Cache and Buffer Cache

Page Cache

  • Virtual memory์˜ paging system์—์„œ ์‚ฌ์šฉํ•˜๋Š” page frame์„ caching ๊ด€์ ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์šฉ์–ด
  • Memory-Mapped I/O๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ, file์˜ I/O์—์„œ๋„ page cache ์‚ฌ์šฉ

Buffer Cache

  • ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ I/O ์—ฐ์‚ฐ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์˜์—ญ์ธ buffer cache ์‚ฌ์šฉ
  • ํŒŒ์ผ ์‚ฌ์šฉ์˜ locality ํ™œ์šฉ (ํŠน์ • ๋ถ€๋ถ„๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์“ฐ๋Š” ์ง‘์ค‘์„ฑ ํ™œ์šฉ)
    • ํ•œ ๋ฒˆ ์ฝ์–ด์˜จ block์— ๋Œ€ํ•œ ํ›„์† ์š”์ฒญ ์‹œ ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  buffer cache์—์„œ ์ฆ‰์‹œ ์ „๋‹ฌ
  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉ
  • replacement algorithm ํ•„์š” (LRU, LFU ๋“ฑ)

 

๊ฒฐ๋ก ์€, Unified Buffer Cache !!!

  • ์ตœ๊ทผ OS์—์„œ๋Š” ๊ธฐ์กด์˜ buffer cache๊ฐ€ page cache์— ํ†ตํ•ฉ๋จ (๋‘˜์˜ ๋™์ž‘์ด ๋น„์Šทํ•จ)
  • ์ฆ‰ buffer cache๋„ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ

์ž ๊น, Memory-Mapped I/O๋ž€?

  • File์˜ ์ผ๋ถ€์„ virtual memory ์˜์—ญ์— mapping์‹œํ‚ด
  • ๋งคํ•‘์‹œํ‚จ ์˜์—ญ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—ฐ์‚ฐ์€ ํŒŒ์ผ์˜ ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ํ•จ
  • ์ฆ‰, read, write ๋“ฑ์˜ ์‹œ์Šคํ…œ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์—๋‹ค๊ฐ€ ์ฝ๊ณ  ์”€

์ •๋ฆฌ

๊ณผ๊ฑฐ์—๋Š” page cache๊ฐ€ ์ค‘๊ฐ„์— ์žˆ์—ˆ๋‹ค. memory-mapped I/O ์š”์ฒญ ์‹œ, paging์ด ๋จผ์ € ๋Œ์•„๊ฐ€๊ณ  ๊ทธ ์ค‘ ํŒŒ์ผ ๊ด€๋ จ ๋ถ€๋ถ„์€ buffer cache๋ฅผ ํ†ตํ•˜๋„๋ก ์ž‘๋™ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ œ๋Š” page caching์ด ํ†ตํ•ฉ๋˜์–ด ๋‘ ์š”์ฒญ ๋ชจ๋‘ buffer cache๋ฅผ ์ด์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ผ๊ด€๋œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ค๊ณ  buffer cache ์„ฑ๋Šฅ์—๋งŒ ์ง‘์ค‘ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ํšจ์œจ์ ์ธ ์‹œ์Šคํ…œ์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

'OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

12์žฅ Disk Management And Scheduling  (0) 2021.06.19
10์žฅ File Systems  (0) 2021.06.19
9์žฅ Virtual Memory  (0) 2021.06.19
8์žฅ Memory Management  (0) 2021.06.19
7์žฅ Deadlock  (0) 2021.06.19
6์žฅ Process Synchronization  (0) 2021.06.19