free性欧美人与dog,国产成人精品亚洲午夜麻豆,欧美牲交videossexeso欧美,亚洲欧美牲交,新狼窝色av性久久久久久

中山市拓電電子科技有限公司

Zhongshan Tuodian Electronic Technology co. LTD

歡迎進(jìn)入中山市拓電電子科技有限公司——企業(yè)官網(wǎng)

全國咨詢熱線:0760-86386870

網(wǎng)站首頁 >> 資訊之家 >>行業(yè)動(dòng)態(tài) >> CPU 是如何執(zhí)行一條指令的?
详细内容

CPU 是如何執(zhí)行一條指令的?

這張表描述了 Linux 系統(tǒng)中幾個(gè)段描述符信息。

數(shù)據(jù)段和代碼段,仔細(xì)看一下相關(guān)書籍就知道這些描述符代表什么意思,但是:

為什么這幾個(gè)段的 Base 地址都是 0x00000000?

為什么 Limit 都是 0xfffff?

為什么它們的 Type 類型和優(yōu)先級 DPL 又各不相同?

如果沒有對 x86 平臺的一些基礎(chǔ)知識的理解,要啃完這本書真的是挺費(fèi)力氣的!

更要命的是,隨著 Linux 內(nèi)核代碼的體積不斷膨脹,最新的 5.13 版本壓縮檔已經(jīng)是一百多兆了:

這么一個(gè)龐然大物,如何下手才能真正的學(xué)好 Linux 呢?!

即便是從 Linux 0.11 版本開始,其中的很多代碼看起來也是非常費(fèi)勁的!

周末在整理一些吃灰的書籍時(shí),發(fā)現(xiàn)幾本以前看過的好書: 王爽的《匯編語言》,李忠的《從實(shí)模式到保護(hù)模式》,馬朝暉翻譯的《匯編語言程序設(shè)計(jì)》等等。

都是非常-非常-老的書籍,再次翻了一下,真心覺得內(nèi)容寫得真好!

對一些概念、原理、設(shè)計(jì)思路的描述,清晰而透徹。

Linux 系統(tǒng)中的很多關(guān)于分段、內(nèi)存、寄存器相關(guān)的設(shè)計(jì),都可以在這些書籍中找到基礎(chǔ)支撐。

于是乎,我就有了一個(gè)想法:是否可以把這些書籍中,與 Linux 系統(tǒng)相關(guān)的內(nèi)容進(jìn)行一次重讀和整理,但絕不是簡單的知識搬運(yùn)。

考慮了一下,大概有下面幾個(gè)想法:

 

先確定最終目標(biāo)的目標(biāo):學(xué)習(xí) Linux 操作系統(tǒng);

 

 

這幾本書寫的都是匯編語言,以及比較基礎(chǔ)的底層知識。我們會淡化匯編語言部分,把重點(diǎn)放在與 Linux 操作系統(tǒng)有關(guān)聯(lián)的原理部分;

 

 

   不會嚴(yán)格按照書中的內(nèi)容、順序來輸出文章,而是把幾本書中內(nèi)容相關(guān)的部分放在一起學(xué)習(xí)、討論;

   有些內(nèi)容,可以與 Linux 2.6 版本中的相關(guān)部分進(jìn)行對比分析,這樣的話在以后學(xué)習(xí) Linux 內(nèi)核部分時(shí),可以找到底層的支撐;

   最后,希望我自己能堅(jiān)持這個(gè)系列,也算是給自己的一個(gè)梳理吧。

 

一句話:以基礎(chǔ)知識為主!


古老的 Intel8086 處理器

   8086  Intel 公司的第一款 16 位處理器,誕生于 1978 年,應(yīng)該比各位小伙伴的年齡都大一些。

    Intel 公司的所有處理器中,它占有很重要的地位,是整個(gè) Intel 32 位架構(gòu)處理器(IA-32)的開山鼻祖。

   那么,問題來了,什么叫 16 位的處理器?

   有些人會把處理器的位數(shù)與地址總線的位數(shù)搞混在一起!

我們知道,CPU 在訪問內(nèi)存的時(shí)候,是通過地址總線來傳送物理地址的。

8086 CPU  20 位的地址線,可以傳送 20 位地址。

   每一根地址線都表示一個(gè) bit,那么 20 個(gè) bit 可以表示的最大值就是 2 20 次方。

   也就是說:最大可以定位到 1M 地址的內(nèi)存,這稱作 CPU 的尋址能力。

   但是,8086 處理器卻是 16 位的,因?yàn)椋?/span>

 

   運(yùn)算器一次最多可以處理 16 位的數(shù)據(jù);

   寄存器的最大寬度為 16 ;

   寄存器和運(yùn)算器之間的通路為 16 ;

 

   也就是說:在 8086 處理器的內(nèi)部,能夠一次性處理、傳輸、暫時(shí)存儲的最大長度是 16 位,因此,我們說它是 16 位結(jié)構(gòu)的 CPU


主存儲器是什么?

   計(jì)算機(jī)的本質(zhì)就是對數(shù)據(jù)的存儲和處理,那么參與計(jì)算的數(shù)據(jù)是從哪里來的呢?那就是一個(gè)稱作 存儲器(Storage Memory)的物理器件。

從廣義上來說,只要能存儲數(shù)據(jù)的器件都可以稱作存儲器,比如:硬盤、U盤等。

   但是,在計(jì)算機(jī)內(nèi)部,有一種專門與 CPU 相連接,用來存儲正在執(zhí)行的程序和數(shù)據(jù)的存儲器,一般稱作內(nèi)存儲器或者主存儲器,簡稱:內(nèi)存或主存。

內(nèi)存按照字節(jié)來組織,單次訪問的最小單位是 1 個(gè)字節(jié),這是最基本的存儲單元。

每一個(gè)存儲單元,也就是一個(gè)字節(jié),都對應(yīng)著一個(gè)地址,如下圖所示:

   CPU 就通過地址總線來確定:對內(nèi)存中的哪一個(gè)存儲單元中的數(shù)據(jù)進(jìn)行訪問。

    1 個(gè)字節(jié)的地址是 0000H,第 2 個(gè)字節(jié)的地址是 0001H,后面以此類推。

   圖中的這個(gè)內(nèi)存,最大存儲單元的地址是 FFFFH,換算成十進(jìn)制就是 65535,因此這個(gè)內(nèi)存的容量是 65536 字節(jié),也就是 64 KB。

這里有一個(gè)原子操作的問題可以考慮一下。

    Linux 內(nèi)核代碼中,很多地方使用了原子操作,比如:互斥鎖的實(shí)現(xiàn)代碼。

   為什么原子操作需要對變量的類型限制為 int 型呢?這就涉及到對內(nèi)存的讀寫操作了。

   盡管內(nèi)存的最小組成單位是字節(jié),但是,經(jīng)過精心的設(shè)計(jì)和安排,不同位數(shù)的 CPU,能夠按照字節(jié)、字、雙字進(jìn)行訪問。

   換句話說,僅通過單次訪問,16 位處理器就能處理 16 位的二進(jìn)制數(shù),32 位處理器就能處理32 位的二進(jìn)制數(shù)。

寄存器是什么?

    CPU 內(nèi)部,一些都是代表 0 的電信號,這些二進(jìn)制數(shù)字的一組電信號出現(xiàn)在處理器內(nèi)部線路上,它們是一排高低電平的組合,代表著二進(jìn)制數(shù)中的每一位。

在處理器內(nèi)部,必須用一個(gè)稱為寄存器的電路把這些數(shù)據(jù)鎖存起來。

   因此,寄存器本質(zhì)上也屬于存儲器的一種。只不過它們位于處理器的內(nèi)部,CPU 訪問寄存器比訪問內(nèi)存的速度更快。

   處理器總是很忙的,在它操作的過程中,所有數(shù)據(jù)在寄存器里面只能是臨時(shí)存在一小會,然后再被送往別處,這就是為什么它被叫做“寄存器”。

   剛才說了,這些寄存器都是 16 位的。由于需要與以前更古老的處理器兼容,其中的 4 個(gè)寄存器:AX、BXCX、DX 還可以當(dāng)成 2 個(gè) 8 位的寄存器來使用。


中山市拓電電子科技有限公司

Zhongshan Tuodian Electronic Technology co. LTD

電話:

手機(jī):13424599123(劉先生)

QQ:123929918

地址:廣東省中山市火炬開發(fā)區(qū)陵崗工業(yè)園 

0760-86386870

手機(jī)掃一掃  快速瀏覽



友情鏈接:華企在線  UV設(shè)備

技术支持: 華企在線 | 管理登录
seo seo