【轉(zhuǎn)】linux內(nèi)存管理---虛擬地址再愈、邏輯地址榜苫、線性地址、物理地址的區(qū)別(一)

轉(zhuǎn)載:http://blog.csdn.net/yusiguyuan/article/details/9664887

分析linux內(nèi)存管理機(jī)制翎冲,離不了上述幾個概念垂睬,在介紹上述幾個概念之前,先從《深入理解linux內(nèi)核》這本書中摘抄幾段關(guān)于上述名詞的解釋:
一抗悍、《深入理解linux內(nèi)核》的解釋
邏輯地址(Logical Address)
包含在機(jī)器語言指令中用來指定一個操作數(shù)或一條指令的地址(有點深奧)驹饺。這種尋址方式在80x86著名的分段結(jié)構(gòu)中表現(xiàn)得尤為具體,它促使windows程序員把程序分成若干段缴渊。每個邏輯地址都由一個段和偏移量組成赏壹,偏移量指明了從段開始的地方到實際地址之間的距離。
線性地址(linear address)(也稱虛擬地址 virtual address)
是一個32位無符號整數(shù)衔沼,可以用來表示高達(dá)4GB的地址蝌借,線性地址通常用十六進(jìn)制數(shù)字表示田柔,值的范圍從0x00000000到0xffffffff。
物理地址(physical address)
用于內(nèi)存芯片級內(nèi)存單元尋址骨望。它們與從微處理器的地址引腳按發(fā)送到內(nèi)存總線上的電信號相對應(yīng)。物理地址由32位或36位無符號整數(shù)表示欣舵。(其實這個最好理解擎鸠,就是實實在在的地址)
(PS:在下面的解釋就可以看到,有時也將邏輯地址看做虛擬地址缘圈,但是《深入理解linux內(nèi)核》中將線性地址看做虛擬地址)
首先說一句話:linux關(guān)于內(nèi)存尋址可以分為幾個階段劣光,首先由分段機(jī)制,然后有分頁機(jī)制糟把。
分頁機(jī)制在段機(jī)制之后進(jìn)行绢涡,以完成線性—物理地址的轉(zhuǎn)換過程。段機(jī)制把邏輯地址轉(zhuǎn)換為線性址頁機(jī)制進(jìn)一步把該線性地址再轉(zhuǎn)換為物理地址 下面是我從網(wǎng)上查找資料了解到的遣疯,同時添加了自己的理解二雄可、第二種解釋
邏輯地址(Logical Address)
是指由程序產(chǎn)生的與段相關(guān)的偏移地址部分。例如缠犀,你在進(jìn)行C語言指針編程中数苫,可以讀取指針變量本身值(&操作),實際上這個值就是邏輯地址辨液,它是相對于你當(dāng)前進(jìn)程數(shù)據(jù)段的地址虐急,不和絕對物理地址相干。只有在Intel實模式下滔迈,邏輯地址才和物理地址相等(因為實模式?jīng)]有分段或分頁機(jī)制,Cpu不進(jìn)行自動地址轉(zhuǎn)換)止吁;邏輯也就是在Intel保護(hù)模式下程序執(zhí)行代碼段限長內(nèi)的偏移地址(假定代碼段、數(shù)據(jù)段如果完全一樣)燎悍。應(yīng)用程序員僅需與邏輯地址打交道敬惦,而分段和分頁機(jī)制對您來說是完全透明的,僅由系統(tǒng)編程人員涉及间涵。應(yīng)用程序員雖然自己可以直接操作內(nèi)存仁热,那也只能在操作系統(tǒng)給你分配的內(nèi)存段操作。(也就是說勾哩,咱們應(yīng)用程序中看到的地址都是邏輯地址抗蠢。) 如果是程序員,那么邏輯地址對你來說應(yīng)該是輕而易舉就可以理解的思劳。我們在寫C代碼的時候經(jīng)常說我們定義的結(jié)構(gòu)體首地址的偏移量迅矛,函數(shù)的入口偏移量,數(shù)組首地址等等潜叛。當(dāng)我們在考究這些概念的時候秽褒,其實是相對于你這個程序而言的壶硅。并不是對于整個操作系統(tǒng)而言的。也就是說销斟,邏輯地址是相對于你所編譯運行的具體的程序(或者叫進(jìn)程吧庐椒,事實上在運行時就是當(dāng)作一個進(jìn)程來執(zhí)行的)而言。你的編譯好的程序的入口地址可以看作是首地址蚂踊,而邏輯地址我們通吃继福可以認(rèn)為是在這個程序中,編譯器為我們分配好的相對于這個首地址的偏移犁钟,或者說以這個首地址為起點的一個相對的地址值棱诱。(PS:這么來看,邏輯地址就是一個段內(nèi)偏移量涝动,但是這么說違背了邏輯地址的定義迈勋,在intel段是管理中,一個邏輯地址醋粟,是由一個段標(biāo)識符加上一個指定段內(nèi)相對地址的偏移量靡菇,表示為 [段標(biāo)識符:段內(nèi)偏移量]) 當(dāng)我們雙擊一個可執(zhí)行程序時,就是給操作系統(tǒng)提供了這個程序運行的入口地址昔穴。之后shell把可執(zhí)行文件的地址傳入內(nèi)核镰官。進(jìn)入內(nèi)核后,會fork一個新的進(jìn)程出來吗货,新的進(jìn)程首先分配相應(yīng)的內(nèi)存區(qū)域泳唠。這里會碰到一個著名的概念叫做Copy On Write,即寫時復(fù)制技術(shù)宙搬。這里不詳細(xì)講述笨腥,總之新的進(jìn)程在fork出來之后,新的進(jìn)程也就獲得了整個的PCB結(jié)構(gòu)勇垛,繼而會調(diào)用exec函數(shù)轉(zhuǎn)而去將磁盤中的代碼加載到內(nèi)存區(qū)域中脖母。這時候,進(jìn)程的PCB就被加入到可執(zhí)行進(jìn)程的隊列中闲孤,當(dāng)CPU調(diào)度到這個進(jìn)程的時候就真正的執(zhí)行了谆级。
我們大可以把程序運行的入口地址理解為邏輯地址的起始地址,也就是說讼积,一個程序的開始的地址肥照。以及以后用到的程序的相關(guān)數(shù)據(jù)或者代碼相對于這個起始地址的位置(這是由編譯器事先安排好的),就構(gòu)成了我們所說的邏輯地址勤众。邏輯地址就是相對于一個具體的程序(事實上是一個進(jìn)程舆绎,即程序真正被運行時的相對地址)而言的。這么理解在細(xì)節(jié)上有一定的偏差们颜,只要領(lǐng)會即可吕朵。 總之一句話猎醇,邏輯地址是相對于應(yīng)用程序而言的。
邏輯地址產(chǎn)生的歷史背景: 追根求源努溃,Intel的8位機(jī)8080CPU硫嘶,數(shù)據(jù)總線(DB)為8位,地址總線(AB)為16位梧税。那么這個16位地址信息也是要通過8位數(shù)據(jù)總線來傳送音半,也是要在數(shù)據(jù)通道中的暫存器,以及在CPU中的寄存器和內(nèi)存中存放的贡蓖,但由于AB正好是DB的整數(shù)倍,故不會產(chǎn)生矛盾煌茬!
但當(dāng)上升到16位機(jī)后斥铺,Intel8086/8088CPU的設(shè)計由于當(dāng)年IC集成技術(shù)和外封裝及引腳技術(shù)的限制,不能超過40個引腳坛善。但又感覺到8位機(jī)原來的地址尋址能力216=64KB太少了晾蜘,但直接增加到16的整數(shù)倍即令A(yù)B=32位又是達(dá)不到的。故而只能把AB暫時增加4條成為20條眠屎。則220=1MB的尋址能力已經(jīng)增加了16倍剔交。但此舉卻造成了AB的20位和DB的16位之間的矛盾,20位地址信息既無法在DB上傳送改衩,又無法在16位的CPU寄存器和內(nèi)存單元中存放岖常。于是應(yīng)運而生就產(chǎn)生了CPU段結(jié)構(gòu)的原理。Intel為了兼容葫督,將遠(yuǎn)古時代的段式內(nèi)存管理方式保留了下來竭鞍,也就存在了邏輯地址
線性地址(Linear Address) 是邏輯地址到物理地址變換之間的中間層。程序代碼會產(chǎn)生邏輯地址橄镜,或者說是段中的偏移地址偎快,加上相應(yīng)段的基地址就生成了一個線性地址。如果啟用了分頁機(jī)制洽胶,那么線性地址可以再經(jīng)變換以產(chǎn)生一個物理地址晒夹。若沒有啟用分頁機(jī)制,那么線性地址直接就是物理地址姊氓。Intel80386的線性地址空間容量為4G(2的32次方即32根地址總線尋址)丐怯。
我們知道每臺計算機(jī)有一個CPU(我們從單CPU來說吧。多CPU的情況應(yīng)該是雷同的)他膳,最終所有的指令操作或者數(shù)據(jù)等等的運算都得由這個CPU來進(jìn)行响逢,而與CPU相關(guān)的寄存器就是暫存一些相關(guān)信息的存儲記憶設(shè)備。因此棕孙,從CPU的角度出發(fā)的話舔亭,我們可以將計算機(jī)的相關(guān)設(shè)備或者部件簡單分為兩類:一是數(shù)據(jù)或指令存儲記憶設(shè)備(如寄存器些膨,內(nèi)存等等),一種是數(shù)據(jù)或指令通路(如地址線,數(shù)據(jù)線等等)诫尽。線性地址的本質(zhì)就是“CPU所看到的地址”晶默。如果我們追根溯源,就會發(fā)現(xiàn)線性地址的就是伴隨著Intel的X86體系結(jié)構(gòu)的發(fā)展而產(chǎn)生的洼哎。當(dāng)32位CPU出現(xiàn)的時候,它的可尋址范圍達(dá)到4GB沼本,而相對于內(nèi)存大小來說噩峦,這是一個相當(dāng)巨大的數(shù)字,我們也一般不會用到這么大的內(nèi)存抽兆。那么這個時候CPU可見的4GB空間和內(nèi)存的實際容量產(chǎn)生了差距识补。而線性地址就是用于描述CPU可見的這4GB空間。我們知道在多進(jìn)程操作系統(tǒng)中辫红,每個進(jìn)程擁有獨立的地址空間凭涂,擁有獨立的資源。但對于某一個特定的時刻贴妻,只有一個進(jìn)程運行于CPU之上切油。此時,CPU看到的就是這個進(jìn)程所占用的4GB空間名惩,就是這個線性地址澎胡。而CPU所做的操作,也是針對這個線性空間而言的娩鹉。之所以叫線性空間滤馍,大概是因為人們覺得這樣一個連續(xù)的空間排列成一線更加容易理解吧。其實就是CPU的可尋址范圍底循。 對linux而言巢株,CPU將4GB劃分為兩個部分,0-3GB為用戶空間(也可以叫核外空間)熙涤,3-4GB為內(nèi)核空間(也可以叫核內(nèi)空間)阁苞。操作系統(tǒng)相關(guān)的代碼,即內(nèi)核部分的代碼數(shù)據(jù)都會映射到內(nèi)核空間祠挫,而用戶進(jìn)程則會映射到用戶空間那槽。至于系統(tǒng)是如何將線性地址轉(zhuǎn)換到實際的物理內(nèi)存上,在下一篇文章講解等舔,無外乎段式管理和頁式管理骚灸。
物理地址(Physical Address)是指出現(xiàn)在CPU外部地址總線上的尋址物理內(nèi)存的地址信號,是地址變換的最終結(jié)果地址慌植。如果啟用了分頁機(jī)制甚牲,那么線性地址會使用頁目錄和頁表中的項變換成物理地址义郑。如果沒有啟用分頁機(jī)制,那么線性地址就直接成為物理地址了丈钙。
三非驮、第三種解釋
虛擬內(nèi)存(Virtual Memory) 是指計算機(jī)呈現(xiàn)出要比實際擁有的內(nèi)存大得多的內(nèi)存量。因此它允許程序員編制并運行比實際系統(tǒng)擁有的內(nèi)存大得多的程序雏赦。這使得許多大型項目也能夠在具有有限內(nèi)存資源的系統(tǒng)上實現(xiàn)劫笙。一個很恰當(dāng)?shù)谋扔魇牵耗悴恍枰荛L的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務(wù)星岗。采取的方法是把后面的鐵軌立刻鋪到火車的前面填大,只要你的操作足夠快并能滿足要求,列車就能象在一條完整的軌道上運行俏橘。這也就是虛擬內(nèi)存管理需要完成的任務(wù)栋盹。在Linux0.11內(nèi)核中,給每個程序(進(jìn)程)都劃分了總?cè)萘繛?4MB的虛擬內(nèi)存空間敷矫。因此程序的邏輯地址范圍是0x0000000到0x4000000。
有時我們也把邏輯地址稱為虛擬地址汉额。因為與虛擬內(nèi)存空間的概念類似曹仗,邏輯地址也是與實際物理內(nèi)存容量無關(guān)的。(這一點和上面的解釋有一點區(qū)別蠕搜,往下的解釋就按照這個繼續(xù)) 邏輯地址與物理地址的“差距”是0xC0000000怎茫,是由于虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統(tǒng)指定的妓灌。
虛擬地址到物理地址的轉(zhuǎn)化方法是與體系結(jié)構(gòu)相關(guān)的轨蛤。一般來說有分段、分頁兩種方式虫埂。以現(xiàn)在的x86 cpu為例祥山,分段分頁都是支持的。MemoryMangement Unit負(fù)責(zé)從邏輯地址到物理地址的轉(zhuǎn)化掉伏。邏輯地址是段標(biāo)識+段內(nèi)偏移量的形式缝呕,MMU通過查詢段表,可以把邏輯地址轉(zhuǎn)化為線性地址斧散。如果cpu沒有開啟分頁功能供常,那么線性地址就是物理地址;如果cpu開啟了分頁功能鸡捐,MMU還需要查詢頁表來將線性地址轉(zhuǎn)化為物理地址:邏輯地址 ----(段表)---> 線性地址 — (頁表)—> 物理地址不同的邏輯地址可以映射到同一個線性地址上栈暇;不同的線性地址也可以映射到同一個物理地址上;所以是多對一的關(guān)系箍镜。另外源祈,同一個線性地址煎源,在發(fā)生換頁以后,也可能被重新裝載到另外一個物理地址上新博。所以這種多對一的映射關(guān)系也會隨時間發(fā)生變化薪夕。
四、第四種解釋
程序(進(jìn)程)的虛擬地址和邏輯地址

邏輯地址(logicaladdress)指程序產(chǎn)生的段內(nèi)偏移地址赫悄。應(yīng)用程序只與邏輯地址打交道原献,分段分頁對應(yīng)用程序來說是透明的。也就是說C語言中的&埂淮,匯編語言中的符號地址姑隅,C中嵌入式匯編的”m”對應(yīng)的都是邏輯地址。
邏輯地址是Intel為了兼容倔撞,將遠(yuǎn)古時代的段式內(nèi)存管理方式保留了下來讲仰。邏輯地址指的是機(jī)器語言指令中,用來指定一個操作數(shù)或者是一條指令的地址痪蝇。以上例鄙陡,我們說的連接器為A分配的0x08111111這個地址就是邏輯地址。不過不好意思躏啰,這樣說趁矾,好像又違背了Intel中段式管理中,對邏輯地址要求给僵,“一個邏輯地址毫捣,是由一個段標(biāo)識符加上一個指定段內(nèi)相對地址的偏移量,表示為[段標(biāo)識符:段內(nèi)偏移量]帝际,也就是說蔓同,上例中那個0x08111111,應(yīng)該表示為[A的代碼段標(biāo)識符: 0x08111111]蹲诀,這樣斑粱,才完整一些”線性地址(linear address)或也叫虛擬地址(virtual address):跟邏輯地址類似,它也是一個不真實的地址脯爪,如果邏輯地址是對應(yīng)的硬件平臺段式管理轉(zhuǎn)換前地址的話珊佣,那么線性地址則對應(yīng)了硬件頁式內(nèi)存的轉(zhuǎn)換前地址。
實際物理內(nèi)存地址

物理地址(physicaladdress)是CPU外部地址總線上的尋址信號披粟,是地址變換的最終結(jié)果咒锻,一個物理地址始終對應(yīng)實際內(nèi)存中的一個存儲單元。對80386保護(hù)模式來說守屉,如果開啟分頁機(jī)制惑艇,線性地址經(jīng)過頁變換產(chǎn)生物理地址。如果沒有開啟分頁機(jī)制,線性地址直接對應(yīng)物理地址滨巴。頁目錄表項思灌、頁表項對應(yīng)都是物理地址。
是指出現(xiàn)在CPU外部地址總線上的尋址物理內(nèi)存的地址信號恭取,是地址變換的最終結(jié)果地址泰偿。如果啟用了分頁機(jī)制,那么線性地址會使用頁目錄和頁表中的項變換成物理地址蜈垮。如果沒有啟用分頁機(jī)制耗跛,那么線性地址就直接成為物理地址了。
物理地址用于內(nèi)存芯片級的單元尋址攒发,與處理器和CPU連接的地址總線相對應(yīng)调塌。這個概念應(yīng)該是這幾個概念中最好理解的一個,但是值得一提的是惠猿,雖然可以直接把物理地址理解成插在機(jī)器上那根內(nèi)存本身羔砾,把內(nèi)存看成一個從0字節(jié)一直到最大空量逐字節(jié)的編號的大數(shù)組,然后把這個數(shù)組叫做物理地址偶妖,但是事實上姜凄,這只是一個硬件提供給軟件的抽像,內(nèi)存的尋址方式并不是這樣趾访。所以态秧,說它是“與地址總線相對應(yīng)”,是更貼切一些腹缩,不過拋開對物理內(nèi)存尋址方式的考慮,直接把物理地址與物理的內(nèi)存一一對應(yīng)空扎,也是可以接受的藏鹊。也許錯誤的理解更利于形而上的抽像。
Linux0.11的內(nèi)核數(shù)據(jù)段转锈,內(nèi)核代碼段基地址都是0盘寡,所以對內(nèi)核來說,邏輯地址就是線性地址撮慨。又因為1個頁目錄表和4個頁表完全映射16M物理內(nèi)存竿痰,所以線性地址也就是物理地址。故對linux0.11內(nèi)核來說砌溺,邏輯地址影涉,線性地址,物理地址重合规伐。


========================================================

   虛擬地址是對整個內(nèi)存(不要與機(jī)器上插那條對上號)的抽像描述蟹倾。它是相對于物理內(nèi)存來講的,可以直接理解成“不真實的”,“假的”內(nèi)存鲜棠,例如肌厨,一個0x08000000內(nèi)存地址,它并不對就物理地址上那個大數(shù)組中0x08000000 - 1那個地址元素豁陆;之所以是這樣柑爸,是因為現(xiàn)代操作系統(tǒng)都提供了一種內(nèi)存管理的抽像,即虛擬內(nèi)存(virtual memory)盒音。進(jìn)程使用虛擬內(nèi)存中的地址表鳍,由操作系統(tǒng)協(xié)助相關(guān)硬件,把它“轉(zhuǎn)換”成真正的物理地址里逆。這個“轉(zhuǎn)換”进胯,是所有問題討論的關(guān)鍵。有了這樣的抽像原押,一個程序胁镐,就可以使用比真實物理地址大得多的地址空間。(拆東墻诸衔,補(bǔ)西墻盯漂,銀行也是這樣子做的),甚至多個進(jìn)程可以使用相同的地址笨农。不奇怪就缆,因為轉(zhuǎn)換后的物理地址并非相同的≮艘啵可以把連接后的程序反編譯看一下竭宰,發(fā)現(xiàn)連接器已經(jīng)為程序分配了一個地址,例如份招,要調(diào)用某個函數(shù)A切揭,代碼不是call A,而是call 0x0811111111 锁摔,也就是說廓旬,函數(shù)A的地址已經(jīng)被定下來了。沒有這樣的“轉(zhuǎn)換”谐腰,沒有虛擬地址的概念孕豹,這樣做是根本行不通的。打住了十气,這個問題再說下去励背,就收不住了。五砸西、總結(jié)

CPU將一個虛擬內(nèi)存空間中的地址轉(zhuǎn)換為物理地址椅野,需要進(jìn)行兩步:首先將給定一個邏輯地址(其實是段內(nèi)偏移量,這個一定要理解!>股痢@敫!),CPU要利用其段式內(nèi)存管理單元炼蛤,先將為個邏輯地址轉(zhuǎn)換成一個線程地址妖爷,再利用其頁式內(nèi)存管理單元,轉(zhuǎn)換為最終物理地址理朋。
線性地址:是CPU所能尋址的空間或者范圍絮识。物理地址:是機(jī)器中實際的內(nèi)存地址。換言之嗽上,是機(jī)器中的內(nèi)存容量范圍次舌。邏輯地址:是對程序而言的。一般以Seg:Offset來表示兽愤。(程序員自己看到的地址)因此彼念,若要確實比較三者的話,應(yīng)有以下關(guān)系:線性地址大于等于物理地址(PS:但二者的地址空間是一樣的)浅萧,而邏輯地址大于線性地址逐沙。邏輯地址通過段表變換成線性地址,此時如果并未開啟分頁機(jī)制的情況下洼畅,邏輯地址直接轉(zhuǎn)換成CPU所能尋址的空間吩案。若已開啟則通過頁表完成線性地址到物理地址的變換。因此帝簇,三者最準(zhǔn)確的關(guān)系是:邏輯地址通過線性地址完成物理地址的映射徘郭,線性地址在三者之中完全是充當(dāng)"橋"的作用。
不管哪種解釋丧肴,都差不多残揉,只不過把虛擬地址歸屬于剩下三種的哪一個的問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闪湾,隨后出現(xiàn)的幾起案子冲甘,更是在濱河造成了極大的恐慌绩卤,老刑警劉巖途样,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異濒憋,居然都是意外死亡何暇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門凛驮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裆站,“玉大人,你說我怎么就攤上這事『昕瑁” “怎么了羽嫡?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肩袍。 經(jīng)常有香客問我杭棵,道長,這世上最難降的妖魔是什么氛赐? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任魂爪,我火速辦了婚禮,結(jié)果婚禮上艰管,老公的妹妹穿的比我還像新娘滓侍。我一直安慰自己,他們只是感情好牲芋,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布撩笆。 她就那樣靜靜地躺著,像睡著了一般街图。 火紅的嫁衣襯著肌膚如雪浇衬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天餐济,我揣著相機(jī)與錄音耘擂,去河邊找鬼。 笑死絮姆,一個胖子當(dāng)著我的面吹牛醉冤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篙悯,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蚁阳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸽照?” 一聲冷哼從身側(cè)響起螺捐,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矮燎,沒想到半個月后定血,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡诞外,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年澜沟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峡谊。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茫虽,死狀恐怖刊苍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情濒析,我是刑警寧澤正什,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站号杏,受9級特大地震影響埠忘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馒索,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一莹妒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绰上,春花似錦旨怠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至百揭,卻和暖如春爽哎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背器一。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工课锌, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祈秕。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓渺贤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親请毛。 傳聞我的和親對象是個殘疾皇子志鞍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • >計算機(jī)系統(tǒng)中有幾類存儲設(shè)備:cache、內(nèi)存方仿、外存固棚。cache的存取速度最高,可以和CPU匹配仙蚜,因此其代價最高此洲,...
    一生信仰閱讀 1,139評論 0 0
  • 1 內(nèi)存尋址 1.1 物理地址、虛擬地址以及線性地址 物理地址: 物理內(nèi)存的內(nèi)存單元地址 虛擬地址: 程序員看到的...
    瘋狂小王子閱讀 2,810評論 3 21
  • Linux的內(nèi)存管理方式經(jīng)常會在面試時作為操作系統(tǒng)基礎(chǔ)被問道鳍征。搞清楚這個問題的好處很多黍翎,近的話可以應(yīng)付面試面徽,遠(yuǎn)的可...
    1angxi閱讀 1,939評論 3 7
  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學(xué)習(xí)匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,193評論 8 114
  • 參考博客:http://blog.csdn.net/szlcw1/article/details/52259668...
    閆阿佳閱讀 1,620評論 0 5