buffer_init
1) 4MÀÌ»óÀ̸é min_free_page¸¦ 200À¸·Î Àâ´Â´Ù. 200°³¸¸ÅÀº buffer·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù.
2) hash_tableÀ» 0À¸·Î ÃʱâÈÇÑ´Ù.
3) grow_buffer
buffer¸¦ È®º¸ÇÑ´Ù. ¸ÕÀú get_free_page·Î page¸¦ 2°³ ¾ò¾î¼ ±×¸²<1.1>°ú °°ÀÌ ÃʱâÈÇÑ´Ù.
¾òÀº 2°³ÀÇ page´Â data°¡ µé¾î°¥ ½ÇÁ¦ buffer¸¦ À§ÇÑ page¿Í °¢ buffer¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î°¥ buffer head¸¦ À§ÇÑ page·Î ±¸ºÐµÈ´Ù. 1 page´Â 4°³ÀÇ buffer(1 block Å©±â)·Î ³ª´«´Ù. block size´Â system¸¶´Ù Â÷ÀÌ°¡ ÀÖÀ» ¼ö ÀÖÀ¸³ª, ¸®´ª½º¿¡¼´Â 1 kbyte¸¦ »ç¿ëÇÑ´Ù. buffer head¿¡´Â ÇØ´ç bufferÀÇ Á¤º¸¿Í ´Ù¸¥ buffer¿ÍÀÇ ¿¬°á°ü°è¸¦ ³ªÅ¸³»´Â Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. buffer headÀÇ Å©±â´Â 48byte·Î¼ 1page¿¡ 85°³°¡ µé¾î°¥ ¼ö ÀÖ´Ù.
buffer head ±¸Á¶Ã¼´Â ±×¸²<1.1>°ú °°´Ù.
<±×¸² 1.1> Buffer ÃʱâÈ »óÅÂ
get_free_page½Ã Ãʱ⿡´Â ¸Þ¸ð¸®ÀÇ µÚÆí¿¡ ÀÖ´Â free page¸¦ ¸ÕÀú °¡Áø´Ù.
struct buffer_head {
char * b_data; /* pointer to data block (1024 bytes) */
unsigned long b_size; /* block size */
unsign¡¦(»ý·«)
|