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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

一步步编写操作系统 32 linux内核获取内存容量的方法

發(fā)布時(shí)間:2023/12/10 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 32 linux内核获取内存容量的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

操作系統(tǒng)是計(jì)算機(jī)硬件的管家,它不僅要知道自己的安裝了哪些硬件,還得給出有效得當(dāng)?shù)墓芾泶胧?#xff0c;按照預(yù)定的一套管理策略使硬件資源得到合理的運(yùn)用。但管理策略只是邏輯上的東西,是操作系統(tǒng)自圓其說的一套管理資源的方法,管理再漂亮,沒有硬件支撐也無能為力,真正干活的都是底層。

保護(hù)模式最“大”的特點(diǎn)就是尋址空間“大”,在進(jìn)入保護(hù)模式之后,我們將接觸到虛擬內(nèi)存、內(nèi)存管理等。但這些和內(nèi)存有關(guān)的概念都是建立在物理內(nèi)存之上,無論理論概念說的多高大上,最終也要在物理內(nèi)存上落實(shí)行動(dòng)。為了在后期做好內(nèi)存管理工作,咱們先得知道自己有多少物理內(nèi)存才行。

在linux中有多種方法獲取內(nèi)存容量,如果一種方法失敗,就會(huì)試用其它方法。比如在linux 2.6內(nèi)核中,是用detect_memory函數(shù)來獲取內(nèi)存容量的。其函數(shù)在本質(zhì)上是通過調(diào)用bios中斷0x15實(shí)現(xiàn)的,分別是bios 中斷0x15的3個(gè)子功能,子功能號要存放到寄存器EAX或AX中,如下:

  • EAX=0xE820:遍歷主機(jī)上全部內(nèi)存。
  • AX=0xE801: 分別檢測低15MB和16M~4GB之間的內(nèi)存,最大支持4GB。
  • AH=0x88:最多檢測出64MB內(nèi)存,實(shí)際內(nèi)存超過此容量也按照64MB返回。

bios中斷是實(shí)模式下的方法,只能在進(jìn)入保護(hù)模式前調(diào)用。咱們效仿linux“不棄不舍”的精神,在實(shí)模式下也用這三種方法檢測完內(nèi)存容量后再進(jìn)入保護(hù)模式。如果一種方法獲取失敗,嘗試另一種方法,若三種方法都失敗了,由于無法獲取內(nèi)存信息,后續(xù)程序無法加載,只好將機(jī)器掛起,停止運(yùn)行。

bios中斷可以返回已安裝的硬件信息,由于bios及其中斷也只是一組軟件,它要訪問硬件也要依靠硬件提供的接口,所以,獲取內(nèi)存信息,其內(nèi)部是通過連續(xù)調(diào)用硬件的API(Application Program Interface,應(yīng)用程序接口)來獲取內(nèi)存信息的。另外,由于每次調(diào)用bios中斷都是有一定的代價(jià)的(比如至少要將程序的上下文保護(hù)起來以便從中斷返回時(shí)可以回到原點(diǎn)繼續(xù)向下執(zhí)行),所以盡量在一次中斷中返回足量的信息,由用戶程序自己挑出重點(diǎn)內(nèi)容。下面介紹的中斷便是這方面的典范。

bios 0x15中斷提供了豐富的功能,具體要調(diào)用的功能,需要在寄存器ax中指定。其中0xE8xx系列的子功能較為強(qiáng)大,0x15中斷的子功能0xE820和0xE801都可以用來獲取內(nèi)存,區(qū)別是0xE820返回的是內(nèi)存布局,信息量相對多一些,操作也相對復(fù)雜。而0xE801直接返回的是內(nèi)存容量,操作適中,不繁不簡。上面還提到了子功能0x88也能獲取內(nèi)存容量,這是最簡單的用法,不過操作越簡單,功能也就越薄弱。話說linux中的dmesg命令就與0xE820相關(guān),可見其功能是很大的,之后就按照功能強(qiáng)弱的順序逐一介紹用法。

總結(jié)

以上是生活随笔為你收集整理的一步步编写操作系统 32 linux内核获取内存容量的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。