操做系統

0:地址/數據/控制總線

http://www.cnblogs.com/zhliao/archive/2012/06/08/2541622.htmlphp

講解的不錯html

1:64位的尋址空間有多大

https://www.0xaa55.com/forum.php?mod=viewthread&tid=1042&extra=page%3D1&page=1git

64位二進制整數能表示的最大值是1111111111111111111111111111111111111111111111111111111111111111b
這樣很難看,所以咱們把它拆開,就是
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111b
而後用十六進制表示就是
0xFFFFFFFFFFFFFFFF
轉換爲十進制就是
18446744073709551615
由於是64個存儲位元,所以能夠表示的數字的數目是18446744073709551616個數字。那麼如今的電腦CPU基本都是x64的了,向下兼容32位的操做系統。
64位和32位有什麼區別呢?首先32位的CPU的「尋址範圍」就受到32個二進制位的限制,也就是說,假設它要訪問內存,它的能力是,只能訪問4G內存。
32位二進制數最大值是11111111 11111111 11111111 11111111b,十進制4294967295,能表示4294967296個數,那麼也就是能訪問4294967296個內存單元(字節)。
4294967296個字節 = 4294967296 B = 4194304 KB = 4096 MB = 4 GB
也就是說32位CPU只能訪問4GB的內存嘍。
對於如今的Win7也好Win8也好Win8.1也好Win10也好,都是不夠的。這些操做系統爲了讓用戶用起來更穩定,讓程序運行更快,它們須要更多的內存來處理什麼驅動、內核、頁表、正在運行的程序、暫停了的程序等。好比你開10個瀏覽器,那就要給每一個瀏覽器分配內存空間,存儲圖片,文字,瀏覽器要顯示這些圖像就要高速操做系統:「我這個程序要顯示這些圖像。」操做系統就要去問它安裝的驅動:「大家這些驅動誰能顯示圖像?」這個時候顯卡驅動就說「我能」,而後顯示圖像的工做就交給了顯卡驅動……顯卡驅動自己,以及其它的各類驅動,都是要佔用內存的,不然它們在哪幹活?只能在內存裏幹活。

假設用64位來表示內存位置的索引,那就是這樣:
18446744073709551616 ÷ 1024 = 18014398509481984 KB
18014398509481983 ÷ 1024 = 17592186044416 MB
17592186044415 ÷ 1024 = 17179869184 GB
17179869183 ÷ 1024 = 16777216 TB
16777215 ÷ 1024 = 16384 PB(我卻是見過1PB的硬盤,估計是服務器用的,很大,像個抽屜,各類散熱風扇)
16383 ÷ 1024 = 16 什麼B

這個數字實在是太大了。你們平時用的硬盤也就500GB的樣子,也有加裝了256GB固態硬盤的,或者臺式機裝了幾個三、4TB的倉庫盤的,我據說過的最大的機械硬盤也就6T。
然而事實上,咱們平時用的x64的Win7也好,Win8也好,都是AMD64的架構,除非那不是x64,那是IA64,纔是Intel 64的架構。Intel的CPU支持AMD的x64。
AMD64規定CPU的指針是48位的,也就是有48位的尋址空間,用來臨時存儲數字的寄存器,它的高16位被用來作爲其它用途,好比標記之類的。

48位的二進制數能表示的最大的數字是111111111111111111111111111111111111111111111111b
11111111 11111111 11111111 11111111 11111111 11111111b
十六進制是0xFFFFFFFFFFFF
十進制是281474976710655
能表示281474976710656個數,那就是這樣算:
281474976710655 ÷ 1024 = 274877906944 KB
274877906944 ÷ 1024 = 268435456 MB
268435456 ÷ 1024 = 262144 GB(我內存條也才16 GB)
262144 ÷ 1024 = 256 TB
也是很了不得的尋址能力了。github

 

2:cpu ,硬盤,內存

 

cpu只尋址內存。外存的數據經過I/O電路導入到內存,而後被cpu尋址到。
CPU運算所須要的程序代碼和數據來自於內存,內存中的東西則來自於硬盤。因此硬盤並不直接與CPU打交道。
常見的外儲存器有硬盤、軟盤、光盤、U盤等。

 

3:cpu尋址範圍

 

1、什麼叫尋址空間?瀏覽器

         尋址空間通常指的是CPU對於內存尋址的能力。通俗地說,就是能最多用到多少內存的一個問題。數據在存儲器(RAM)中存放是有規律的 ,CPU在運算的時候須要把數據提取出來就須要知道數據在那裏 ,這時候就須要挨家挨戶的找,這就叫作尋址,但若是地址太多超出了CPU的能力範圍,CPU就沒法找到數據了。 CPU最大能查找多大範圍的地址叫作尋址能力 ,CPU的尋址能力以字節爲單位。緩存

        一般人們認爲,內存容量越大,處理數據的能力也就越強,但內存容量不可能無限的大,它要受到系統結構、硬件設計、制形成本等多方面因素的制約,一個最直接的因素取決於系統的地址總線的地址寄存器的寬度(位數)。服務器

       計算機的尋找範圍由總線寬度(處理器的地址總線的位數)決定的,也能夠理解爲cpu寄存器位數,這兩者通常是匹配的。架構

       Intel公司早期的CPU產品的地址總線和地址寄存器的寬度爲20位,即CPU的尋址能力爲2^20=1024*1024字節=1024K字節=1M字節;286的地址總線和地址寄存器的寬度爲24位,CPU的尋址能力爲2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址總線和地址寄存器的寬度爲32位,CPU的尋址能力爲2^32=4096M字節=4G字節。 也就是說,若是機器的CPU過早,即便有很大的內存也不能獲得利用,而對於如今的PⅡ級的CPU,其尋址能力已遠遠超過目前的內存容量。性能

       由此推出:地址總線爲N位(N一般都是8的整數倍;也說N根數據總線)的CPU尋址範圍是2的N次方字節,即2^N(B)。編碼

 

2、16位、32位、64位一般指的是什麼?

     從CPU的發展史來看,從之前的8位到如今的64位,8位也就是CPU在一個時鐘週期內可並行處理8位二進字符0或是1,那麼16就以此類推是64位就64位二進制.
     從數據計算上來說理論上64位比32快一半。但由於電腦是軟硬相配合才能發揮最佳性能的.因此操做系統也必須從32位的到64位的,並且系統的硬件驅動也必須是64位的.
在64CPU的計算機上要安裝64位操做系統64位的硬件驅動,32位的硬件驅動是不能用的,只有這樣才能發揮計算機的最佳性能.若是64CPU裝32操做系統的話,那性能不會有明顯的提高。


 

3、爲何是2的N次方,而不是其餘數的N次方?

        由於計算機是採用二進制計算的。 假設一臺計算機,它只有1根地址線,請問它最多能對幾個存儲單元尋址?答案是:2個.由於在任何2進制計算機中,全部物理元件只有 0,1兩種狀態,對應這個例子,咱們假設已經把這惟一的一根地址線與兩個存儲單元a和b連上了,那麼究竟怎麼肯定什麼時候讀a什麼時候讀b?有一個辦法,當地址線上的電壓是高電壓時咱們讀a,相反是低電壓時,咱們讀b.如此一來,一根地址線的狀況下,只能對2個存儲單元進行尋址 依次類推,2根地址線時能夠對4個存儲單元進行尋址,對應的電壓狀況能夠是:低低,低高,高低,高高;繼續想下去,3根地址線就能夠對8個存儲單元進行尋址(3個1和3個0不一樣組合狀況:1十一、1十、100、000、10一、100、00一、011),4根就是16個,也就是說,當有n根地址線時,能夠對2的n次方個存儲單元進行尋址。

一根線是怎麼鏈接到兩個存儲單元的?好像不一樣於一根電話線吧,他有兩個線芯或才網線,有八個小線(線芯)? 

 

4、什麼是存儲單元 


   存儲單元通常應具備存儲數據和讀寫數據的功能,通常以8位二進制做爲一個存儲單元,也就是一個字節。每一個單元有一個地址,是一個整數編碼,能夠表示爲二進制整數。
程序中的變量和主存儲器的存儲單元相對應。變量的名字對應着存儲單元的地址,變量內容對應着單元所存儲的數據。

 

5、爲何計算機採用二進制?

(1)技術實現簡單,計算機是由邏輯電路組成,邏輯電路一般只有兩個狀態,開關的接通與斷開,這兩種狀態正好能夠用「1」和「0」表示。

(2)簡化運算規則:兩個二進制數和、積運算組合各有三種,運算規則簡單,有利於簡化計算機內部結構,提升運算速度。

(3)適合邏輯運算:邏輯代數是邏輯運算的理論依據,二進制只有兩個數碼,正好與邏輯代數中的「真」和「假」相吻合。

(4)易於進行轉換,二進制與十進制數易於互相轉換。

(5)用二進制表示數據具備抗干擾能力強,可靠性高等優勢。由於每位數據只有高低兩個狀態,當受到必定程度的干擾時,仍能可靠地分辨出它是高仍是低。 

 

 

另,Tomcat源碼剖析電子書:

代碼和UML圖:https://github.com/Aresyi/HowTomcatWorks 
排版更好的百度電子書:https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60

 

4:微處理器知識

微處理器的內部結構

http://wiki.mbalib.com/wiki/%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8

  微處理器最基本的功能結構包括:運算器、控制器、寄存器組及內部總線。圖給出的是某8位微處理器的內部結構圖,它包括:運算器、寄存器組(其中包括:累加器、狀態寄存器、程序計數器和其餘功能的寄存器組)、指令寄存譯碼器、地址寄存器、數據緩衝器、內部數據總線、外部引線(包括:地址信號線、數據信號線、控制/狀態信號線)等。各部分在微處理器中起着不一樣的做用:

Image:8位微處理器內部結構.jpg

  (1)運算器:是執行運算的部件,在控制信號做用下可完成加、減、乘、除、與、或、非、異或以及移位等工做,故又稱爲算術邏輯單元。

  (2)寄存器組:用了加快運算和處理速度、暫存參加運算的數據或運算的中間結果,是微處理器中十分重要的部分。寄存器組中包括:

  1)累加器:是通用寄存器中的一個。一般微處理器中至少包含一個累加器,它的功能比其餘寄存器多。

  2)狀態寄存器:是寄存器組中的一個。專用於記錄微處理器運行的某種重要狀態,程序能夠根據其提供的狀態,來控制CPU的運行。

  3)程序計數器:是加一計數器,每提供一個地址後自動加一,指向下一步要執行指令所在存儲單元的地址。8位機爲16位加一計數器,可提供65536(=0~FFFFH)個地址,硬件決定上電或復位時的初值狀態。程序計數器是專爲處理器提供的,用戶沒法經過指令訪問它。其內容能夠經過內部數據總線獲得修改。

  4)其餘功能的寄存器組

  (3)內部數據總線:它是微處理器內部各部分之間的數據傳輸通道,且爲雙向的。其總線的寬度決定微處理器內部數據傳輸的位數。

  (4)指令寄存譯碼器:它由指令寄存器(IR)、指令譯碼器(ID)和控制邏輯(PLA)組成,是整個微處理器的控制指揮中心。CPU經過總線將外部存儲器中的指令取入,並暫存在IR中。對IR中的指令進行分析解釋,經過控制邏輯(PLA)產生相應的控制信號,來協調整個計算機有序地工做。

  • 對CPU內部:控制着各部分的工做。
  • 對CPU外部.摔制CPU對外部讀操做或寫操做.對存儲器操做或對I/O接口操做等。

  (5)地址寄存器:用於寄存CPU要向外部發出的地址,其內容來源能夠是程序計數器,也能夠是內部總線。經過它將地址輸出給CPU之外的存儲器或I/O接口。

  (6)數據緩衝器:起到CPU內、外傳輸數據的緩衝做用,只有CPU容許數據傳輸時,該緩衝器的門纔會打開。對於8位機它是8位的,對於16位機爲16位。

  (7)數據信號線(DB):CPU與存儲器或I/O接口之間傳輸數據的通道,其寬度決定CPU與外部存儲器或I/O接口傳輸數據的位數。

  (8)地址信號線(AB):是CPU提供地址信息的通道,其寬度決定CPU對外的尋址範圍。

  (9)控N/狀態信號線:用於傳輸控制或狀態信號的通道,如提供讀信號、寫信號、存儲器選通訊號、I/O接口選通訊號等,也能夠接收時鐘信號等。

  隨着技術的發展,微處理器功能的加強,微處理器的內部除了上述基本部分,還會增長存儲器管理部件、高速緩存部件等

微處理器的工做原理[2]

  微處理器的工做過程就是執行程序的過程,而執行程序就是逐步執行一條條指令的過微處理器僅能識別機器指令,需使用各類編譯器將由高級程序設計語言編制的程序起色器指令構成的程序。微處理器在執行一條指令時,主要按如下幾個步驟去完成:

  • 取指令:控制器發出信息從存儲器取一條指令。
  • 指令譯碼:指令譯碼器將取得的指令翻譯成起控制做用的微指令。
  • 取操做數:若是須要操做數,則從存儲器取得該指令的操做數。
  • 執行運算:CPU按照指令操做碼的要求,經過執行微指令,對操做數完成規定的運算處理。
  • 回送結果:將指令的執行結果回送到內存或某寄存器中。

  微處理器的操做是週期性的,即取指令,指令譯碼,取操做數,再取指令……,這一系列操做步驟是精確地按照時序進行的,所以微處理器須要一個時序電路。時序電路受控於晶體振盪電路所生成的標準振盪脈衝信號,一旦機器加電,時序電路便接二連三地發出時鐘信號

相關文章
相關標籤/搜索