?? linux kernel(
字號:
width=554></P>
<P align=justify>微處理器可以執行算術運算如加、乘和除,也可以執行邏輯操作例如“</FONT><FONT
size=3>X</FONT><FONT face=宋體 lang=ZH-CN size=3>是否大于</FONT><FONT
size=3>Y</FONT><FONT face=宋體 lang=ZH-CN size=3>”。</P>
<P
align=justify>處理器的執行由外部時鐘控制。這個時鐘,即系統時鐘,對處理器產生穩定的時鐘脈沖,在每一個時鐘脈沖里,處理器執行一些工作。例如,處理器可以在每一個時鐘脈沖里執行一條指令。處理器的速度用系統時鐘的頻率來描述。一個</FONT><FONT
size=3>100Mhz</FONT><FONT face=宋體 lang=ZH-CN size=3>的處理器每秒鐘接受到</FONT><FONT
size=3>100</FONT><FONT face=宋體 lang=ZH-CN size=3>,</FONT><FONT
size=3>000</FONT><FONT face=宋體 lang=ZH-CN size=3>,</FONT><FONT
size=3>000</FONT><FONT face=宋體 lang=ZH-CN size=3>次時鐘脈沖。用時鐘頻率來描述</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>的能力是一種誤解,因為不同的處理器在每一次時鐘脈沖中執行的工作量不同。雖然如此,如果所有的條件同等,越快的時鐘頻率表示處理器的能力越強。處理器執行的指令非常簡單,例如:“把內存位置</FONT><FONT
size=3>X</FONT><FONT face=宋體 lang=ZH-CN size=3>的內容讀到寄存器</FONT><FONT
size=3>Y</FONT><FONT face=宋體 lang=ZH-CN
size=3>中“。寄存器是微處理器的內部存儲空間,用來存儲數據并進行操作。執行的操作可能使處理器停止當前操作而轉去執行內存中其他地方的指令。正是這些微小的指令集合在一起,賦予現代的微處理器幾乎無限的能力,因為它每秒可以執行數百萬甚至數十億的指令。</P>
<P align=justify> </P>
<P
align=justify>執行指令時必須從內存中提取指令,指令自身也可能引用內存中的數據,這些數據也必須提取到內存中并在需要的時候保存到內存中去。</P>
<P align=justify> </P>
<P align=justify>一個微處理器內部寄存器的大小、數量和類型完全決定于它的類型。一個</FONT><FONT size=3>Intel
80486</FONT><FONT face=宋體 lang=ZH-CN size=3>處理器和一個</FONT><FONT size=3>Alpha
AXP</FONT><FONT face=宋體 lang=ZH-CN size=3>處理器的寄存器組完全不同。另外,</FONT><FONT
size=3>Intel</FONT><FONT face=宋體 lang=ZH-CN size=3>是</FONT><FONT
size=3>32</FONT><FONT face=宋體 lang=ZH-CN size=3>位寬而</FONT><FONT size=3>Alpha
AXP</FONT><FONT face=宋體 lang=ZH-CN size=3>是</FONT><FONT
size=3>64</FONT><FONT face=宋體 lang=ZH-CN
size=3>位寬。但是,一般來講,所有特定的處理器都會有一些通用目的的寄存器和少量專用的寄存器。大多數處理器擁有以下特殊用途的專用的寄存器:</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify>Program Counter</FONT><FONT face=宋體 lang=ZH-CN
size=3>(</FONT><FONT size=3>PC</FONT><FONT face=宋體 lang=ZH-CN
size=3>)程序計數器</P>
<P align=justify>這個寄存器記錄了下一條要執行的指令的地址。</FONT><FONT size=3>PC</FONT><FONT
face=宋體 lang=ZH-CN size=3>的內容在每次取指令的時候自動增加。</P></FONT><FONT size=3>
<P align=justify>Stack Pointer</FONT><FONT face=宋體 lang=ZH-CN
size=3>(</FONT><FONT size=3>SP</FONT><FONT face=宋體 lang=ZH-CN
size=3>)堆棧指針</P>
<P align=justify>處理器必須能夠存取用于臨時存儲數據的大容量的外部讀寫隨機存取內存(</FONT><FONT
size=3>RAM</FONT><FONT face=宋體 lang=ZH-CN
size=3>)。堆棧是一種用于在外部內存中存放和恢復臨時數據的方法。通常,處理器提供了特殊的指令用于將數據壓在堆棧中,并在以后需要是取出來。堆棧使用</FONT><FONT
size=3>LIFO</FONT><FONT face=宋體 lang=ZH-CN
size=3>(后進先出)的方式。換句話說,如果你壓入兩個值</FONT><FONT size=3>x</FONT><FONT face=宋體
lang=ZH-CN size=3>和</FONT><FONT size=3>y</FONT><FONT face=宋體 lang=ZH-CN
size=3>到堆棧中,然后從堆棧中彈出一個值,那么你會得到</FONT><FONT size=3>y</FONT><FONT face=宋體
lang=ZH-CN size=3>的值。</P>
<P
align=justify>一些處理器的堆棧向內存頂部增長,而另一些向內存的底部增長。還有一些處理器兩種方式都可以支持,例如:</FONT><FONT
size=3>ARM</FONT><FONT face=宋體 lang=ZH-CN size=3>。</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify>Processor Status</FONT><FONT face=宋體 lang=ZH-CN
size=3>(</FONT><FONT size=3>PS</FONT><FONT face=宋體 lang=ZH-CN size=3>)</P>
<P align=justify>指令可能產生結果。例如:“</FONT><FONT size=3>X</FONT><FONT face=宋體
lang=ZH-CN size=3>寄存器的內容是否大于</FONT><FONT size=3>Y</FONT><FONT face=宋體
lang=ZH-CN size=3>寄存器的內容?“可能產生真或假的結果。</FONT><FONT size=3>PS</FONT><FONT
face=宋體 lang=ZH-CN size=3>寄存器保留這些結果以及處理器當前狀態的其他信息。多數處理器至少有兩種模式:</FONT><FONT
size=3>kernel</FONT><FONT face=宋體 lang=ZH-CN size=3>(核心態)和</FONT><FONT
size=3>user</FONT><FONT face=宋體 lang=ZH-CN size=3>(用戶態),</FONT><FONT
size=3>PS</FONT><FONT face=宋體 lang=ZH-CN size=3>寄存器會紀錄能夠確定當前模式的那些信息。</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify></P>
<LI>Memory(</FONT><FONT face=宋體 lang=ZH-CN size=3>內存</FONT><FONT size=3>)
<P></P></FONT><FONT face=宋體 lang=ZH-CN size=3>
<P align=justify> </P>
<P align=justify>所有系統都具有分級的內存結構,由位于不同級別的速度和容量不同的內存組成。</P>
<P align=justify>最快的內存是高速緩存存儲器,就象它的名字暗示的一樣</FONT><FONT size=3>-</FONT><FONT
face=宋體 lang=ZH-CN
size=3>用于臨時存放或緩存主內存的內容。這種內存非常快但是比較昂貴,因此多數處理器芯片上內置有少量的高速緩沖存儲器,而大多數高速緩存存儲器放在系統主板上。一些處理器用一塊緩存內存同時緩存指令和數據,而另一些處理器有兩塊緩存內存</FONT><FONT
size=3>-</FONT><FONT face=宋體 lang=ZH-CN size=3>一個用于指令,另一個用于數據。</FONT><FONT
size=3>Alpha AXP</FONT><FONT face=宋體 lang=ZH-CN
size=3>處理器有兩個內置的內存高速緩存存儲器:一個用于數據(</FONT><FONT size=3>D-Cache</FONT><FONT
face=宋體 lang=ZH-CN size=3>),另一個用于指令(</FONT><FONT size=3>I-Cache</FONT><FONT
face=宋體 lang=ZH-CN size=3>)。它的外部高速緩沖存儲器(或</FONT><FONT
size=3>B-Cache</FONT><FONT face=宋體 lang=ZH-CN size=3>)將兩者混在一起。</P>
<P align=justify>最后一種內存是主內存。相對于外部高速緩存存儲器而言速度非常慢,對于</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>內置的高速緩存存儲器,主內存簡直是在爬。</P>
<P
align=justify>高速緩存存儲器和主內存必須保持同步(一致)。換句話說,如果主內存中的一個字保存在高速緩存存儲器的一個或多個位置,那么系統必須保證高速緩存存儲器和主內存的內容一樣。使高速緩沖存儲器同步的工作一部分是由硬件完成,另一部分則是由操作系統完成的。對于其它一些系統的主要任務,硬件和軟件也必須緊密配合。</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify></P>
<LI>Buses</FONT><FONT face=宋體 lang=ZH-CN size=3>(總線)
<P></P>
<P
align=justify>系統板的各個組成部分由被稱為總線的連接系統互連在一起。系統總線分為三種邏輯功能:地址總線、數據總線和控制總線。地址總線指定了數據傳輸的內存位置(地址),數據總線保存了傳輸的數據。數據總線是雙向的,它允許</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>讀取,也允許</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>寫。控制總線包含了各種信號線用于在系統中發送時鐘和控制信號。有許多種不同的總線類型,</FONT><FONT
size=3>ISA</FONT><FONT face=宋體 lang=ZH-CN size=3>和</FONT><FONT
size=3>PCI</FONT><FONT face=宋體 lang=ZH-CN size=3>總線是系統用于連接外設的常用方式。</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify></P>
<LI>Controllers and Peripherals </FONT><FONT face=宋體 lang=ZH-CN
size=3>(控制器和外設)
<P></P>
<P align=justify> </P>
<P align=justify>外設指實在的設備,如由系統板或系統板插卡上的控制芯片所控制的圖形卡或磁盤。</FONT><FONT
size=3>IDE</FONT><FONT face=宋體 lang=ZH-CN size=3>控制芯片控制</FONT><FONT
size=3>IDE</FONT><FONT face=宋體 lang=ZH-CN size=3>磁盤,而</FONT><FONT
size=3>SCSI</FONT><FONT face=宋體 lang=ZH-CN size=3>控制芯片控制</FONT><FONT
size=3>SCSI</FONT><FONT face=宋體 lang=ZH-CN
size=3>磁盤。這些控制器通過不同的總線連接到</FONT><FONT size=3>CPU</FONT><FONT face=宋體
lang=ZH-CN size=3>并相互連接。現在制造的大多數系統都是用</FONT><FONT size=3>PCI</FONT><FONT
face=宋體 lang=ZH-CN size=3>或</FONT><FONT size=3>ISA</FONT><FONT face=宋體
lang=ZH-CN size=3>總線將系統的主要部件連接在一起。控制器本身也是象</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>一樣的處理器,它們可以看作</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>的智能助手,</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>擁有系統的最高控制權。</P>
<P align=justify> </P>
<P align=justify>所有的控制器都是不同的,但是通常它們都有用于控制它們的寄存器。</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>上運行的軟件必須能夠讀寫這些控制寄存器。一個寄存器可能包含描述錯誤的狀態碼,另一個寄存器可能用于控制用途,改變控制器的模式。一個總線上的每一個控制器都可以分別被</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>尋址,這樣軟件設備驅動程序就可以讀寫它的寄存器進而控制它。</FONT><FONT size=3>IDE</FONT><FONT
face=宋體 lang=ZH-CN size=3>電纜是一個好例子,它給了你分別存取總線上每一個驅動器的能力。另一個好例子是</FONT><FONT
size=3>PCI</FONT><FONT face=宋體 lang=ZH-CN size=3>總線,允許每一個設備(如圖形卡)被獨立存取。</P>
<P align=justify> </P></FONT><FONT size=3>
<P align=justify></P>
<LI>Address Spaces</FONT><FONT face=宋體 lang=ZH-CN size=3>(尋址空間)
<P></P>
<P align=justify> </P>
<P align=justify>連接</FONT><FONT size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>和主內存的系統總線以及連接</FONT><FONT size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>和系統硬件外設的總線是分離的。硬件外設所擁有的內存空間稱為</FONT><FONT size=3>I/O</FONT><FONT
face=宋體 lang=ZH-CN size=3>空間。</FONT><FONT size=3>I/O</FONT><FONT face=宋體
lang=ZH-CN size=3>空間本身可以再進一步劃分,但是我們現在先不討論。</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>可以訪問系統內存空間和</FONT><FONT
size=3>I/O</FONT><FONT face=宋體 lang=ZH-CN size=3>空間,而控制器只能通過</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>間接訪問系統內存。從設備的角度來看,比如軟驅控制器,它只能看到它的控制寄存器所在的地址空間(</FONT><FONT
size=3>ISA</FONT><FONT face=宋體 lang=ZH-CN size=3>),而非系統內存。一個</FONT><FONT
size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN size=3>用不同的指令去訪問內存和</FONT><FONT
size=3>I/O</FONT><FONT face=宋體 lang=ZH-CN
size=3>空間。例如,可能有一條指令是“從</FONT><FONT size=3>I/O</FONT><FONT face=宋體
lang=ZH-CN size=3>地址</FONT><FONT size=3>0x3f0</FONT><FONT face=宋體 lang=ZH-CN
size=3>讀取一個字節到</FONT><FONT size=3>X</FONT><FONT face=宋體 lang=ZH-CN
size=3>寄存器“。這也是</FONT><FONT size=3>CPU</FONT><FONT face=宋體 lang=ZH-CN
size=3>通過讀寫系統硬件外設處于</FONT><FONT size=3>I/O</FONT><FONT face=宋體 lang=ZH-CN
size=3>地址空間的寄存器從而控制外設的方法。在地址空間中,普通外設(如</FONT><FONT size=3>IDE</FONT><FONT
face=宋體 lang=ZH-CN size=3>控制器,串行端口,軟驅控制器等等)的寄存器在</FONT><FONT
size=3>PC</FONT><FONT face=宋體 lang=ZH-CN size=3>外設的多年發展中已經成了定例。</FONT><FONT
size=3>I/O</FONT><FONT face=宋體 lang=ZH-CN size=3>空間的地址</FONT><FONT
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -