計算機軟件課次_第1頁
計算機軟件課次_第2頁
計算機軟件課次_第3頁
計算機軟件課次_第4頁
計算機軟件課次_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

計算機軟件課次第1頁,共48頁,2023年,2月20日,星期四圖3.10數(shù)據(jù)在存儲器中的存放第2頁,共48頁,2023年,2月20日,星期四若存放的是字型數(shù)據(jù)(16位二進制數(shù)),則將字的低位字節(jié)存放在低地址單元,高位字節(jié)存放在高地址單元。如從地址0011FH開始的兩個連續(xù)單元中存放一個字型數(shù)據(jù),則該數(shù)據(jù)為DF46H,記為:(0011FH)=DF46H。若存放的是雙字型數(shù)據(jù)(32位二進制數(shù),這種數(shù)一般作為地址指針,其低位字是被尋址地址的偏移量,高位字是被尋址地址所在段的段地址),這種類型的數(shù)據(jù)要占用連續(xù)的4個存儲單元,同樣,低字節(jié)存放在低地址單元,高字節(jié)存放在高地址單元。如從地址E800AH開始的連續(xù)4個存儲單元中存放了一個雙字型數(shù)據(jù),則該數(shù)據(jù)為66A65E65H,記為:(E800AH)=66A65E65H。第3頁,共48頁,2023年,2月20日,星期四

2.存儲器的段結(jié)構(gòu)8086/8088CPU中有關(guān)可用來存放地址的寄存器如IP、SP等都是16位的,故只能直接尋址64KB。為了對1M個存儲單元進行管理,8086/8088采用了段結(jié)構(gòu)的存儲器管理方法。8086/8088將整個存儲器分為許多邏輯段,每個邏輯段的容量小于或等于64KB,允許它們在整個存儲空間中浮動,各個邏輯段之間可以緊密相連,也可以互相重疊。用戶編寫的程序(包括指令代碼和數(shù)據(jù))被分別存儲在代碼段、數(shù)據(jù)段、堆棧段和附加數(shù)據(jù)段中,這些段的段地址分別存儲在段寄存器CS、DS、SS和ES中,而指令或數(shù)據(jù)在段內(nèi)偏移地址可由對應(yīng)的地址寄存器或立即數(shù)給出,如表3.8所示。第4頁,共48頁,2023年,2月20日,星期四表3.8存儲器操作時段地址和段內(nèi)偏移地址的來源

存儲器操作類型

段地址

偏移地址

正常來源

其他來源取指令

CS

IP

存取操作數(shù)

DSCS、ES、SS

有效地址EA通過BP尋址存取操作數(shù)

SS

CS、ES、SS

有效地址EA堆棧操作

SS

BP、SP

源字符串

DS

CS、ES、SS

SI

目的字符串

ES無

DI第5頁,共48頁,2023年,2月20日,星期四如果從存儲器中讀取指令,則段地址來源于代碼段寄存器CS,偏移地址來源于指令指針寄存器IP。如果從存儲器讀/寫操作數(shù),則段地址通常由數(shù)據(jù)段寄存器DS提供(必要時可通過指令前綴實現(xiàn)段超越,將段地址指定為由CS、ES或SS提供),偏移地址則要根據(jù)指令中所給出的尋址方式確定,這時,偏移地址通常由寄存器BX、SI、DI以及立即數(shù)等提供,這類偏移地址也被稱為“有效地址”(EA)。如果操作數(shù)是通過基址寄存器BP尋址的,則此時操作數(shù)所在段的段地址由堆棧段段寄存器SS提供(必要時也可指定為CS、SS或ES)(詳見第4章“尋址方式”一節(jié))。第6頁,共48頁,2023年,2月20日,星期四如果使用堆棧操作指令(PUSH或POP)進行進?;虺鰲2僮鳎员Wo斷點或現(xiàn)場,則段地址來源于堆棧段寄存器SS,偏移地址來源于堆棧指針寄存器SP?(詳見本節(jié)“4.堆棧操作”)。如果執(zhí)行的是字符串操作指令,則源字符串所在段的段地址由數(shù)據(jù)段寄存器DS提供(必要時可指定為CS、ES或SS),偏移地址由源變址寄存器SI提供;目的字符串所在段的段地址由附加數(shù)據(jù)段寄存器ES提供,偏移地址由目的變址寄存器DI提供。以上這些存儲器操作時段地址和偏移地址的約定是由系統(tǒng)設(shè)計時事先已規(guī)定好的,編寫程序時必須遵守這些約定。第7頁,共48頁,2023年,2月20日,星期四3.邏輯地址與物理地址由于采用了存儲器分段管理方式,8080/8088CPU在對存儲器進行訪問時,根據(jù)當(dāng)前的操作類型(取指令或存取操作數(shù))以及讀取操作數(shù)時指令所給出的尋址方式,CPU就可確定要訪問的存儲單元所在段的段地址以及該單元在本段內(nèi)的偏移地址(如表3.8所示)。我們把通過段地址和偏移地址來表示的存儲單元的地址稱為邏輯地址,記為:段地址:偏移地址。CPU在對存儲單元進行訪問時,必須在20位的地址總線上提供一個20位的地址信息,以便選中所要訪問的存儲單元。我們把CPU對存儲器進行訪問時實際尋址所使用的20位地址稱為物理地址。

第8頁,共48頁,2023年,2月20日,星期四物理地址是由CPU內(nèi)部總線接口單元BIU中的地址加法器根據(jù)邏輯地址產(chǎn)生的。由邏輯地址形成20位物理地址的方法為:段地址10H+偏移地址。其形成過程如圖3.3所示。圖3.11給出了存儲器分段示意。如果當(dāng)前的(IP)=1000H,那么,下一條要讀取的指令所在存儲單元的物理地址為:(CS)10H+(IP)=1000H10H+1000H=11000H如果某操作數(shù)在數(shù)據(jù)段內(nèi)的偏移地址為8000H,則該操作數(shù)所在存儲單元的物理地址為(DS)10H+8000H=2A0FH10H+8000H=320F0H第9頁,共48頁,2023年,2月20日,星期四存儲器分段示意圖第10頁,共48頁,2023年,2月20日,星期四

4.堆棧操作堆棧是在存儲器中開辟的一個特定區(qū)域。開辟堆棧的目的主要有以下兩點:(1)存放指令操作數(shù)(變量)。此時,對操作數(shù)進行訪問時,段地址由堆棧段寄存器SS來提供,操作數(shù)在該段內(nèi)的偏移地址由基址寄存器BP來提供。(2)保護斷點和現(xiàn)場。此為堆棧的主要功能。

第11頁,共48頁,2023年,2月20日,星期四

進棧和出棧操作過程在執(zhí)行進棧和出棧操作時,段地址由堆棧段寄存器SS提供,段內(nèi)偏移地址由堆棧指針寄存器SP提供,SP始終指向棧頂,當(dāng)堆??諘r,SP指向棧底。如圖3.12所示,設(shè)在存儲器中開辟了100H個存儲單元的堆棧段,當(dāng)前(SS)=2000H,堆??諘r(SP)=0100H,即此時SP指向棧底(如圖3.12(a)所示)。由于PUSH和POP指令要求操作數(shù)為字型數(shù)據(jù),因此,每進行一次進棧操作,SP值減2(如圖3.12(b)所示),每進行一次出棧操作,SP值加2(如圖3.12(c)所示)。在進棧和出棧操作過程中,SP始終指向棧頂。第12頁,共48頁,2023年,2月20日,星期四圖3.12進棧與出棧操作示意圖第13頁,共48頁,2023年,2月20日,星期四

5.8086/8088存儲器結(jié)構(gòu)8086的1MB存儲空間實際上分為兩個512KB的存儲體,又稱存儲庫,分別叫高位庫和低位庫,如圖3.13所示。低位庫與數(shù)據(jù)總線D7D0相連,該庫中每個存儲單元的地址為偶數(shù)地址;高位庫與數(shù)據(jù)總線D15D8相連,該庫中每個存儲單元的地址為奇數(shù)地址。地址總線A19A1可同時對高、低位庫的存儲單元尋址,A0和BHE用于對庫的選擇,分別連接到庫選擇端SEL上。當(dāng)A0=0時,選擇偶數(shù)地址的低位庫;當(dāng)BHE=0時,選擇奇數(shù)地址的高位庫;當(dāng)兩者均為0時,則同時選中高低位庫。利用A0和BHE這兩個控制信號,既可實現(xiàn)對兩個庫進行讀/寫(即16位數(shù)據(jù)),也可單獨對其中一個庫進行讀/寫(8位數(shù)據(jù)),如表3.9所示。第14頁,共48頁,2023年,2月20日,星期四圖3.138086存儲器高低位庫的連接第15頁,共48頁,2023年,2月20日,星期四表3.98086存儲器高低位庫選擇

A0

對應(yīng)操作

0

0

同時訪問兩個存儲體,讀/寫一個字的信息

0

1

只訪問奇地址存儲體,讀/寫高字節(jié)的信息

1

0

只訪問偶地址存儲體,讀/寫低字節(jié)的信息

1

1

無操作第16頁,共48頁,2023年,2月20日,星期四在8086系統(tǒng)中,存儲器這種分體結(jié)構(gòu)對用戶來說是透明的。當(dāng)用戶需要訪問存儲器中某個存儲單元,以便進行字節(jié)型數(shù)據(jù)的讀/寫操作時,指令中的地址碼經(jīng)變換后得到20位的物理地址,該地址可能是偶地址,也可能是奇地址。如果是偶地址(A0=0),BHE=1,這時由A0選定偶地址存儲體,通過A19A1從偶地址存儲體中選中某個單元,并啟動該存儲體,讀/寫該存儲單元中一個字節(jié)信息,通過數(shù)據(jù)總線的低8位傳送數(shù)據(jù),如圖3.14(a)所示;如果是奇地址(A0)=1,則偶地址存儲體不會被選中,也就不會啟動它。為了啟動奇地址存儲體,系統(tǒng)將自動產(chǎn)生BHE=0,作為奇地址存儲體的選體信號,與A19A1一起選定奇地址存儲體中的某個存儲單元,并讀/寫該單元中的一個字節(jié)信息,通過數(shù)據(jù)總線的高8位傳送數(shù)據(jù),如圖3.14(b)所示??梢钥闯?,對于字節(jié)型數(shù)據(jù),不論它存放在偶地址的低位庫,還是奇地址的高位庫,都可通過一個總線周期完成數(shù)據(jù)的讀/寫操作。第17頁,共48頁,2023年,2月20日,星期四如果用戶需要訪問存儲器中某兩個存儲單元,以便進行字型數(shù)據(jù)的讀/寫時,可分兩種情況來討論。一種情況是用戶要訪問的是從偶地址開始的兩個連續(xù)存儲單元(即字的低字節(jié)在偶地址單元,高字節(jié)在奇地址單元),這種存放稱為規(guī)則存放,這樣存放的字稱為規(guī)則字。對于規(guī)則存放的字可通過一個總線周期完成讀/寫操作,這時A0=0,BHE=0,如圖3.14(c)所示;另一種情況是用戶要訪問的是從奇地址開始的兩個存儲單元(即字的低字節(jié)在奇地址單元,高字節(jié)在偶地址單元),這種存放稱為非規(guī)則存放,這樣存放的字稱為非規(guī)則字,對于非規(guī)則存放的字需要通過兩個總線周期才能完成讀/寫操作,即第一次訪問存儲器時讀/寫奇地址單元中的字節(jié),第二次訪問存儲器時讀/寫偶地址單元中的字節(jié),如圖3.14(d)所示。顯然,為了加快程序的運行速度,希望字型數(shù)據(jù)在存儲器中規(guī)則存放。第18頁,共48頁,2023年,2月20日,星期四圖3.14從8086存儲器的偶數(shù)和奇數(shù)地址讀字節(jié)和字讀偶地址單元中的字節(jié);(b)讀奇地址單元中的字節(jié);(c)讀偶地址單元中的字;(d)讀奇地址單元中的字第19頁,共48頁,2023年,2月20日,星期四在8088系統(tǒng)中,可直接尋址的存儲空間同樣也是1MB,但其存儲器的結(jié)構(gòu)與8086有所不同,它的1MB存儲空間同屬于一個單一的存儲體,即存儲體為1M8位。它與總線之間的連接方式很簡單,其20根地址線A19A0與8根數(shù)據(jù)線分別與8088CPU對應(yīng)的地址線和數(shù)據(jù)線相連。8088CPU每訪問一次存儲器只能讀/寫一個字節(jié)信息,因此在8088系統(tǒng)的存儲器中,字型數(shù)據(jù)需要兩次訪問存儲器才能完成讀/寫操作。第20頁,共48頁,2023年,2月20日,星期四3.3.28086/8088的I/O組織8086/8088系統(tǒng)和外部設(shè)備之間是通過I/O接口電路來聯(lián)系的。每個I/O接口都有一個或幾個端口。在微機系統(tǒng)中每個端口分配一個地址號,稱為端口地址。一個端口通常為I/O接口電路內(nèi)部的一個寄存器或一組寄存器。第21頁,共48頁,2023年,2月20日,星期四8086/8088CPU用地址總線的低16位作為對8位I/O端口的尋址線,所以8086/8088系統(tǒng)可訪問的8位I/O端口有65536(64K)個。兩個編號相鄰的8位端口可以組成一個16位的端口。一個8位的I/O設(shè)備既可以連接在數(shù)據(jù)總線的高8位上,也可以連接到數(shù)據(jù)總線的低8位上。一般為了使數(shù)據(jù)/地址總線的負(fù)載平衡,希望接在數(shù)據(jù)/地址總線高8位和低8位的設(shè)備數(shù)目最好相等。當(dāng)一個I/O設(shè)備接在數(shù)據(jù)總線的低8位(AD7AD0)上時,這個I/O設(shè)備所包括的所有端口地址都將是偶數(shù)地址(A0=0);若一個I/O設(shè)備接在數(shù)據(jù)總線的高8位(AD15AD8)上時,那么該設(shè)備包含的所有端口地址都是奇數(shù)地址(A0=1)。如果某種特殊I/O設(shè)備既可使用偶地址又可使用奇地址時,此時必須將A0和BHE兩個信號結(jié)合起來作為I/O設(shè)備的選擇線。第22頁,共48頁,2023年,2月20日,星期四8086CPU對I/O設(shè)備的讀/寫操作與對存儲器的讀/寫操作類似。當(dāng)CPU與偶地址的I/O設(shè)備實現(xiàn)16位數(shù)據(jù)的存取操作時,可在一個總線周期內(nèi)完成;當(dāng)CPU與奇地址的I/O設(shè)備實現(xiàn)16位數(shù)據(jù)的存取操作時,要占用兩個總線周期才能完成。需要說明的是,8086/8088CPU的I/O指令可以用16位的有效地址A15A0來尋址0000FFFFH共64K個端口,但IBMPC系統(tǒng)中只使用了A9A010位地址來作為I/O端口的尋址信號,因此,其I/O端口的地址僅為0003FFH共1K個。第23頁,共48頁,2023年,2月20日,星期四3.4從80286到Pentium系列的技術(shù)發(fā)展3.4.180x86寄存器組

寄存器在計算機中起著非常重要的作用,每個寄存器相當(dāng)于運算器中的一個存儲單元,但由于寄存器位于CPU內(nèi)部,對它們進行訪問時不需要啟動一個總線周期,因此其存取速度要比存儲器快得多。寄存器用來存放計算過程中所需要的或所得到的各種信息,包括操作數(shù)地址、操作數(shù)以及運算的中間結(jié)果等。第24頁,共48頁,2023年,2月20日,星期四對程序設(shè)計人員來講,了解CPU內(nèi)部寄存器結(jié)構(gòu)并掌握其使用方法是進行匯編語言程序設(shè)計的關(guān)鍵和基礎(chǔ)。寄存器可分為程序可見寄存器和程序不可見寄存器兩大類。所謂程序可見寄存器,是指在匯編語言程序設(shè)計中可以通過指令來訪問的寄存器。程序不可見寄存器是指一般用戶程序中不能訪問而由系統(tǒng)所使用的寄存器。本節(jié)將從程序設(shè)計角度介紹80x86CPU內(nèi)部程序可見寄存器的結(jié)構(gòu)和使用方法,而對于那些程序不可見寄存器將在隨后介紹CPU結(jié)構(gòu)時對其做必要說明。第25頁,共48頁,2023年,2月20日,星期四從本章3.2.2節(jié)“8086/8088寄存器結(jié)構(gòu)”中可以看出,8086/8088CPU中程序可見寄存器可分為三類:通用寄存器、段寄存器和控制寄存器。80286之后的CPU中寄存器同樣也分為上述三類,只不過有關(guān)寄存器的功能和位數(shù)有所擴充而已。圖3.15給出了80x86的程序可見寄存器組,下面分別加以說明。第26頁,共48頁,2023年,2月20日,星期四1.通用寄存器對于80386及其后續(xù)機型則是圖3.15中所示的完整的寄存器,它們是32位的通用寄存器,包括EAX、EBX、ECX、EDX、ESP、EBP、ESI和EDI。這些寄存器可以用來存放不同寬度的數(shù)據(jù)。其中,EAX、EBX、ECX和EDX可作為32位寄存器來用,其低16位既可作為一個16位寄存器來用(分別記為AX、BX、CX和DX),也可作為兩個8位寄存器來用(分別記為AH/AL、BH/BL、CH/CL和DH/DL);ESP、EBP、ESI和EDI可作為32位寄存器來用,其低16位也可用做一個16位寄存器(分別記為SP、BP、SI和DI)。需要注意的是,這些寄存器以字節(jié)或字的形式被訪問時,不被訪問的其他部分不受影響。如訪問AH時,EAX的高16位和低8位不受影響。第27頁,共48頁,2023年,2月20日,星期四圖3.1580x86CPU內(nèi)部程序可見寄存器組第28頁,共48頁,2023年,2月20日,星期四此外,在8086/8088以及80286進行存儲器尋址時,8個通用寄存器中只有地址指針寄存器(SP和BP)、變址寄存器(SI和DI)以及基址寄存器BX這5個寄存器可以用來存放操作數(shù)在存儲器段內(nèi)的偏移地址。在80386及其后續(xù)機型中,所有這8個32位通用寄存器既可以存放數(shù)據(jù),也可以存放地址,也就是說,這些寄存器都可以用來提供操作數(shù)在段內(nèi)的偏移地址。對于這8個通用寄存器的專用特性,80386及其后續(xù)機型的32位通用寄存器的專用特性與8086/8088以及80286的16位通用寄存器的專用特性是相同的,如ECX的計數(shù)特性,ESI和EDI分別作為字符串操作指令中源串和目的串的地址寄存器等。第29頁,共48頁,2023年,2月20日,星期四2.控制寄存器8086/8088和80286的控制寄存器包括指令寄存器IP和FLAGS兩個16位寄存器。80286中的這兩個寄存器與前面介紹的8086/8088中相同,只不過80286中的標(biāo)志寄存器FLAGS比8086/8088中的FLAGS多定義了兩個標(biāo)志,如圖3.16所示。80386及其后續(xù)機型也有兩個32位專用寄存器EIP和EFLAGS。它們的作用與相應(yīng)的16位寄存器相同。標(biāo)志寄存器FLAGS各位的定義如圖3.16所示,其中新定義位的作用將在后面涉及時介紹。第30頁,共48頁,2023年,2月20日,星期四圖3.1680x86標(biāo)志寄存器第31頁,共48頁,2023年,2月20日,星期四3.段寄存器與8086/8088CPU相同,80286CPU中也有4個段寄存器CS、DS、SS和ES,它們的功能在本章前面“8086/8088寄存器結(jié)構(gòu)”一節(jié)中已做了詳細(xì)介紹,在此不再贅述。在80386及其以后的80x86CPU中,除上述4個段寄存器外,又增加了2個段寄存器FS和GS,它們也是附加的數(shù)據(jù)段寄存器,如圖3.15所示。除非專門指定,一般情況下,各段在存儲器中的分配是由操作系統(tǒng)負(fù)責(zé)的。在80x86中,段寄存器和與其對應(yīng)存放偏移地址的寄存器之間有一種默認(rèn)的組合關(guān)系,這種默認(rèn)關(guān)系,80286與8086/8088相同(見表3.2),80386及其后續(xù)CPU中段寄存器與提供段內(nèi)偏移地址的寄存器之間的默認(rèn)組合如表3.10所示。第32頁,共48頁,2023年,2月20日,星期四表3.1080386及其后續(xù)CPU中段寄存器與提供段內(nèi)偏移地址的寄存器之間的默認(rèn)組合

段寄存器

提供段內(nèi)偏移地址的寄存器CS

EIP

DS

EAX、EBX、ECX、EDX、ESI、EDI或一個8位或32位數(shù)

SS

ESP或EBP

ES

EDI(用于字符串操作指令)

FS

無默認(rèn)

GS無默認(rèn)第33頁,共48頁,2023年,2月20日,星期四3.4.280x86存儲器管理存儲器管理是由微處理器的存儲器管理部件MMU提供的對系統(tǒng)存儲器資源進行管理的機制,其目的是方便程序?qū)Υ鎯ζ鞯膽?yīng)用。本節(jié)從應(yīng)用角度出發(fā),介紹80x86系列微處理器的存儲器管理機制。從8086/8088到Pentium,80x86系列微處理器的存儲器管理機制有了較大變化。8086/8088只有一種存儲器管理方式,即實地址方式(簡稱實方式);80286CPU具有兩種工作方式,即實方式和保護虛地址方式(簡稱保護方式);80386及其以后的CPU有三種工作方式,即實方式、保護方式和虛擬8086方式。第34頁,共48頁,2023年,2月20日,星期四

1.實地址方式(簡稱實方式)實方式是80x86系列CPU共有的存儲器管理模式,而8086/8088CPU只能工作在此方式下,正如3.3節(jié)所介紹的那樣,8086/8088CPU通過對存儲器分段來實現(xiàn)對1M個存儲器單元的直接訪問。CPU中BIU單元的地址加法器根據(jù)指令中給出的段地址和段內(nèi)偏移地址,通過將段地址乘以10H(16),即左移4位,再與段內(nèi)偏移量相加得到一個20位的物理地址,該20位的物理地址加載到20位的地址總線上,即可實現(xiàn)對8086/8088系統(tǒng)1M個存儲單元的訪問。第35頁,共48頁,2023年,2月20日,星期四80286、80386、80486以及Pentium的地址總線位數(shù)分別增加為24、32、32、36(見表3.1),但在實方式下,它們都只能使用低20位地址線,它們所能尋址的存儲空間與8086/8088一樣,也只有1MB。在實方式下,CPU把從指令中得到的邏輯地址(段地址:段內(nèi)偏移地址)轉(zhuǎn)換為20位物理地址。不管CPU的實際地址引腳有多少根,在此方式下工作時,只能用其低20根地址線對1M個存儲單元進行訪問。第36頁,共48頁,2023年,2月20日,星期四2.保護虛擬地址方式(簡稱保護方式)在實方式下,80286及其后續(xù)CPU只相當(dāng)于一個快速的8086,沒有真正發(fā)揮這些高性能CPU的作用。而這些CPU的特點是能可靠地支持多用戶系統(tǒng),即使是單用戶,也可支持多任務(wù)操作,這就要求用新的存儲器管理機制——保護方式對存儲器系統(tǒng)進行管理。1)虛擬存儲器的概念虛擬存儲器(VirtualMemory)是一種存儲器管理技術(shù)。它提供比物理存儲器大得多的存儲空間,使程序設(shè)計人員在編寫程序時,不用考慮計算機內(nèi)存的實際容量,就可以編寫并運行比實際配置的物理存儲器空間大得多的用戶程序。第37頁,共48頁,2023年,2月20日,星期四虛擬存儲器由存儲器管理機制以及一個大容量的快速硬盤存儲器(內(nèi)存)或光盤支持。在程序運行時,只把虛擬地址空間的一小部分映射到主存儲器中,其余暫不使用部分則仍存儲在硬盤上。當(dāng)訪問主存儲器的范圍發(fā)生變化時,再把虛擬存儲器的對應(yīng)部分從磁盤調(diào)入內(nèi)存,而對主存中目前不再使用的部分,可根據(jù)一定的替換策略將其從主存儲器送回到硬盤。虛擬存儲器地址是一種概念性的邏輯地址。虛擬存儲器系統(tǒng)是在存儲器體系層次結(jié)構(gòu)(輔存—主存—高速緩存)的基礎(chǔ)上,通過CPU內(nèi)的存儲器管理部件MMU,進行虛擬地址和實地址自動變換而實現(xiàn)的,對每個編程者是透明的,變址空間很大。第38頁,共48頁,2023年,2月20日,星期四2)虛擬存儲器的基本結(jié)構(gòu)按照主存(或內(nèi)存)與外存(輔助存儲器)之間信息交換時信息傳送單位的不同,虛擬存儲器可分為段式虛擬存儲器、頁式虛擬存儲器和段頁式虛擬存儲器三種。(1)段式虛擬存儲器。段是利用程序的模塊化性質(zhì),按照程序的邏輯結(jié)構(gòu)劃分成的多個相對獨立的部分。段作為獨立的邏輯單位可被其他程序段調(diào)用,這樣就形成段間連接,產(chǎn)生規(guī)模較大的程序,因此,把段作為信息單位在主存與外存之間傳送和定位是比較合理的。一般用段表來指明各段在主存中的位置。段表是由操作系統(tǒng)產(chǎn)生并存儲在主存中的一個可再定位段。第39頁,共48頁,2023年,2月20日,星期四把主存按段分配的存儲器管理方式稱為段式管理。段式管理系統(tǒng)的優(yōu)點是段的分界與程序的自然分界相對應(yīng);段的邏輯獨立性使它易于編譯、管理、修改和保護,也便于多道程序共享;某些類型的段(如堆棧、隊列等)具有動態(tài)可變長度,允許自由調(diào)度以便有效利用主存空間,但是,正因為段的長度各不相同,段的起點和終點不定,給主存空間的分配帶來麻煩,而且容易在段間留下許多空余的存儲空間不好利用,造成浪費。第40頁,共48頁,2023年,2月20日,星期四圖3.17給出了段式虛擬存儲器地址變換的原理。為了把虛擬地址(段號:段內(nèi)偏移地址)變換為實存地址,需要一個段表,其格式如圖3.17的上半部分所示。裝入位為“1”表示該段已調(diào)入主存,為“0”則表示該段不在主存中;段的長度可大可小(其長度因程序而異),所以,段表中需要有長度指示。在訪問某段時,如果段內(nèi)偏移地址值超過段的長度,則發(fā)生地址越界中斷。圖3.17下半部分表示了虛擬地址向?qū)嵈娴刂返霓D(zhuǎn)換過程。第41頁,共48頁,2023年,2月20日,星期四圖3.17段式虛擬存儲器地址變換第42頁,共48頁,2023年,2月20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論