κ°μ π
μ 무μμ μ¬μ©νλ λλ²κΉ ν΄μ νΉμ λ μ§μ€ν° μ 보λ₯Ό 보기 μν΄, λ©λͺ¨λ¦¬ μμ 맀νλμ΄ μλ μ£Όμμ μ κ·Όνμ¬ ν΄λΉ λ μ§μ€ν°μ κ°μ μ½μ΄μ€λ λ°©μμ μ΄μ©νλ€. μ΄ λ, /dev/mem λλ°μ΄μ€ λ Έλκ° λ°λμ μμ΄μΌ νλ€κ³ λ€μκΈ°μ Kconfigμμ κ΄λ ¨ μ€μ νλκ·Έλ₯Ό μ°Ύλ μ€ kmem μ΄λΌλ κ²λ μλ€λ κ²μ μκ² λμλ€. λ¬Έλ μ΄ λμ μ°¨μ΄μ κ³Ό 곡μμ (?)μΈ λλ²κΉ ν΄μ΄ μ΄λ€ κ²μ΄ μλμ§ μμλ³΄κ³ μ νλ€.
/dev/mem vs. /dev/kmem π
μ΄ λμ μ°¨μ΄μ μ μΆμ²μ λ°λ₯΄λ©΄ μλμ κ°μ΄ λμμλ€.
/dev/mem is a device file that directly represents physical memory, so an open(/dev/mem)/seek(1000)/read(10) system call combination ends up reading 10 bytes from RAM address 1000.
/dev/kmem is a device file that directly represents kernel virtual memory, so an open(/dev/kmem)/seek(1000)/read(10) system call combination ends up reading 10 bytes from virtual address 1000, which is in turn mapped by your system’s memory management unit to some physical RAM address.
μ½κ² μμ½νλ©΄, /dev/mem : /dev/kmem = physical memory : virtual memory μ κ΄κ³μΈ κ²μ΄λ€.