日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

一步步编写操作系统 10 cpu的实模式

發布時間:2023/12/10 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 10 cpu的实模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

cpu的實模式

由于mbr在實模式下工作……什么?什么是實模式?這時候有同學打斷了我。我心想,這下好辦了……哈哈,沒有啦,開個玩笑而已。我們這里所說的實模式其實就是8086 cpu的工作環境、工作方式、工作狀態,這是一整套的內容,并不是單指某一方面的設置。

實模式是指8086 cpu的尋址方式,寄存器大小,指令用法等,是用來反應cpu在該環境下如何工作的概念。所以想了解實模式這種抽象的概念,主要就是了解在實模式下cpu能做什么。

大家都學過匯編語言吧,里面有講實模式、保護模式之類的,但鑒于太過久遠,為了讓后面的工作順利進行,我覺得還是有必要給大家介紹下cpu的工作模式。

cpu的工作原理

在介紹cpu的各種模式之前 ,先占用大家幾分鐘的時間 ,說點在兩種模式下公共的內容,和大家聊聊cpu的工作原理。當然這里所說工作原理可不像微機接口技術里那么細致,精確到邏輯門等電子電路。第一我也不會,想講也講不出來,吼吼^0^。第二我覺得沒必要懂到那么細致,如果懂的太細了,會為之所累,您想,每次執行一條指令時,您的大腦總是聯想到各種元件的工作流程,本來一瞬間完成的工作您可能要給放大一千倍,非得強迫癥似的要求掌握每個步驟的細節,萬一在哪個點上想不通了這就會讓人感到很沮喪,影響心情,甚至質疑上層的編譯器,哈哈,我知道說的有點嚴重了,不夸張一點的話不容易表述問題,好了,下面在宏觀上介紹下cpu工作原理。

大家都知道,cpu的唯一的任務就是執行指令,在它眼里,指令就是一串010101…,那它執行每條指令的流程是怎樣的呢。cpu大體上可以劃分為3個部分,它們是控制單元、運算單元、存儲單元。控制單元是cpu的控制中心,cpu需要經過它的幫忙才知道自己下一步要做什么。而控制單元大致是由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)、操作控制器OC(Operation Controller)組成。程序被加載到內存后,也就是指令這時都在內存中了,指令指針寄存器IP指向內存中下一條待執行指令的地址,控制單元根據IP寄存器的指向,將位于內存中的指令逐個裝載到指令寄存器中,但它還是不知道這些指令是什么,在它眼里的0101串此時還沒有實際意義。然后指令譯碼器將位于指令寄存器中的指令按照指令格式來解碼,分析出操作碼是什么,操作數在哪里之類的。下面給出了一般的指令格式:

前綴 操作碼 尋址方式、操作數類型 立即數 偏移量

看上去還是蠻復雜的,復雜的原因是必須用一種統一的格式去歸納所有形式的指令,因為cpu只能識別一種格式,萬物的源頭必須是最簡單的,cpu也一樣。這就好比要求用一句話表達出宇宙蒼生,似乎看上去不可能?能,一定能,只要這句話足夠長就行^_^。就像等待女朋友化妝一樣,她怕你等煩了,于是就安慰你一句:“還有一首歌的時間就好了”,其實你明白,這首歌是《黃河大合唱》,一共8個樂章且唱呢……^5^。

由于cpu支持的指令數量較多,一些指令還可以搭配一些輔助的東東,所以就需要在前綴部分記錄這些,如rep(用于重復執行,匯編中經常用)、段超越前綴。操作碼就是大家平時用的mov、jmp等等。尋址方式又有好多,如基址尋址、變址尋址等等,操作數類型中記錄的是用哪些寄存器之類的。如果在指令中用到了立即數,就要將其記錄到指令格式中立即數部分,如果尋址方式中有到了偏移量,就要將此偏移量記錄到指令格式中的偏移量部分。

既然指令是存放在指令寄存器中,那指令中用到的數據存放到哪里呢,下面介紹存儲單元。

存儲單元是指cpu內部的L1、L2緩存及寄存器,待處理的數據就存放在這些存儲單元中,這里的數據是說指令中的操作數。為什么數據已經在內存中了還非得在cpu內部再整這么個存儲單元干嗎?原因是緩存基本上都是采用SRAM (Static RAM)存儲器,從名字上看就知道它是一種具有靜態存取功能的存儲器。這么一說,似乎還有動態存儲功能的存儲器?是啊,其實我們插在主板上的物理內存就是DRAM(Dynamic Random Access Memory), DRAM內存需要每隔一段時間就去刷新電路,刷新就是指給DRAM充電,否則存儲的數據就會丟失。而SRAM不需要刷新電路即能保存它內部存儲的數據,這就是靜態的含義,因此SRAM性能較強勁。但SRAM也不是完美無缺的,它的集成度較低,相同容量之下,SRAM的體積比DRAM要大很多。所以二級緩存都不大,目前來說頂多4兆左右,所以現代cpu用二級緩存的數量取勝,如L1、L2、L3共三級。寄存器可分為兩大類,程序員可以使用的寄存器稱為程序可見寄存器,如通用寄存器,段寄存器。程序不可見寄存器是指程序員不可使用,也無法訪問到它們,系統運行期間可能要用到的寄存器,如ALU算術邏輯單元在求和時,會將結果先送到數據暫存寄存器。操作碼有了,操作數有了,就差執行指令了,隨后“操作控制器”給相關部件發信號,會給哪些部件發信號呢?如下面要介紹的運算單元。

運算單元是負責算術運算(加減乘除)和邏輯運算(比較、移位),它從控制單元那里接收命令(信號)并執行,它沒有自主意識,只是個執行部件。它們之間的關系如圖:

?

好啦,文字描述過了,圖也看過了,總結下cpu的工作原理:控制單元要取下一條待運行的指令,該指令的地址是在程序計數器PC中,在x86cpu上,程序計數器就是cs:ip。于是讀取ip寄存器后,將此地址送上地址總線,cpu根據此地址便得到了指令,并將其存入到指令寄存器IR中。這時候輪到指令譯碼器上場了,它根據指令格式檢查指令寄存器中的指令,先確定操作碼是什么,再檢查操作數類型,若是在內存中,就將相應操作數從內存中取回放入自己的存儲單元,若操作數是在寄存器中就直接用了,免了取操作數這一過程。操作碼有了,操作數也齊了,操作控制器給運算單元下令,開工,于是運算單元便真正開始執行指令了。ip寄存器的值被加上當前指令的大小,于是ip又指向了下一條指令的地址。接著控制單元又要取下一條指令了,流程回到了本段開頭,cpu便開始了日復一日的循環,由于cpu特別不容易壞,所以唯一它停下來的條件就是停電。

以上是cpu的工作原理,無論cpu在哪種模式下工作,這一核心原理是不變的。有了這一思想武裝起來后再講模式就簡單多了,兄弟們加油,下一節,不見不散。

總結

以上是生活随笔為你收集整理的一步步编写操作系统 10 cpu的实模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。