readahead(2) - wariua/manpages-ko GitHub Wiki
readahead - νμΌμ νμ΄μ§ μΊμλ‘ λ―Έλ¦¬ μ½μ΄ λ€μ΄κΈ°
#define _GNU_SOURCE /* feature_test_macros(7) μ°Έκ³ */
#include <fcntl.h>
ssize_t readahead(int fd, off64_t offset, size_t count);
readahead()
λ νμΌμμ 미리 μ½κΈ°λ₯Ό κ°μν΄μ μ΄νμ νμΌ μ½κΈ°κ° μΊμμμ μ²λ¦¬λμ΄ λμ€ν¬ I/Oμμ λΈλ‘ λμ§ μκ² νλ€. (미리 μ½κΈ°κ° μΆ©λΆν μΌμ° κ°μλμμΌλ©° μ€κ°μ μμ€ν
μ λ€λ₯Έ νλμ΄ μΊμμμ κ·Έ νμ΄μ§λ€μ λ΄λ € 보λ΄μ§ μμλ€κ³ κ°μ νλ€.)
fd
μΈμλ μ½μ νμΌμ λνλ΄λ νμΌ λμ€ν¬λ¦½ν°μ΄λ€. offset
μΈμλ λ°μ΄ν°λ₯Ό μ½κΈ° μμν μ§μ μ λνλ΄λ©° count
λ μ½μ λ°μ΄νΈ μλ₯Ό λνλΈλ€. I/Oκ° νμ΄μ§ λ¨μλ‘ μνλλ―λ‘ μ€μ§μ μΌλ‘λ offset
μ νμ΄μ§ κ²½κ³λ‘ λ΄λ¦Ό νκ³ (offset+count)
μ΄μ λλ μμΉμ μλ λ€μ νμ΄μ§ κ²½κ³κΉμ§μ λ°μ΄νΈλ€μ μ½λλ€. readahead()
λ νμΌ λ λλ¨ΈκΉμ§ μ½μ§ μλλ€. νμΌ λμ€ν¬λ¦½ν° fd
κ° κ°λ¦¬ν€λ μ΄λ¦° νμΌ κΈ°μ νλͺ©μ νμΌ μ€νμ
μ΄ λ°λμ§ μλλ€.
μ±κ³΅ μ readahead()
λ 0μ λ°ννλ€. μ€ν¨ μ -1μ λ°ννλ©° μ€λ₯ μμΈμ λνλ΄λλ‘ errno
λ₯Ό μ€μ νλ€.
EBADF
-
fd
κ° μ ν¨ν νμΌ λμ€ν¬λ¦½ν°κ° μλκ±°λ μ½κΈ° κ°λ₯νκ² μ΄λ¦¬μ§ μμλ€. EINVAL
-
fd
κ°readahead()
λ₯Ό μ μ©ν μ μλ νμΌ μ’ λ₯λ₯Ό κ°λ¦¬ν€μ§ μκ³ μλ€.
리λ
μ€ 2.4.13μμ readahead()
μμ€ν
νΈμΆμ΄ λ±μ₯νλ€. glibc λ²μ 2.3λΆν° μ§μμ μ 곡νλ€.
readahead()
μμ€ν
νΈμΆμ 리λ
μ€ μ μ©μ΄λ―λ‘ μ΄μμ±μ΄ μμ΄μΌ νλ μμ©μμλ μ¬μ©νμ§ λ§μμΌ νλ€.
syscall(2)μμ μ€λͺ νλ μ΄μ λ€ λλ¬Έμ μΌλΆ 32λΉνΈ μν€ν μ²μμλ μ΄ μμ€ν νΈμΆμ νΈμΆ μκ·Έλμ²κ° λ€λ₯΄λ€.
readahead()
λ λ°°κ²½ μ½κΈ° μ€μΌμ€λ§μ μλνκ³ μ μ¦μ λ°ννλ€. νμ§λ§ μμ² λΈλ‘λ€μ μμΉλ₯Ό μκΈ° μν΄ νμν νμΌ μμ€ν
λ©νλ°μ΄ν°λ₯Ό μ½λ λμ λΈλ‘ λ μλ μλ€. ext[234] μ¬μ© μ μ΅μ€ν
νΈ λμ κ°μ λΈλ‘μ μ°λ ν° νμΌμμ μ΄λ° κ²½μ°κ° μμ£Ό μΌμ΄λλ©°, κ·Έλμ μμ² λ°μ΄ν°λ₯Ό μ½μ΄ λ€μΌ λκΉμ§ νΈμΆμ΄ λΈλ‘ λλ κ²μ²λΌ 보μΈλ€.
lseek(2), madvise(2), mmap(2), posix_fadvise(2), read(2)
2019-03-06