看understanding linux kernel的一點(diǎn)筆記:
頁表
通常32位cpu使用2級(jí)頁表機(jī)制就已足夠,但到64位時(shí)代,2級(jí)頁表會(huì)使頁表的項(xiàng)急劇增加,所以通常會(huì)使用更多的頁表級(jí)數(shù)。
ia64/ppc64/alpha使用3級(jí)頁表,x86_64使用到4級(jí)頁表。為兼容這些模型,2.6.11之后使用了統(tǒng)一的4級(jí)頁表模型
Global Directory
Upper Directory
Middle Directory
Page Table
針對(duì)不同的架構(gòu),設(shè)置每一級(jí)不同的地址位數(shù),0的話就是不使用這一級(jí)頁表機(jī)制。
cache
多cpu環(huán)境中,每個(gè)cpu有自己的cache,對(duì)cache的更新有硬件機(jī)制保證通知其他的cpu進(jìn)行同步。(真的嗎?)
tlb
用來cache頁表,加速地址的轉(zhuǎn)換速度。每個(gè)cpu有自己的tlb,但不需要同步,因?yàn)榈刂忿D(zhuǎn)換和進(jìn)程相關(guān)。
LinuxThreads:
舊的pthread實(shí)現(xiàn),基于process實(shí)現(xiàn)pthread。主要問題是signal不符合規(guī)范,stack size固定???
NPTL:
2.6后加入的新實(shí)現(xiàn),redhat as中2.4就可以支持。更符合pthread的規(guī)范。用戶線程和內(nèi)核線程采取1:1模式,支持floating stack。