μ΄λ² μ₯μμλ vsfs(Very Simple File System)λΌκ³ νλ κ°λ¨ν νμΌ μμ€ν μ λν΄ μμ보λλ‘ νμ. μ΄ νμΌ μμ€ν μ UNIX νμΌ μμ€ν μ λ¨μνν κ²μΌλ‘ λμ€ν¬ μλ£ κ΅¬μ‘°μ μ κ·Ό λ°©λ², κ·Έλ¦¬κ³ λ€μν νμΌ μμ€ν λ€μ μ μ± μ μκ°νκΈ° μν΄ μ μλμλ€.
1. μκ°νλ λ°©λ²
νμΌ μμ€ν μ λν΄ νμ΅ν λ μ΄λ° λ°©μμΌλ‘ μ κ·Όνλ©΄ λμμ΄ λλ€.
첫 λ²μ§Έλ νμΌ μμ€ν μ μλ£ κ΅¬μ‘°μ΄λ€. νμΌ μμ€ν μ΄ μμ μ λ°μ΄ν°μ λ©νλ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν΄ μ΄λ€ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©ν κΉ? vsfsκ°μ νμΌ μμ€ν μ λΈλκ³Ό λ€λ₯Έ κ°μ²΄λ€μ λ°°μ΄κ³Ό κ°μ κ°λ¨ν μλ£ κ΅¬μ‘°λ‘ νννμ§λ§ XFSμ κ°μ νμΌ μμ€ν λ€μ μ’ λ 볡μ‘ν νΈλ¦¬ κΈ°λ°μ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©νλ€.
λ λ²μ§Έλ μ κ·Ό λ°©λ²μ΄λ€. νλ‘μΈμ€κ° νΈμΆνλ open(), read(), write() λ±μ λͺ
λ Ήλ€μ νμΌ μμ€ν
μ μλ£ κ΅¬μ‘°μ μ΄λ€ κ΄λ ¨μ΄ μμκΉ? νΉμ μμ€ν
μ½μ μ€νν λ μ΄λ€ μλ£ κ΅¬μ‘°λ€μ΄ μ½νκΉ? μ΄λ€ κ²λ€μ΄ μ°μΌκΉ?
μλ£ κ΅¬μ‘°μ μ κ·Ό λ°©λ²μ λν΄ μ΄ν΄νλ©΄ νμΌ μμ€ν μ΄ μ΄λ»κ² μλνλμ§μ λν κ°λ μ μ μ 립ν μ μλ€.
2. μ 체 ꡬμ±
κ°μ₯ λ¨Όμ ν΄μΌ ν κ²μ λμ€ν¬λ₯Ό λΈλ(block) λ¨μλ‘ λλλ κ²μ΄λ€. λ¨μΌ λΈλ ν¬κΈ°λ§ μ¬μ©νκ³ , 4KBλ‘ μ νμ. Nκ°μ 4KB λΈλ ν¬κΈ°λ₯Ό κ°μ§λ νν°μ μμ, λΈλμ 0λΆν° N-1κΉμ§ μ£Όμλ₯Ό κ°μ§κ³ μλ€. λΈλμ΄ 64κ° μλ μμ λμ€ν¬λ₯Ό μκ°ν΄λ³΄μ.
μ΄ λΈλμ 무μμ΄ λ€μ΄κ°μΌ ν κΉ? κ°μ₯ λ¨Όμ λ μ€λ₯΄λ κ²μ μ¬μ©μμ λ°μ΄ν°μ΄λ€. λλΆλΆμ 곡κ°μ΄ μ¬μ©μμ λ°μ΄ν°λ‘ μ±μμ Έ μλ€. μ΄λ₯Ό λ°μ΄ν° μμ (data region) μ΄λΌκ³ νμ.

νμΌ μμ€ν μ κ° νμΌμ λν μ 보λ₯Ό κ΄λ¦¬νλ€. κ·Έ μ λ³΄κ° λ©νλ°μ΄ν°μ ν΅μ¬μ΄λ€. νμΌμ ꡬμ±νλ λ°μ΄ν° λΈλλ€, κ·Έ νμΌμ ν¬κΈ°, μμ μ, μ κ·Ό κΆν, μ κ·Όκ³Ό λ³κ²½ μκ° λ±κ³Ό κ°μ μ λ³΄κ° λ©νλ°μ΄ν°μ΄λ€. νμΌ μμ€ν μ μ΄λ¬ν μ 보λ₯Ό μμ΄λ Έλ(inode) λΌκ³ λΆλ₯΄λ μλ£ κ΅¬μ‘°μ μ μ₯νλ€.
μ΄ μμ΄λ Έλλ€μ μμ΄λ Έλ ν μ΄λΈμ μ μ₯λλ€. μμ΄λ ΈλλΉ 256bytesλ₯Ό κ°μ νλ©΄ 4KB λΈλ νλμ 16κ°μ μμ΄λ Έλλ₯Ό μ μ₯ν μ μλ€. μ°λ¦¬ λμ€ν¬ νν°μ μλ 80κ°μ μμ΄λ Έλλ₯Ό μ μ₯ν μ μλ€.

μμ§ λ νμν μ λ³΄κ° λ¨μ μλ€. μμ΄λ Έλλ λ°μ΄ν° λΈλμ μ¬μ© μ¬λΆμ κ΄ν μ 보μ΄λ€. ν λΉ κ΅¬μ‘°(allocation structure) κ° νμνλ€.
λΈλμ΄ μ¬μ© μ€μΈμ§ μλμ§λ₯Ό νννλ λ°μλ λ€μν λ°©λ²μ΄ μλ€. free listλ₯Ό μ¬μ©ν΄μ, μ¬μ© μ€μ΄ μλ λΈλλ€μ μ°κ²° 리μ€νΈλ‘ κ΄λ¦¬νλ λ°©λ²λ μλ€. μμ΄λ Έλλ 첫 λ²μ§Έ ν리 λΈλμ μμΉλ§ κΈ°μ΅νλ©΄ λλ€. μ°λ¦¬λ λ¨μν λΉνΈλ§΅μ μ¬μ©νλ€. λ°μ΄ν° λΉνΈλ§΅μΌλ‘ λ°μ΄ν° μμμ΄ μ¬μ© μ€μΈμ§, μμ΄λ Έλ λΉνΈλ§΅μΌλ‘ μμ΄λ Έλ ν μ΄λΈμ μλ μμ΄λ Έλλ€μ΄ μ¬μ© μ€μΈμ§λ₯Ό λνλΈλ€. λΉνΈλ§΅μ λΉνΈλ€μ λ°°μ΄μ΄λ€. κ° λΉνΈλ ν΄λΉ λΈλμ΄λ κ°μ²΄κ° μ¬μ© μ€μΈμ§(in-use: 1) μ¬μ© μ€μ΄ μλμ§(free: 0)λνλΈλ€.

λ¨μ ν λΈλμ μνΌλΈλ(superblock) μ μν 곡κ°μ΄λ€ (Sλ‘ λνλ). μνΌλΈλμ μ΄ νμΌ μμ€ν μ 체μ λν μ 보λ₯Ό λ΄κ³ μλ€. μλ₯Ό λ€μ΄, νμΌ μμ€ν μ λͺ κ°μ μμ΄λ Έλμ λ°μ΄ν° λΈλμ΄ μλμ§, μμ΄λ Έλ ν μ΄λΈμ μ΄λμ μμνλμ§μ κ°μ μ 보λ₯Ό κ°μ§κ³ μλ€. νμΌ μμ€ν μ μλ³ν μ μλ λ§€μ§ λλ²λ κ°μ§κ³ μλ€. νμΌ μμ€ν μ΄ κΉ¨μ§λ€λ κ²μ, μνΌλΈλμ΄ μ μ₯λ λμ€ν¬ λΈλμ΄ νΌμλλ κ²μ΄λ€. μΌλ°μ μΌλ‘ νμΌ μμ€ν μ μνΌλΈλμ λͺ κ° λ³΅μ¬ν΄λλ€.

μ΄μ체μ κ° μ°μ μνΌλΈλμ μ½μ΄λ€μ¬μ νμΌ μμ€ν μ μ¬λ¬ μμλ€μ μ΄κΈ°ννκ³ , κ·Έ ν κ° νν°μ μ νμΌ μμ€ν νΈλ¦¬μ λΆμ΄λ μμ μ ν΅ν΄ νμΌ μμ€ν μ λ§μ΄νΈνλ€.
3. νμΌ κ΅¬μ±: μμ΄λ Έλ
νμΌ μμ€ν μ μλ£ κ΅¬μ‘° μ€ κ°μ₯ μ€μν κ²μ μμ΄λ Έλμ΄λ€. index nodeμ μ€μλ§μ΄λ€.
κ° μμ΄λ Έλλ μ«μ inumberλ‘ ννλλ€. vsfsμμλ μμ΄λλ²λ₯Ό ν΅ν΄ ν΄λΉ μμ΄λ Έλκ° λμ€ν¬ μ΄λμ μλμ§λ₯Ό μ§μ μ μΌλ‘ κ³μ°ν μ μλ€. μμμ μ¬μ©ν μμ΄λ Έλ ν μ΄λΈλ‘ κ³μ°ν΄λ³΄μ. μμ΄λ Έλ μμμ ν¬κΈ°κ° 20KBμ΄κ³ 80κ°μ μμ΄λ Έλ(κ° 256bytes)λ‘ μ΄λ£¨μ΄μ Έ μλ€. μμ΄λ Έλ μμμ 12KB μμΉλΆν° μμνλ€.

32λ² μμ΄λ Έλλ₯Ό μ½κΈ° μν΄ νμΌ μμ€ν μ μμ΄λ Έλ μμμμμ μ€νμ μ κ³μ°νλ€. κ·Έν μμ΄λ Έλ ν μ΄λΈμ μμ μμΉλ₯Ό λνλ©΄ μνλ μμ΄λ Έλ λΈλμ μ νν λ°μ΄νΈ μ£Όμλ₯Ό κ³μ°ν μ μλ€.
λμ€ν¬λ λ°μ΄νΈ λ¨μλ‘λ μ κ·Όμ΄ λΆκ°λ₯νλ©°, λμ μ 512λ°μ΄νΈ ν¬κΈ°λ₯Ό κ°λ μΉν°λ‘ μ΄λ£¨μ΄μ‘λ€. 32λ² μμ΄λ Έλκ° μ‘΄μ¬νλ λΈλμ κ°μ Έμ€κΈ° μν΄ νμΌ μμ€ν μ μΉν° μ£Όμλ₯Ό κ³μ°νμ¬ μ½κΈ° μμ²μ ν ν ν΄λΉ μμ΄λ Έλ λΈλμ κ°μ Έμ¨λ€.
blk = (inumber * sizeof(inode_t)) / blockSize;
sector = ((blk * blockSize) + inodeStartAddr) / sectorSize;
μμ΄λ Έλμλ νμΌμ λν μ λ³΄κ° λ€ λ€μ΄μλ€. νμΌμ μ’ λ₯, ν¬κΈ°, ν λΉλ λΈλ μ, λ³΄νΈ μ 보, μκ° μ 보μ λλΆμ΄ λ°μ΄ν° λΈλμ΄ λμ€ν¬ μ΄λμ μ‘΄μ¬νλμ§(ν¬μΈν°μ μΌμ’ ) λ±κ³Ό κ°μ μ 보λ€μ΄ λ΄κ²¨ μλ€.

μμ΄λ Έλ μ€κ³μ κ°μ₯ μ€μν λΆλΆ μ€ νλλ λ°μ΄ν° λΈλμ μμΉλ₯Ό νννλ λ°©λ²μ΄λ€. κ°λ¨ν λ°©λ²μ μμ΄λ Έλ λ΄μ μ¬λ¬ κ°μ μ§μ ν¬μΈν°λ₯Ό λλ κ²μ΄λ€. κ° ν¬μΈν°λ νμΌμ λμ€ν¬ λΈλ νλλ₯Ό κ°λ¦¬ν¨λ€. μ΄ λ°©λ²μλ νμΌ ν¬κΈ°μ μ νμ΄ μλ€. νμΌ ν¬κΈ°κ° ν¬μΈν°μ κ°μ λΈλ ν¬κΈ°λ‘ μ νλλ€.
λ©ν° λ 벨 μΈλ±μ€
νμΌ ν¬κΈ° μ νμΌλ‘ μΈν΄, νμΌ μμ€ν κ°λ°μλ€μ μμ΄λ Έλ λ΄μ λ€λ₯Έ μλ£ κ΅¬μ‘°λ₯Ό μΆκ°νλ€. μΌλ°μ μΌλ‘λ κ°μ ν¬μΈν°λ₯Ό μ¬μ©νλ€. κ°μ ν¬μΈν°λ λ°μ΄ν° λΈλμ κ°λ¦¬ν€μ§ μκ³ , λ°μ΄ν° λΈλμ κ°λ¦¬ν€λ ν¬μΈν°λ€μ΄ μ μ₯λ λΈλμ κ°λ¦¬ν¨λ€.
λΈλμ΄ 4KBμ΄κ³ λμ€ν¬ μ£Όμκ° 4λ°μ΄νΈλΌκ³ νλ©΄ 1024κ°μ ν¬μΈν°λ€μ μΆκ°ν μ μκ² λλ€. μ΅λ νμΌ ν¬κΈ°λ KB κ° λλ€. μ¬κΈ°μ 12λ μ ν΄μ§ μμ μ§μ ν¬μΈν°μ΄λ€.
μ μ¬μ΄μ¦κ° λͺ¨μλΌλ©΄ μ΄μ€, μΌμ€ κ°μ ν¬μΈν°λ₯Ό μ¬μ©νλ©΄ μνλ λ§νΌ ν° νμΌμ ννν μ μλ€.
μ΄μ κΉμ§ μ€λͺ ν κ²μ μ’ ν©νλ©΄, λμ€ν¬ λΈλλ€μ νΈλ¦¬ ννλ‘ κ΅¬μ±λμ΄ νλμ νμΌμ μ΄λ£¬λ€. μ΄λ¬ν κ΅¬μ± λ°©μμ λ©ν° λ 벨 μΈλ±μ€ κΈ°λ²μ΄λΌ νλ€.
μ΄ λ νΈλ¦¬μ ννλ νΈν₯λ νΈλ¦¬μ΄λ€. νμΌμ μμ λΆλΆμ μ΄λ£¨λ λΈλλ€μ ν λ²μ ν¬μΈν°λ‘ μ κ·Ό κ°λ₯νμ§λ§, νμΌμ λλΆλΆμ μλ λΈλλ€μ ν¬μΈν°λ₯Ό μΈ λ² λ°λΌκ°μΌ μ€μ λΈλμ μ½μ μ μλ€. μ΄λ κ² μ€κ³λ μ΄μ λ λλΆλΆμ νμΌμ ν¬κΈ°λ μλ€ λΌλ μ¬μ€μ κΈ°μΈν κ²μ΄λ€.
4. λλ ν°λ¦¬ ꡬ쑰
vsfsμ λλ ν°λ¦¬λ κ°λ¨νλ€. λλ ν°λ¦¬λ (νλͺ©μ μ΄λ¦, μμ΄λ Έλ λ²νΈ) μμ λ°°μ΄λ‘ ꡬμ±λμ΄ μλ€. λλ ν°λ¦¬μ λ°μ΄ν° λΈλμλ λ¬Έμμ΄κ³Ό μ«μκ° μμΌλ‘ μ‘΄μ¬νλ©° λ¬Έμμ΄ κΈΈμ΄μ λν μ 보λ μλ€.
dirμ΄λΌλ λλ ν°λ¦¬ μμ foo, bar, foobar λΌλ 3κ°μ νμΌμ΄ μκ³ κ°κ°μ μμ΄λ Έλ λ²νΈκ° 12, 13, 24λΌκ³ νμ. dirμ λ°μ΄ν° λΈλμ μλμ κ°μ λ΄μ©μ κ°μ§κ³ μμ κ²μ΄λ€.

μμ΄λ Έλ λ²νΈ, λ μ½λ κΈΈμ΄(μ΄λ¦μ μ¬μ©λ μ΄ λ°μ΄νΈ + λ¨μ 곡κ°), μ΄λ¦ κΈΈμ΄, νλͺ©μ μ΄λ¦μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€.
.μ νμ¬ λλ ν°λ¦¬, ..μ λΆλͺ¨ λλ ν°λ¦¬λ₯Ό κ°λ¦¬ν¨λ€.
unlink() λ±μ νΈμΆλ‘ νμΌμ΄ μμ λλ©΄ λλ ν°λ¦¬ μ€κ°μ λΉ κ³΅κ°μ΄ λ°μνλ€. μμμ΄ λΉμλ€λ κ²μ νμν λ°©λ²μ΄ νμνλ€(ex: μμ΄λ
Έλ λ²νΈ 0μ λΉμλ€λ λ»). νλͺ©μ κΈΈμ΄λ₯Ό λͺ
μνλ μ΄μ μ€ νλκ° μ€κ°μ λΉ κ³΅κ°μ΄ μκΈ°κΈ° λλ¬Έμ΄λ€. μλ‘μ΄ λλ ν°λ¦¬ νλͺ©μ μμ±ν λ λΉ κ³΅κ°μ μμΉμν¬ μ μλ€.
λλ ν°λ¦¬λ λ체 μ΄λμ μ μ₯λλ κ±ΈκΉ? λλΆλΆ νμΌ μμ€ν μμ λλ ν°λ¦¬λ νΉμν μ’ λ₯μ νμΌλ‘ κ°μ£Όνλ€. λλ ν°λ¦¬λ μμ μ μμ΄λ Έλλ₯Ό κ°μ§λ©°, μ μμ΄λ Έλλ μμ΄λ Έλ ν μ΄λΈμ μ‘΄μ¬νλ€. λλ ν°λ¦¬λ μμ μ λ°μ΄ν° λΈλμ κ°μ§κ³ μμΌλ©° μ΄λ€ λΈλμ μμΉλ μΌλ° νμΌκ³Ό λ§μ°¬κ°μ§λ‘ μμ΄λ Έλμ λͺ μλμ΄ μλ€.
5. λΉ κ³΅κ°μ κ΄λ¦¬
vsfsμμλ λ κ°μ λΉνΈλ§΅μ μ¬μ©ν΄μ λΉ κ³΅κ°μ κ΄λ¦¬νλ€.
νμΌ μμ± μ μμ΄λ Έλλ₯Ό ν λΉν΄μΌ νλ€. μμ΄λ Έλ λΉνΈλ§΅μ νμνμ¬ λΉμ΄ μλ μμ΄λ Έλλ₯Ό μ°Ύμ νμΌμ ν λΉνλ€. νμΌ μμ€ν μ ν΄λΉ μμ΄λ Έλλ₯Ό μ¬μ© μ€ (1) λ‘ νκΈ°νκ³ λμ€ν¬ λΉνΈλ§΅λ μ μ ν κ°±μ νλ€. λ°μ΄ν° λΈλμ ν λΉν λλ μ΄μ λΉμ·νλ€.
λ°μ΄ν° λΈλμ ν λΉν λλ κ³ λ €ν μ¬νμ΄ μλ€. λ°μ΄ν° λΈλ ν λΉ μ κ°λ₯νλ€λ©΄ μ¬λ¬ κ°μ λΈλλ€μ΄ μ°μμ μΌλ‘ λΉμ΄ μλ 곡κ°μ ν λΉνλ€. μ΄λ₯Ό ν΅ν΄ ν΄λΉ νμΌμ μ μΆλ ₯ μ±λ₯μ κ°μ ν μ μλ€. μ΄λ₯Ό μ ν λΉ(pre-allocation) μ μ± μ΄λΌ νλ€.
6. μ€ν νλ¦: μ½κΈ°μ μ°κΈ°
νμΌ μμ€ν μ λ§μ΄νΈλμκ³ μνΌλΈλμ λ©λͺ¨λ¦¬ μμ μμΉνλ€κ³ κ°μ νμ. λ€λ₯Έ λͺ¨λ κ² (μμ΄λ Έλ, λλ ν°λ¦¬)λ€μ λμ€ν¬μ μ‘΄μ¬νλ€. λ©λͺ¨λ¦¬μλ μμ§ νμ¬λμ§ μμλ€.
λμ€ν¬μμ νμΌ μ½κΈ°
open("/foo/bar", O_RDONLY) μμ€ν
μ½μ νλ©΄ νμΌ μμ€ν
μ λ¨Όμ νμΌ barμ λν μμ΄λ
Έλλ₯Ό μ°Ύμμ νμΌμ λν κΈ°λ³Έμ μΈ μ 보λ₯Ό νλν΄μΌ νλ€. μ 체 κ²½λ‘λͺ
μ κ°μ§κ³ μκΈ° λλ¬Έμ νμΌ μμ€ν
μ κ²½λ‘λ₯Ό λ°λΌ μνλ μμ΄λ
Έλλ₯Ό μ°Ύλλ€.
κ²½λ‘λͺ
μ λ°λΌκ°λ κ²μ νμ νμΌ μμ€ν
μ 루νΈμμ μμνλ€. /λ‘ νκΈ°λλ€.
λ£¨νΈ λλ ν°λ¦¬μ μμ΄λ Έλλ₯Ό μ°ΎμμΌ νλ€. λ£¨νΈ λλ ν°λ¦¬μ μμ΄λ Έλ λ²νΈλ λ³΄ν΅ 2λ‘ μ μλμ΄ μλ€. νμΌ μμ€ν μ μμ΄λλ² 2κ° ν¬ν¨λ λΈλμ μ½λλ€.
νμΌ μμ€ν μ μ½μ΄λ€μΈ μμ΄λ Έλμμ λ°μ΄ν° λΈλμ ν¬μΈν°λ₯Ό μΆμΆνλ€. μ΄ ν¬μΈν°λ€μ μ¬μ©νμ¬ λλ ν°λ¦¬ μ 보λ₯Ό μ½κ³ , foo λΌλ νλͺ©μ μ°Ύλλ€. λλ ν°λ¦¬μ λ§μ νλͺ©μ΄ λ€μ΄μμΌλ©΄ μ¬λ¬ κ°μ λ°μ΄ν° λΈλμ΄ νμν μ μλ€. μ΄λ€μ λͺ¨λ μ½μ΄μ fooλ₯Ό μ°ΎμμΌ νλ€.
foo νμΌμ λλ ν°λ¦¬ νλͺ©μ μ°Ύμμ, fooμ μμ΄λ Έλ λ²νΈλ₯Ό νμ νλ€. 44λ²μ΄λΌκ³ νμ. μ΄λ₯Ό ν΅ν΄ barμ λν μμ΄λ Έλ λ²νΈλ μ°ΎμλΌ μ μλ€.
open()μ ν΅ν΄ barμ λν μμ΄λ
Έλλ₯Ό λ©λͺ¨λ¦¬μ μ μ¬νλ€. νμΌ μμ€ν
μμλ μ΅μ’
μ μΌλ‘ ν΄λΉ νμΌμ λν μ κ·Ό κΆνμ νμΈνκ³ , μ΄ νλ‘μΈμ€μ open file tableμμ νμΌ λμ€ν¬λ¦½ν°λ₯Ό ν λΉλ°μ μ¬μ©μμκ² λ¦¬ν΄νλ€.
open() μ΄νμλ read() μμ€ν
μ½μ ν΅ν΄ νμΌμ μ½λλ€. μ΄ λ 첫 λ²μ§Έ μ½κΈ° μμ
μ΄λ―λ‘ μ²« λ²μ§Έ λΈλμ μ½κ² λ κ²μ΄κ³ , λ§μ§λ§μΌλ‘ μ½μ μκ°μ μμ΄λ
Έλμ κΈ°λ‘νλ€. read()λ open file tableμμ ν΄λΉ νμΌ λμ€ν¬λ¦½ν°μ λν μ€νμ
μ κ°±μ νλ€. λ€μ μ½κΈ° μμ
μ ν λ μ€νμ
λ€μλΆν° μ½κ² ν κ²μ΄λ€.
μ΄λ μμ μ΄ λλ©΄ νμΌμ λ«μμΌ νλλ° μ΄κ±΄ κ·Έλ₯ ν λΉλ νμΌ λμ€ν¬λ¦½ν°λ₯Ό ν΄μ νλ©΄ λλ€. λμ€ν¬ I/Oλ λ°μνμ§ μλλ€.

μ΄ κ·Έλ¦Όμμλ νμΌμ μ¬λ κ³Όμ μ€μ νμΌμ μμ΄λ Έλλ₯Ό μ°ΎκΈ° μν΄μ μ¬λ¬ λ²μ μ½κΈ°κ° μΌμ΄λλ κ²μ 보μ¬μ£Όκ³ μλ€. κ·Έ λ€μ κ° λΈλμ μ½κΈ° μν΄μ νμΌ μμ€ν μ λ¨Όμ μμ΄λ Έλλ₯Ό μ½κ³ λΈλμ μ½λλ€. κ·Έλ¦¬κ³ μμ΄λ Έλμ λ§μ§λ§ μ κ·Ό μκ°μ κ°±μ νλ€. λ¬΄μ¨ μΌμ΄ λ°μνλμ§ λ€μ ν λ² μ°¨λΆν μ΄ν΄ν΄ 보μ.
I/O λ°μ νμλ κ²½λ‘μ κΈΈμ΄μ λΉλ‘νλ€. λλ ν°λ¦¬κ° λ§μμ§λ©΄ λ μ€λ κ±Έλ¦°λ€.
λμ€ν¬μ μ°κΈ°
λμ€ν¬μ μ°κΈ°λ λΉμ·ν κ³Όμ μ΄λ€.
λ¨Όμ νμΌμ μ΄κ³ , write()λ₯Ό νΈμΆνμ¬ μλ‘μ΄ λ΄μ©μΌλ‘ νμΌμ κ°±μ νλ€. μ΅μ’
μ μΌλ‘λ νμΌμ λ«λλ€.
μ½κΈ°μλ λ€λ₯΄κ² νμΌ μ°κΈ°λ λΈλ ν λΉμ νμλ‘ ν μ μλ€. μλ‘μ΄ νμΌμ μΈ λλ write()λ λ°μ΄ν°λ₯Ό λμ€ν¬μ κΈ°λ‘ν΄μΌ ν λΏλ§ μλλΌ, νμΌμ μ΄λ λΈλμ ν λΉν΄μΌ ν μ§λ₯Ό κ²°μ ν΄μΌ νκ³ , κ·Έμ λ°λΌ λ°μ΄ν° λΉνΈλ§΅, μμ΄λ
Έλ λ±μ κ°±μ ν΄μΌ νλ€.
κ·Έλ¬λ―λ‘ νμΌμ λν μ°κΈ° μμ²μ λ Όλ¦¬μ μΌλ‘ 5λ²μ I/Oλ₯Ό μμ±νλ€.
- λ°μ΄ν° λΉνΈλ§΅ μ½κΈ°
- λ°μ΄ν° λΉνΈλ§΅ μ°κΈ°
- μμ΄λ Έλ μ½κΈ°
- μμ΄λ Έλ μ°κΈ°
- μ€μ λΈλμ κΈ°λ‘
νμΌ μμ±κ³Ό κ°μ λ¨μ μμ μλ λ§μ μμ μ°κΈ°κ° λ°μνλ€.
- μμ΄λ Έλ λΉνΈλ§΅ μ½κΈ°
- μμ΄λ Έλ λΉνΈλ§΅ μ°κΈ°
- μμ΄λ Έλ μ°κΈ°
- λλ ν°λ¦¬μ λ°μ΄ν° λΈλμ μ°κΈ°
- λλ ν°λ¦¬ μμ΄λ Έλ μ½κΈ°
- λλ ν°λ¦¬ μμ΄λ Έλ μ°κΈ°
λ€μμ /foo/barλ₯Ό μμ±νκ³ κ·Έ μμ μΈκ°μ λΈλμ μ°λ κ³Όμ μ΄λ€.

νμΌ μμ±μ΄ μΌλ§λ λν μμ
μΈμ§λ₯Ό μ μ μλ€. κ²½λ‘λͺ
μ λ°λΌκ°μ νμΌμ μμ±νλ λ° 10λ²μ I/Oκ° λ°μνλ€. κ·Έλ¦¬κ³ write() ν λ²λ§λ€ 5λ²μ I/Oκ° λ°μνλ€. μλ‘μ΄ νμΌ λΈλμ νμλ‘ νλλ° μ΄λ₯Ό allocating writeλΌ νλ€.
7. μΊμ±κ³Ό λ²νΌλ§
I/Oκ° λ무 λ§μ΄ λ°μνλ€. μ±λ₯ κ°μ μ μν΄ λλΆλΆ νμΌ μμ€ν μ μμ£Ό μ°λ λΈλλ€μ λ©λͺ¨λ¦¬μ μΊμ±νλ€. κ°μ λ©λͺ¨λ¦¬μμ νλ κ² μ²λΌ, LRUμ κΈ°ν μΊμ κ΅μ²΄ μ μ± λ€μ κ³ λ €ν΄μΌ νλ€.
μΊμ±κ³Ό ν¨κ»νλ νμΌ μ΄κΈ°
- λλ ν°λ¦¬ μμ΄λ Έλμ λ°μ΄ν°λ‘ μΈν΄ λ§μ I/O λ°μ
- κ°μ νμΌμ μ΄λ©΄ μΊμμμ ννΈκ° λκΈ° λλ¬Έμ μΆκ° I/O λ°μνμ§ μμ
μΊμ±κ³Ό ν¨κ»νλ νμΌ μ°κΈ°
- μ½κΈ° I/Oλ μΊμκ° μΆ©λΆν ν¬λ©΄ λλΆλΆ μ κ±° κ°λ₯
- λ©λͺ¨λ¦¬μ μ΄ κ²½μ°, μμμ±μ μν΄ μ΄κ±Έ λμ€ν¬λ‘ λ΄λ € 보λ΄μΌ νλ€.
- μΊμλ μ°κΈ° μμ μ μ°κΈ°ν μ μλ€ -> μ°κΈ° λ²νΌλ§
- λ€μ μμ λ°°μΉ μ²λ¦¬
- μ€μΌμ€λ§
- λ§λ€κ³ λ°λ‘ μμ νλ κ²½μ° μμ μλ μΌλ‘ ν μ μμ
DB μμ€ν
λ±μ λ²νΌλ§μΌλ‘ λ°μνλ λ¬Έμ μ μ μ©λ©νμ§ μλλ€. λ°©κΈ μ
κΈνλλ° μ»΄ν¨ν°κ° κΊΌμ Έμ λμ€ν¬μ κΈ°λ‘μ΄ λμ§ μμλ€λ©΄? μ΄λ° μΌμ νΌνκΈ° μν΄ fsync()λ₯Ό μ¬μ©νλ€. μ΄λ₯Ό νΈμΆνλ©΄ κ°±μ λ λ΄μ©μ΄ λμ€ν¬μ κ°μ μ μΌλ‘ κΈ°λ‘λλ€. μΊμλ₯Ό μμ μ¬μ©νμ§ μλλ‘ νλ κ²½μ°λ μλ€.