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

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

Zhongshan Tuodian Electronic Technology co. LTD

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

全國咨詢熱線:0760-86386870

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

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

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

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

為什么這幾個段的 Base 地址都是 0x00000000

為什么 Limit 都是 0xfffff?

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

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

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

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

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

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

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

對一些概念、原理、設計思路的描述,清晰而透徹。

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

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

考慮了一下,大概有下面幾個想法:

 

先確定最終目標的目標:學習 Linux 操作系統(tǒng);

 

 

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

 

 

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

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

   最后,希望我自己能堅持這個系列,也算是給自己的一個梳理吧。

 

一句話:以基礎知識為主!


古老的 Intel8086 處理器

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

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

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

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

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

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

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

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

   但是,8086 處理器卻是 16 位的,因為:

 

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

   寄存器的最大寬度為 16 ;

   寄存器和運算器之間的通路為 16 ;

 

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


主存儲器是什么?

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

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

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

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

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

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

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

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

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

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

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

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

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

寄存器是什么?

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

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

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

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

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


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

Zhongshan Tuodian Electronic Technology co. LTD

電話:

手機:13424599123(劉先生)

QQ:123929918

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

0760-86386870

手機掃一掃  快速瀏覽



友情鏈接:華企在線  UV設備

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