欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

操作系統(tǒng)--實(shí)模式到保護(hù)模式-創(chuàng)新互聯(lián)

?操作系統(tǒng)--實(shí)模式到保護(hù)模式

為白塔等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及白塔網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、白塔網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一.實(shí)模式到保護(hù)模式(上)

A.在這里需要從計(jì)算機(jī)的歷史談起

1.遠(yuǎn)古時(shí)期的程序開(kāi)發(fā):是直接操作物理內(nèi)存

2.CPU指令的操作數(shù)直接使用實(shí)地址(實(shí)際的內(nèi)存地址)

3.程序員擁有絕對(duì)的權(quán)力(利用cpu指哪打哪)

在當(dāng)時(shí)的實(shí)模式所擁有的權(quán)力帶來(lái)了許多的問(wèn)題-難以定位的問(wèn)題,主要因?yàn)槌绦蛎看味夹枰瑯拥刂返膬?nèi)存執(zhí)行;同時(shí)還會(huì)帶來(lái)給多道程序設(shè)計(jì)帶來(lái)障礙的問(wèn)題,主要是因?yàn)椴还軆?nèi)存多大,只要有一個(gè)字節(jié)被其它程序占用都無(wú)法執(zhí)行

B.為了解決上述的問(wèn)題就有了這款CPU歷史的里程碑-8086

1.地址寬度為20位,可訪問(wèn)1M內(nèi)存空間

2.引入[段地址:偏移地址]的內(nèi)存訪問(wèn)方式-8086的段寄存器和通用寄存器位16位,單個(gè)寄存器尋址最多訪問(wèn)64K的內(nèi)存空間,需要兩個(gè)寄存器配合,完成所有內(nèi)存空間的訪問(wèn)

段地址:偏移地址--這兩個(gè)的使用與定義有兩方面的意義

1.硬件所做的工作--段地址左移4位,構(gòu)成20位的基地址(起始地址),同時(shí)實(shí)地址=基地址+偏移地址

2.對(duì)于開(kāi)發(fā)者的意義--可以更有效的劃分內(nèi)存的功能(數(shù)據(jù)段,代碼段等),同時(shí)當(dāng)程序地址沖突時(shí),通過(guò)修改段地址解決沖突

操作系統(tǒng)--實(shí)模式到保護(hù)模式

8086的詳細(xì)介紹https://baike.baidu.com/item/8086/7716347?fr=aladdin

Q:由8086會(huì)引出一個(gè)問(wèn)題-段地址:偏移地址能訪問(wèn)的大地址位0xFFFF:0xFFFF,即10FFEF;超過(guò)了1MB的空間,CPU該如何處理?

我們知道8086的高端地址區(qū)

操作系統(tǒng)--實(shí)模式到保護(hù)模式

所以8086的處理方式-由于8086只有20位地址線,因此最高位被丟棄

操作系統(tǒng)--實(shí)模式到保護(hù)模式

所以8086時(shí)期應(yīng)用程序中的問(wèn)題

1.1MB內(nèi)存完全不夠用-內(nèi)存在任何時(shí)期都不夠用

2.開(kāi)發(fā)者在程序中大量使用內(nèi)存回卷技術(shù)-HMA地址被使用

3.應(yīng)用程序之間沒(méi)有界限,相互之間隨意干擾-A程序可以隨意訪問(wèn)B程序中的數(shù)據(jù),C程序可以修改系統(tǒng)調(diào)度程序的指令

所以80286出現(xiàn)--8086已經(jīng)沒(méi)有那么多應(yīng)用程序,所以必須兼容再兼容,加大內(nèi)存容量,增加地址線數(shù)量(24位),[段地址:偏移地址]的方式可以強(qiáng)化一下,可以為每個(gè)段提供更多屬性(如:范圍,特權(quán)級(jí)等),可以為每個(gè)段的定義提供固定方式;80286在默認(rèn)情況下完全兼容8086的運(yùn)行方式(實(shí)模式),它默認(rèn)可直接訪問(wèn)1MB的內(nèi)存空間,但是通過(guò)特殊的方式訪問(wèn)1MB+的空間

操作系統(tǒng)--實(shí)模式到保護(hù)模式

C.保護(hù)模式

1.每一段內(nèi)存都擁有一個(gè)屬性定義(描述符)

2.所有段的屬性定義構(gòu)成一張表(描述符表)

3.段寄存器保存的是屬性定義在表中的索引(選擇子)

描述符的內(nèi)存結(jié)構(gòu)

操作系統(tǒng)--實(shí)模式到保護(hù)模式

描述符表

操作系統(tǒng)--實(shí)模式到保護(hù)模式

選擇子的結(jié)構(gòu)

操作系統(tǒng)--實(shí)模式到保護(hù)模式

進(jìn)入保護(hù)模式的方式--1.定義描述符表2.打開(kāi)A20地址線3.加載描述表4.通知CPU進(jìn)入保護(hù)模式

小結(jié)

1.[段地址:偏移地址]的尋址方式解決了早期程序重定位難得問(wèn)題

2.8086實(shí)模式下的程序無(wú)法保證安全性

3.80286中提出了保護(hù)模式,加強(qiáng)了內(nèi)存段的安全性

4.處于兼容的考慮,80286之后的處理器都有2種工作模式

5.處理器需要特定的設(shè)置步驟才能進(jìn)入保護(hù)模式,默認(rèn)為實(shí)模式

二.實(shí)模式到保護(hù)模式(中)

80286的出現(xiàn)引入了保護(hù)模式,為現(xiàn)代操作系統(tǒng)和應(yīng)用程序奠定了基礎(chǔ),但是在設(shè)計(jì)方面還是有缺陷的-體現(xiàn)在段寄存器為24位,通用寄存器為16為,理論上段寄存器中的數(shù)值可以直接作為段基址,16位通用寄存器最多訪問(wèn)64K的內(nèi)存,為了訪問(wèn)16M的內(nèi)存,必須不停切換段基址

A.80386(由于80286的不足,出現(xiàn)了改進(jìn)版80386)

1.32位地址總線,可支持4G的內(nèi)存空間

2.段寄存器和通用寄存器位32位

3.任何一個(gè)寄存器都能訪問(wèn)到內(nèi)存的任意角落--開(kāi)啟了平坦內(nèi)存模式的新時(shí)代,段基址為0,使用通用寄存器訪問(wèn)4G內(nèi)存空間

新時(shí)期的內(nèi)存使用方式有三種

1.實(shí)模式-兼容8086的內(nèi)存使用方式

2.分段模式-通過(guò)[段地址:偏移地址]的方式將內(nèi)存從功能上分段(數(shù)據(jù)段,代碼段)

3.平坦模式-所有內(nèi)存就是一個(gè)段[0:32位偏移地址]

段屬性定義

操作系統(tǒng)--實(shí)模式到保護(hù)模式

選擇子屬性定義

操作系統(tǒng)--實(shí)模式到保護(hù)模式

保護(hù)模式中的段定義

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

匯編小貼士

section關(guān)鍵字用于"邏輯的"定義一段代碼集合

section定義的代碼段不同于[段地址:偏移地址]的代碼段

section定義的代碼段僅限于源碼中的代碼段

[段地址:偏移地址]的代碼段指內(nèi)存中的代碼段

操作系統(tǒng)--實(shí)模式到保護(hù)模式

bits16-用于指示編譯器將代碼按照16位方式進(jìn)行編譯

bits32-用于指示編譯器將代碼按照32位方式進(jìn)行編譯

在這里我們需要注意的是

1.段描述表中的第0個(gè)描述符不使用

2.代碼中必須顯示的指明16位代碼段和32位代碼段

3.必須使用jmp指令從16位代碼段跳轉(zhuǎn)到32位代碼段

保護(hù)模式的編程實(shí)驗(yàn)--實(shí)驗(yàn)的原材料需要inc.asm同時(shí)需要將loader.asm進(jìn)行修改、

loader.asm修改如下

%include?"inc.asm"
org?0x9000

jmp?CODE16_SEGMENT

[section?.gdt]

;?GDT?definition



GDT_ENTRY???????:?????Descriptor????0,????????????0,???????????0

CODE32_DESC?????:?????Descriptor????0,????Code32SegLen??-?1,???DA_C?+?DA_32

;?GDT?end



GdtLen????equ???$?-?GDT_ENTRY



GdtPtr:

??????????dw???GdtLen?-?1

??????????dd???0
?????????????????

;?GDT?Selector


Code32Selector????equ?(0x0001?<<?3)?+?SA_TIG?+?SA_RPL0


;?end?of?[section?.gdt]


[section?.s16]

[bits?16]

CODE16_SEGMENT:

????mov?ax,?cs

????mov?ds,?ax

????mov?es,?ax

????mov?ss,?ax

????mov?sp,?0x7c00

????
????;?initialize?GDT?for?32?bits?code?segment

????mov?eax,?0

????mov?ax,?cs

????shl?eax,?4

????add?eax,?CODE32_SEGMENT

????mov?word?[CODE32_DESC?+?2],?ax

????shr?eax,?16

????mov?byte?[CODE32_DESC?+?4],?al

????mov?byte?[CODE32_DESC?+?7],?ah

????
????;?initialize?GDT?pointer?struct

????mov?eax,?0

????mov?ax,?ds

????shl?eax,?4

????add?eax,?GDT_ENTRY

????mov?dword?[GdtPtr?+?2],?eax


????;?1.?load?GDT

????lgdt?[GdtPtr]

????
????;?2.?close?interrupt

????cli?

????
????;?3.?open?A20

????in?al,?0x92

????or?al,?00000010b

????out?0x92,?al

????
????;?4.?enter?protect?mode

????mov?eax,?cr0

????or?eax,?0x01

????mov?cr0,?eax

????
????;?5.?jump?to?32?bits?code

????jmp?dword?Code32Selector?:?0


[section?.s32]

[bits?32]

CODE32_SEGMENT:

????mov?eax,?0

????jmp?CODE32_SEGMENT


Code32SegLen????equ????$?-?CODE32_SEGMENT

make以及inc.asm

;?Segment?Attribute
DA_32????equ????0x4000
DA_DR????equ????0x90
DA_DRW???equ????0x92
DA_DRWA??equ????0x93
DA_C?????equ????0x98
DA_CR????equ????0x9A
DA_CCO???equ????0x9C
DA_CCOR??equ????0x9E

;?Selector?Attribute
SA_RPL0????equ????0
SA_RPL1????equ????1
SA_RPL2????equ????2
SA_RPL3????equ????3

SA_TIG????equ????0
SA_TIL????equ????4

;?描述符
;?usage:?Descriptor?Base,?Limit,?Attr
;????????Base:??dd
;????????Limit:?dd?(low?20?bits?available)
;????????Attr:??dw?(lower?4?bits?of?higher?byte?are?always?0)
%macro?Descriptor?3	??????????????????????????;?段基址,?段界限,?段屬性
????dw????%2?&?0xFFFF?????????????????????????;?段界限1
????dw????%1?&?0xFFFF?????????????????????????;?段基址1
????db????(%1?>>?16)?&?0xFF???????????????????;?段基址2
????dw????((%2?>>?8)?&?0xF00)?|?(%3?&?0xF0FF)?;?屬性1?+?段界限2?+?屬性2
????db????(%1?>>?24)?&?0xFF???????????????????;?段基址3
%endmacro?????????????????????????????????????;?共?8?字節(jié)

make的依賴需要修改操作系統(tǒng)--實(shí)模式到保護(hù)模式

準(zhǔn)備工作之后make,bochs之后看結(jié)果

操作系統(tǒng)--實(shí)模式到保護(hù)模式

發(fā)現(xiàn)在bochs下并沒(méi)有打印結(jié)果所以需要設(shè)置斷點(diǎn)來(lái)對(duì)該實(shí)驗(yàn)進(jìn)行繼續(xù)驗(yàn)證,首先對(duì)loader.asm進(jìn)行反編譯得到如圖左邊的結(jié)果,發(fā)現(xiàn)箭頭對(duì)應(yīng)處為loader.asm也就是右圖箭頭所對(duì)應(yīng)處

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

可以在左邊對(duì)應(yīng)點(diǎn)地址處設(shè)置斷點(diǎn)來(lái)對(duì)結(jié)果進(jìn)行分析,結(jié)果如下

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

從右邊的結(jié)果可以得出,進(jìn)行以此跳轉(zhuǎn)之后再進(jìn)行賦值,為了實(shí)驗(yàn),多次進(jìn)行單步操作,發(fā)現(xiàn)得出的結(jié)果是一致的,意味著死循環(huán)了,這樣我們就從實(shí)模式到了保護(hù)模式,從16位代碼段進(jìn)入到32位代碼段進(jìn)行執(zhí)行。

我們?cè)谏厦娴拇a中為什么不直接使用標(biāo)簽定義描述符中的段基地址?為什么 16 位代碼段到 32 位代碼段必須無(wú)條件跳轉(zhuǎn)呢?那么在匯編中,NASM 將匯編文件當(dāng)成一個(gè)獨(dú)立的代碼段進(jìn)行編譯,匯編代碼中的標(biāo)簽(Label)代表的是段內(nèi)偏移地址,實(shí)模式下需要配合段寄存器中的值計(jì)算標(biāo)簽的物理地址,這便是我們不直接使用標(biāo)簽定義描述符中的段基地址的原因了。代碼跳轉(zhuǎn)則是由于在匯編中存在一個(gè)流水線技術(shù)的概念。什么是流水線技術(shù)呢?處理器為了提高效率將當(dāng)前指令和后續(xù)指令預(yù)取到流水線,因此,可能同時(shí)預(yù)期的指令中既有 16 位代碼又有 32 位代碼。為了避免將 32 位代碼用 16 位代碼的方式運(yùn)行,需要刷新流水線,此時(shí)便需要使用無(wú)條件跳轉(zhuǎn) jmp 技術(shù)才能強(qiáng)制刷新流水線。

小結(jié)

1.80386處理器是計(jì)算機(jī)發(fā)展史上的里程碑

2.32位的寄存器和地址總線能夠直接訪問(wèn)4G內(nèi)存的任意角落

3.需要在16位實(shí)模式中對(duì)GDT中的數(shù)據(jù)進(jìn)行初始化

4.代碼中需要位GDT定義一個(gè)標(biāo)識(shí)數(shù)據(jù)結(jié)構(gòu)

5.需要使用jmp指令從16位代碼跳轉(zhuǎn)到32位代碼

三.實(shí)模式到保護(hù)模式(下)

在上面的實(shí)驗(yàn)中,我們注意到使用了jmp dword Code32Selector :0,為什么需要dword,要知道在這里的jmp的作用(s16-s32)-在16位代碼中,所有的立即數(shù)默認(rèn)為16位,從16位代碼段跳轉(zhuǎn)到32位代碼時(shí),必須做強(qiáng)制轉(zhuǎn)換,否則,段內(nèi)偏移地址可能被截?cái)?/p>

操作系統(tǒng)--實(shí)模式到保護(hù)模式

在這節(jié)需要深入保護(hù)模式:定義顯存段,為了顯示數(shù)據(jù),必須存在兩大硬件:顯卡+顯示器。顯卡是為顯示器提供需要顯示的數(shù)據(jù),控制顯示器的模式和狀態(tài)。而顯示器是將目標(biāo)數(shù)據(jù)以可見(jiàn)的方式呈現(xiàn)在屏幕上。顯存的概念和意義就是顯卡擁有自己內(nèi)部的而數(shù)據(jù)存儲(chǔ)器,顯存在本質(zhì)上和普通內(nèi)存無(wú)差別,用于存儲(chǔ)目標(biāo)數(shù)據(jù),操作顯存中的數(shù)據(jù)將導(dǎo)致顯示器上內(nèi)容的改變。

顯卡的工作模式有兩種-文本模式與圖形模式。在不同的模式下,顯卡對(duì)顯存內(nèi)容的解釋是不同的,可以使用專屬指令或int 0x10中斷改變顯卡工作模式,在文本模式下的顯存的地址范圍映射位[0xB8000,0xBFFFF],一屏幕可以顯示25行,每行80個(gè)字符

????顯卡的文本顯示原理與文本模式下顯示字符

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

對(duì)段基址和段屬性進(jìn)行設(shè)置之后以及打印的結(jié)果,發(fā)現(xiàn)會(huì)在bochs上打印出結(jié)果p

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

在實(shí)現(xiàn)完單個(gè)字符的打印之后,可以進(jìn)一步實(shí)現(xiàn)指定內(nèi)存中的字符串打印,首先需要準(zhǔn)備的工作有定義全局堆棧段(.gs),用于保護(hù)模式下的函數(shù)調(diào)用,之后定義全局?jǐn)?shù)據(jù)段(.dat),用于定義只讀數(shù)據(jù),最后利用對(duì)顯存段的操作定義字符串打印函數(shù)

打印函數(shù)的設(shè)計(jì)可以如下圖所示

操作系統(tǒng)--實(shí)模式到保護(hù)模式

在這里需要注意的是32位保護(hù)模式下的乘法操作是被乘數(shù)放到AX寄存器,乘數(shù)放到通用寄存器或內(nèi)存單元(16位),相乘的結(jié)果放在EAX寄存器中;同時(shí)$表示當(dāng)前行相對(duì)于代碼起始位置處的偏移量,$$表示當(dāng)前代碼節(jié)的起始位置

操作系統(tǒng)--實(shí)模式到保護(hù)模式

實(shí)現(xiàn)過(guò)程以及實(shí)現(xiàn)結(jié)果,可以看到實(shí)現(xiàn)的結(jié)果打印出設(shè)置的字符串

操作系統(tǒng)--實(shí)模式到保護(hù)模式操作系統(tǒng)--實(shí)模式到保護(hù)模式

操作系統(tǒng)--實(shí)模式到保護(hù)模式

小結(jié)

1.實(shí)模式下可以使用32位寄存器和32位地址

2.顯存是顯卡內(nèi)部的存儲(chǔ)單元,本質(zhì)上與普通內(nèi)存無(wú)差別

3.顯卡有兩種工作模式-文本模式與圖形模式

4.文本模式下操作顯存單元中的數(shù)據(jù)能夠立即反映到顯示器

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文名稱:操作系統(tǒng)--實(shí)模式到保護(hù)模式-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article44/pjgee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、App設(shè)計(jì)、微信小程序商城網(wǎng)站、做網(wǎng)站定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
日本成年网站在线观看| 亚洲第一国产综合自拍| 国产成人精品久久久亚洲| 国产一区二区精品性浆| 国产成人精品手机在线观看| 欧美日韩免费高清视视频| 国产精品伦理一区二区三区| 国产精品一二三在线看| 色哟哟亚洲精品一区二区| 国产网红女主播视频一区二区| 夜色一区二区av人片| 日本免费播放一区二区视频| 欧美乱码中文字幕在线观看| 一区二区三区国产精品乱码| 国产精品呦呦国产精品尤物| 亚洲av少妇高潮流白浆在线| 中文字幕五月婷婷免费| 尤物视频最新在线观看| 国产丝袜在线精品丝袜不卡| 精品国产50部农村老熟女av| 中文字幕女同系列av厨房| 亚洲精品女同专区视频| 亚洲欧美日韩性生活视频| 91国产精品视频在线| 国产三级三级在线观看| 可以免费在线看的av网站| 日韩在线不卡播放视频| 高清不卡一区二区在线观看| 日韩日美日韩av影视| 色人阁在线精品免费视频| 欧美亚洲尤物久久精品| 国产97精品在线播放| 国产精品一区二区三区日本| 在线日韩中文字幕二区| 日本大型午夜福利视频| 农村精品少妇久久久久久| 91精品国语对白人妻刺激| 亚洲成在人天堂一区二区| 国产传媒视频在线观看| 国产成人亚洲精品午夜国产馆| 精品亚洲国产成人av|