所謂的段錯(cuò)誤就是指訪問(wèn)的內(nèi)存超出了系統(tǒng)所給這個(gè)程序的內(nèi)存空間,通常這個(gè)值是由gdtr來(lái)保存的,
他是一個(gè)48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相應(yīng)于gdt的下標(biāo),最后3位
包括了程序是否在內(nèi)存中以及程序的在cpu中的運(yùn)行級(jí)別,指向的gdt是由以64位為一個(gè)單位的表,在這
張表中就保存著程序運(yùn)行的代碼段以及數(shù)據(jù)段的起始地址以及與此相應(yīng)的段限和頁(yè)面交換還有程序運(yùn)
行級(jí)別還有內(nèi)存粒度等等的信息。一旦一個(gè)程序發(fā)生了越界訪問(wèn),cpu就會(huì)產(chǎn)生相應(yīng)的異常保護(hù),于
是segmentation fault就出現(xiàn)了。
posted on 2011-03-20 16:32
chatler 閱讀(708)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Linux_Coding