?? linuxkernel.htm
字號(hào):
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"><LI>Memory(</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>內(nèi)存</FONT><FONT SIZE=3>)</LI></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">所有系統(tǒng)都具有分級(jí)的內(nèi)存結(jié)構(gòu),由位于不同級(jí)別的速度和容量不同的內(nèi)存組成。</P>
<P ALIGN="JUSTIFY">最快的內(nèi)存是高速緩存存儲(chǔ)器,就象它的名字暗示的一樣</FONT><FONT SIZE=3>-</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>用于臨時(shí)存放或緩存主內(nèi)存的內(nèi)容。這種內(nèi)存非常快但是比較昂貴,因此多數(shù)處理器芯片上內(nèi)置有少量的高速緩沖存儲(chǔ)器,而大多數(shù)高速緩存存儲(chǔ)器放在系統(tǒng)主板上。一些處理器用一塊緩存內(nèi)存同時(shí)緩存指令和數(shù)據(jù),而另一些處理器有兩塊緩存內(nèi)存</FONT><FONT SIZE=3>-</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>一個(gè)用于指令,另一個(gè)用于數(shù)據(jù)。</FONT><FONT SIZE=3>Alpha AXP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>處理器有兩個(gè)內(nèi)置的內(nèi)存高速緩存存儲(chǔ)器:一個(gè)用于數(shù)據(jù)(</FONT><FONT SIZE=3>D-Cache</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>),另一個(gè)用于指令(</FONT><FONT SIZE=3>I-Cache</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)。它的外部高速緩沖存儲(chǔ)器(或</FONT><FONT SIZE=3>B-Cache</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)將兩者混在一起。</P>
<P ALIGN="JUSTIFY">最后一種內(nèi)存是主內(nèi)存。相對(duì)于外部高速緩存存儲(chǔ)器而言速度非常慢,對(duì)于</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>內(nèi)置的高速緩存存儲(chǔ)器,主內(nèi)存簡(jiǎn)直是在爬。</P>
<P ALIGN="JUSTIFY">高速緩存存儲(chǔ)器和主內(nèi)存必須保持同步(一致)。換句話說(shuō),如果主內(nèi)存中的一個(gè)字保存在高速緩存存儲(chǔ)器的一個(gè)或多個(gè)位置,那么系統(tǒng)必須保證高速緩存存儲(chǔ)器和主內(nèi)存的內(nèi)容一樣。使高速緩沖存儲(chǔ)器同步的工作一部分是由硬件完成,另一部分則是由操作系統(tǒng)完成的。對(duì)于其它一些系統(tǒng)的主要任務(wù),硬件和軟件也必須緊密配合。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"><LI>Buses</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(總線)</LI></P>
<P ALIGN="JUSTIFY">系統(tǒng)板的各個(gè)組成部分由被稱為總線的連接系統(tǒng)互連在一起。系統(tǒng)總線分為三種邏輯功能:地址總線、數(shù)據(jù)總線和控制總線。地址總線指定了數(shù)據(jù)傳輸?shù)膬?nèi)存位置(地址),數(shù)據(jù)總線保存了傳輸?shù)臄?shù)據(jù)。數(shù)據(jù)總線是雙向的,它允許</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>寫(xiě)。控制總線包含了各種信號(hào)線用于在系統(tǒng)中發(fā)送時(shí)鐘和控制信號(hào)。有許多種不同的總線類型,</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>總線是系統(tǒng)用于連接外設(shè)的常用方式。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"><LI>Controllers and Peripherals </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(控制器和外設(shè))</LI></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">外設(shè)指實(shí)在的設(shè)備,如由系統(tǒng)板或系統(tǒng)板插卡上的控制芯片所控制的圖形卡或磁盤(pán)。</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>磁盤(pán),而</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>磁盤(pán)。這些控制器通過(guò)不同的總線連接到</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>并相互連接。現(xiàn)在制造的大多數(shù)系統(tǒng)都是用</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>總線將系統(tǒng)的主要部件連接在一起。控制器本身也是象</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>擁有系統(tǒng)的最高控制權(quán)。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">所有的控制器都是不同的,但是通常它們都有用于控制它們的寄存器。</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>上運(yùn)行的軟件必須能夠讀寫(xiě)這些控制寄存器。一個(gè)寄存器可能包含描述錯(cuò)誤的狀態(tài)碼,另一個(gè)寄存器可能用于控制用途,改變控制器的模式。一個(gè)總線上的每一個(gè)控制器都可以分別被</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>尋址,這樣軟件設(shè)備驅(qū)動(dòng)程序就可以讀寫(xiě)它的寄存器進(jìn)而控制它。</FONT><FONT SIZE=3>IDE</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>電纜是一個(gè)好例子,它給了你分別存取總線上每一個(gè)驅(qū)動(dòng)器的能力。另一個(gè)好例子是</FONT><FONT SIZE=3>PCI</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>總線,允許每一個(gè)設(shè)備(如圖形卡)被獨(dú)立存取。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"><LI>Address Spaces</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>(尋址空間)</LI></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">連接</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>和主內(nèi)存的系統(tǒng)總線以及連接</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>和系統(tǒng)硬件外設(shè)的總線是分離的。硬件外設(shè)所擁有的內(nèi)存空間稱為</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>空間本身可以再進(jìn)一步劃分,但是我們現(xiàn)在先不討論。</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>可以訪問(wèn)系統(tǒng)內(nèi)存空間和</FONT><FONT SIZE=3>I/O</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>空間,而控制器只能通過(guò)</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>間接訪問(wèn)系統(tǒng)內(nèi)存。從設(shè)備的角度來(lái)看,比如軟驅(qū)控制器,它只能看到它的控制寄存器所在的地址空間(</FONT><FONT SIZE=3>ISA</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>),而非系統(tǒng)內(nèi)存。一個(gè)</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>用不同的指令去訪問(wèn)內(nèi)存和</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>讀取一個(gè)字節(jié)到</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>通過(guò)讀寫(xiě)系統(tǒng)硬件外設(shè)處于</FONT><FONT SIZE=3>I/O</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>地址空間的寄存器從而控制外設(shè)的方法。在地址空間中,普通外設(shè)(如</FONT><FONT SIZE=3>IDE</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>控制器,串行端口,軟驅(qū)控制器等等)的寄存器在</FONT><FONT SIZE=3>PC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>外設(shè)的多年發(fā)展中已經(jīng)成了定例。</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>COM1</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)的控制寄存器的地址。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">有時(shí)控制器需要直接從系統(tǒng)內(nèi)存讀取大量?jī)?nèi)存,或直接寫(xiě)大量數(shù)據(jù)到系統(tǒng)內(nèi)存中去。比如將用戶數(shù)據(jù)寫(xiě)到硬盤(pán)上去。在這種情況下,使用直接內(nèi)存存取(</FONT><FONT SIZE=3>DMA</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)控制器,允許硬件設(shè)備直接存取系統(tǒng)內(nèi)存,當(dāng)然,這種存取必須在</FONT><FONT SIZE=3>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的嚴(yán)格控制和監(jiān)管下進(jìn)行。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"><LI>Timer(</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>時(shí)鐘</FONT><FONT SIZE=3>)</LI></P></OL>
</OL>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">所有操作系統(tǒng)需要知道時(shí)間,現(xiàn)代</FONT><FONT SIZE=3>PC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>包括一個(gè)特殊的外設(shè),叫做實(shí)時(shí)時(shí)鐘(</FONT><FONT SIZE=3>RTC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)。它提供了兩樣?xùn)|西:可靠的日期和精確的時(shí)間間隔。</FONT><FONT SIZE=3>RTC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>有自己的電池,所以即使</FONT><FONT SIZE=3>PC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>沒(méi)有加電,它仍在運(yùn)行。這也是為什么</FONT><FONT SIZE=3>PC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>總是“知道”正確的日期和時(shí)間。時(shí)間間隔計(jì)時(shí)允許操作系統(tǒng)精確地調(diào)度基本工作。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Chapter 2</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">Software Basic(</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>軟件基礎(chǔ)</FONT><FONT SIZE=3>)</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">程序是用于執(zhí)行特定任務(wù)的計(jì)算機(jī)指令組合。程序可以用匯編語(yǔ)言,一種非常低級(jí)的計(jì)算機(jī)語(yǔ)言來(lái)編寫(xiě),也可以使用和機(jī)器無(wú)關(guān)的高級(jí)語(yǔ)言,比如</FONT><FONT SIZE=3>C</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>語(yǔ)言編寫(xiě)。操作系統(tǒng)是一個(gè)特殊的程序,允許用戶通過(guò)它運(yùn)行應(yīng)用程序,比如電子表和文字處理等等。本章介紹了基本的編程原理,并簡(jiǎn)介操作系統(tǒng)的目的和功能。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">2.1 Computer Languages(</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>計(jì)算機(jī)語(yǔ)言</FONT><FONT SIZE=3>)</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">2.1.1.</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>匯編語(yǔ)言</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>從內(nèi)存中讀取和執(zhí)行的指令對(duì)于人類來(lái)講無(wú)法理解。它們是機(jī)器代碼,精確的告訴計(jì)算機(jī)要做什么。比如十六進(jìn)制數(shù)</FONT><FONT SIZE=3>0x89E5</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,是</FONT><FONT SIZE=3>Intel 80486</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的指令,將寄存器</FONT><FONT SIZE=3>ESP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的內(nèi)容拷貝到寄存器</FONT><FONT SIZE=3>EBP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中。早期計(jì)算機(jī)中最初的軟件工具之一是匯編程序,它讀入人類可以閱讀的源文件,將其裝配成機(jī)器代碼。匯編語(yǔ)言明確地處理對(duì)寄存器和對(duì)數(shù)據(jù)的操作,而這種操作對(duì)于特定的微處理器而言是特殊的。</FONT><FONT SIZE=3>Intel X86</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>微處理器的匯編語(yǔ)言和</FONT><FONT SIZE=3>Alpha AXP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>微處理器的匯編語(yǔ)言完全不同。以下</FONT><FONT SIZE=3>Alpha AXP</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>匯編代碼演示了程序可以執(zhí)行的操作類型:</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Ldr r16, (r15) ; </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>第一行</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Ldr r17, 4(r15) ; </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>第二行</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Beq r16,r17,100; </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>第三行</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Str r17, (r15); </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>第四行</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">100:		; </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>第五行</P>
<P ALIGN="JUSTIFY"> </P>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -