Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> 近所のサブシステム(ガベージコレクション7)のLinuxのスタック

近所のサブシステム(ガベージコレクション7)のLinuxのスタック

  
 

アイテムの隣人のガベージコレクションは、ストレージスペースの不必要な浪費を避けるために、近所のサブシステムは、それが隣人の故障であるかの項目に長い最終用途を削除し、ガベージコレクションのメカニズムを維持します。ネイバーテーブル(neigh_table)、我々はそれが開始されたかを確認のタイマ構造体timer_listのgc_timer構造があることを思い出してください。 neigh_table_initにおける(){&hellipに;… .init_timer(& tbl-> gc_timer); tbl-> gc_timer.data =(unsigned long型)TBL; tbl-> gc_timer.function = neigh_periodic_timer; tbl->。今+ 1 gc_timer.expires =; add_timer(& tbl-> gc_timer;…}ティックタイマが満了した後に、タイマハンドラは* neigh_periodic_timer()静的ボイドneigh_periodic_timer(unsigned long型のarg){構造体neigh_tableを実行TBL =(構造体neigh_table *)のarg; N *、** NP構造体隣人、符号なしの長い今= jiffy単位、期限切れ; NEIGH_CACHE_STAT_INC(TBL、periodic_gc_runs)を、WRITE_LOCK(& tbl->ロック); /**定期のReachableTimeを再計算ランダム関数から* ///300Hzから各ランダム初期REACHABLEタイムアウト時間(time_after(今、tbl-> last_rand + 300 * HZ))なら、{構造体neigh_parms * P; tbl-> last_rand =今;(p =用& tbl-> PARMS; P; P = P->次)p> reachable_time = neigh_rand_reach_time(P-> base_reachable_time);} //hash_chain_gcと初期化関数の処理の終了//したがって、ここでゼロNP =& tbl->有しますh_buckets [tbl-> hash_chain_gc]; //は、過酢酸などhash_chain_gc次のポイントは、//初期値tbl->に戻さ最大hash_mashを超えて作る; hash_chain_gc =((tbl-> hash_chain_gc + 1)& tbl-> hash_mask);!一方((N = *のNP)= NULL){unsigned int型の状態; WRITE_LOCK(& N->ロック)状態= N-> nud_state; //対応する静的場合アイテム、または初期状態のタイマーであれば(状態&#038であること;(NUD_PERMANENT

Copyright © Windowsの知識 All Rights Reserved