精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

沒有MMU的處理器可否安裝操作系統呢?

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-04-21 10:45 ? 次閱讀

有些童鞋可能會有這樣的疑問,沒有MMU的處理器可否安裝操作系統呢?

事實上,我們知道處理器是計算機的核心運算硬件,現在使用windows操作系統的用戶使用的機器之中的處理器多數都是X86內核,而實際之上很多時候我們用戶都是會在心目之中把一個處理器和其運行的特定操作系統掛鉤,之前說的X86和windows操作系統,而在Cortex-A系列硬件之上我們運行的多數都是Android操作系統,或者是linux操作系統。

這些操作系統雖然說各自不同,但是都是有相同的部分,比如說對于內存的管理就是如此。一般我們把對于內存的管理模塊都是稱之為MMU,但是實際之上在win7旗艦版操作系統之中并不是所有的內存管理任務都是操作系統完成的,處理器也是提供了MMU硬件支持,一般我們都說有MMU支持的處理器是可以安裝操作系統的。

沒有MMU的處理器無法安裝操作系統? 我們在上面說了沒有MMU的處理器是不能安裝操作系統的,其實并不是這樣,現在很多的使用在嵌入式系統之中的MCU處理器都是不具備MMU,但是這種處理器可以與運行一些最為簡單的實時操作系統。這種操作系統甚至也是可以提供多任務功能。無MMU處理器到底是有什么限制 實際之上如果一個處理器沒有MMU的話,那么其就是不能支持和我們通用計算機一樣在外部存儲器之中部署程序,其只能是把應用程序和操作系統混合在一起。這樣的程序處理方式其實和一般的無操作系統程序類似,所以說很多人認為這不能算是操作系統。

下面我們來詳細介紹一下MMU:

MMU即內存管理單元(Memory Manage Unit),是一個與軟件密切相關的硬件部件,也是理解linux等操作系統內核機制的最大障礙之一。可以說,不懂MMU使很多人一直停滯在單片機與無OS的時代。

一、虛擬地址/物理地址

如果處理器沒有MMU,CPU內部執行單元產生的內存地址信號將直接通過地址總線發送到芯片引腳,被內存芯片接收,這就是物理地址(physical address),簡稱PA。英文physical代表物理的接觸,所以PA就是與內存芯片physically connected的總線上的信號。

如果MMU存在且啟用,CPU執行單元產生的地址信號在發送到內存芯片之前將被MMU截獲,這個地址信號稱為虛擬地址(virtual address),簡稱VA,MMU會負責把VA翻譯成另一個地址,然后發到內存芯片地址引腳上,即VA映射成PA,如下圖:

所以物理地址①是通過CPU對外地址總線②傳給Memory Chip③使用的地址;而虛擬地址④是CPU內部執行單元⑤產生的,發送給MMU⑥的地址。硬件上MMU⑥一般封裝于CPU芯片⑦內部,所以虛擬地址④一般只存在于CPU⑦內部,到了CPU外部地址總線引腳上②的信號就是MMU轉換過的物理地址①。

軟件上MMU對用戶程序不可見,在啟用MMU的平臺上(沒有MMU不必說,只有物理地址,不存在虛擬地址),用戶C程序中變量和函數背后的數據/指令地址等都是虛擬地址,這些虛擬內存地址從CPU執行單元⑤發出后,都會首先被MMU攔截并轉換成物理地址,然后再發送給內存。也就是說用戶程序運行*pA =100;"這條賦值語句時,假設debugger顯示指針pA的值為0x30004000(虛擬地址),但此時通過硬件工具(如邏輯分析儀)偵測到的CPU與外存芯片間總線信號很可能是另外一個值,如0x8000(物理地址)。當然對一般程序員來說,只要上述語句運行后debugger顯示0x30004000位置處的內存值為100就行了,根本無需關心pA的物理地址是多少。但進行OS移植或驅動開發的系統程序員不同,他們必須清楚軟件如何在幕后輔助硬件MMU完成地址轉換。

暫不探討這種復雜機制的歷史原因,很多人學習或闡述MMU時,都迷失于對一些相關發散問題的無休止探究,我們暫時抽身出來,用一句話做階段性交待,"所有計算機科學中的問題都能通過增加一個中間轉換層來解決"("All problems in computer science can be solved by another level of indirection")。某種程度上,這種被動解決問題的方式使計算機軟硬件的一系列發展只不過是慣性向前,看起來順理成章,然而幾乎所有從業者的智慧都浪費在不斷學習和構建新的中間層,身不由己的推動這個龐然大物繼續膨脹。忽然感覺索然無味,很無聊啊。

二、頁/頁幀/頁表/頁表項(PTE)

這幾個頁概念也噎倒了不少人,這里澄清下。MMU是負責把虛擬地址映射為物理地址,但凡"映射"都要解決兩個問題:映射的最小單位(粒度)和映射的規則。

MMU中VA到PA映射的最小單位稱為頁(Page),映射的最低粒度是單個虛擬頁到物理頁,頁大小通常是4K,即一次最少要把4K大小的VA頁塊整體映射到4K的PA頁塊(從0開始4K對齊劃分頁塊),頁內偏移不變,如VA的一頁0x30004000~0x30004fff被映射到PA的一頁 0x00008000~0x00008fff,當CPU執行單元訪問虛擬地址0x30004008,實際訪問的物理地址是0x00008008(0x30004008和0x00008008分別位于虛實兩套地址空間,互不相干,不存在重疊和沖突)。以頁為最小單位,就是不能把VA中某一頁劃分成幾小塊分別映射到不同PA,也不能把VA中屬于不同頁的碎塊映射到PA某一頁的不同部分,必須頁對頁整體映射。

頁幀(Page Frame)是指物理內存中的一頁內存,MMU虛實地址映射就是尋找物理頁幀的過程,對這個概念了解就可以了。

MMU軟件配置的核心是頁表(Page Table),它描述MMU的映射規則,即虛擬內存哪(幾)個頁映射到物理內存哪(幾)個頁幀。頁表由一條條代表映射規則的記錄組成,每一條稱為一個頁表條目(Page Table Entry,即PTE),整個頁表保存在片外內存,MMU通過查找頁表確定一個VA應該映射到什么PA,以及是否有權限映射。

但如果MMU每次地址轉換都到位于外部內存的頁表上查找PTE,轉換速度就會大大降低,于是出現了

三、TLB

TLB (Translation Lookaside Buffers)即轉換快表,又簡稱快表,可以理解為MMU內部專用的存放頁表的cache,保存著最近使用的PTE乃至全部頁表。MMU接收到虛擬地址后,首先在TLB中查找,如果找到該VA對應的PTE就直接轉換,找不到再去外存頁表查找,并置換進TLB。TLB屬于片上SRAM,訪問速度快,通過TLB緩存PTE可以節省MMU訪問外存頁表的時間,從而加速虛實地址轉換。TLB和CPU cache的工作原理一樣,只是TLB專用于為MMU緩存頁表。

四、MMU的內存保護功能

既然所有發往內存的地址信號都要經過MMU處理,那讓它只單單做地址轉換,豈不是浪費了這個特意安插的轉換層?顯然它有能力對虛地址訪問做更多的限定(就像路由器轉發網絡包的同時還能過濾各種非法訪問),比如內存保護。可以在PTE條目中預留出幾個比特,用于設置訪問權限的屬性,如禁止訪問、可讀、可寫和可執行等。設好后,CPU訪問一個VA時,MMU找到頁表中對應PTE,把指令的權限需求與該PTE中的限定條件做比對,若符合要求就把VA轉換成PA,否則不允許訪問,并產生異常。

五、多級頁表

虛擬地址由頁號和頁內偏移組成。什么東東呢?

前面說過MMU映射以頁為最小單位,假設頁大小為4K(212),那么無論頁表怎樣設置,虛擬地址后12比特與MMU映射后的物理地址后12比特總是相同,這不變的比特位就是頁內偏移。為什么不變?拜托,把搭積木想象成一種映射,不管你怎么搭,你也改變不了每塊積木內部的原子排列吧。所謂以頁為最小單位就是保持一部分不變作為最小粒度。

頁號就更有故事了,一個32bits虛擬地址,可以劃分為220個內存頁,如果都以頁為單位和物理頁幀隨意映射,頁表的空間占用就是220*sizeof(PTE)*進程數(每個進程都要有自己的頁表),PTE一般占4字節,即每進程4M,這對空間占用和MMU查詢速度都很不利。

問題是實際應用中不需要每次都按最小粒度的頁來映射,很多時候可以映射更大的內存塊。因此最好采用變化的映射粒度,既靈活又可以減小頁表空間。具體說可以把20bits的頁號再劃分為幾部分(如下圖linux的3級劃分),

PGD(16bits)

PMD(4bits)

PTE(4bits)

Offset(12bits)

簡單說每次MMU根據虛擬地址查詢頁表都是一級級進行,先根據PGD的值查詢,如果查到PGD的匹配,但后續PMD和PTE沒有,就以2(offset+pte+pmd)=1M為粒度進行映射,后20bits全部是塊內偏移,與物理地址相同。

依次類推,具體可參考WolfGang Mauerer的professional linux kernel architecture的1.3.4節,以及各CPU的Spec中MMU章節,查看MMU組合出物理地址的詳細過程。

六、操作系統和MMU

實際上MMU是為滿足操作系統越來越復雜的內存管理而產生的。OS和MMU的關系簡單說:

a.系統初始化代碼會在內存中生成頁表,然后把頁表地址設置給MMU對應寄存器,使MMU知道頁表在物理內存中的什么位置,以便在需要時進行查找。之后通過專用指令啟動MMU,以此為分界,之后程序中所有內存地址都變成虛地址,MMU硬件開始自動完成查表和虛實地址轉換。

b.OS初始化后期,創建第一個用戶進程,這個過程中也需要創建頁表,把其地址賦給進程結構體中某指針成員變量。即每個進程都要有獨立的頁表。

c.用戶創建新進程時,子進程拷貝一份父進程的頁表,之后隨著程序運行,頁表內容逐漸更新變化。比較復雜了,幾句講不清楚,不多說了哈,有時間講linux的話再說吧

六、最后總結

相關概念講完,VA到PA的映射過程就一目了然:MMU得到VA后先在TLB內查找,若沒找到匹配的PTE條目就到外部頁表查詢,并置換進TLB;根據PTE條目中對訪問權限的限定檢查該條VA指令是否符合,若不符合則不繼續,并拋出exception異常;符合后根據VA的地址分段查詢頁表,保持offset(廣義)不變,組合出物理地址,發送出去。

在這個過程中,軟件的工作核心就是生成和配置頁表。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19165

    瀏覽量

    229130
  • Linux
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208927
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18268

原文標題:沒有MMU的處理器就無法上操作系統?高手帶你解讀MMU內存管理單元

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    操作系統 處理器 嵌入式

    為什么有的處理器可以跑操作系統,有的不能?(專業一點的回答)
    發表于 09-04 16:08

    MiCO 基于微處理器的物聯網操作系統

    `MiCO 基于微處理器的物聯網操作系統介紹 :`
    發表于 01-26 10:42

    μC/OS-II操作系統在各種處理器上的移植

    的工作就是操作系統的移植。本文選取使用較多的51單片機、LPC2210、NiosII三種處理器進行介紹。 1 μC/OS-II操作系統移植條件μC/OS-II操作系統的大部分源代碼都是
    發表于 08-14 09:46

    匯聚式處理器Blackfin支持什么操作系統

    當今的嵌入式應用已經無處不在,全球每年生產數十億顆微處理器,其中大部分被廣泛應用于各類嵌入式系統,從消費電子、通信終端及系統設備、工業控制、汽車電子系統到航空航天,無處不能看到嵌入式應
    發表于 10-11 07:12

    MicroBlaze處理器的PetaLinux操作系統怎么移植?

    核,而如何針對特定的微處理器選擇合適的嵌入式操作系統是SOPC開發的難點之一。本文針對Xilinx公司的MicroBlaze軟核,介紹了PetaLinux嵌入式操作系統及其移植方法,研究了PetaLinux的相關配置和啟動方案。
    發表于 03-16 06:37

    VxWorks操作系統基于ARM處理器的中斷怎么處理

    本文通過基于S3C44B0X處理器VxWorks嵌入式操作系統的BSP移植,詳細分析了VxWorks操作系統基于ARM處理器的中斷處理方法。
    發表于 04-27 06:28

    linux操作系統只能在以arm為處理器的pc上運行嗎

    linux操作系統只能在以arm為處理器的pc上運行嗎?可以在英特爾的各種處理器上運行嗎?
    發表于 07-27 15:04

    UC/OS-Ⅱ操作系統在ARM處理器上的移植

    UC/OS-Ⅱ操作系統在ARM處理器上的移植
    發表于 03-28 09:51 ?27次下載

    嵌入式處理器和嵌入式操作系統

    嵌入式處理器和嵌入式操作系統 1.2.1 嵌入式微處理器    嵌入式微處理器有許多種流行的處理器核,芯片
    發表于 06-17 00:30 ?1997次閱讀

    μC/OS-II操作系統在各種處理器上的移植

    μC/OS-II操作系統在各種處理器上的移植  μC/OS-II操作系統是一種搶占式多任務、單內存空間、微小內核的嵌入式操作系統,具有高效緊湊的特點。它執行效率高,占
    發表于 01-07 11:11 ?715次閱讀
    μC/OS-II<b class='flag-5'>操作系統</b>在各種<b class='flag-5'>處理器</b>上的移植

    谷歌Pixel 2 XL問題不斷,操作系統沒有安裝

    根據部分Reddit和Ars Technica論壇和Twitter用戶表示,自己收到的Pixel 2 XL根本就沒有安裝操作系統。我們都知道無論是智能手機還是電腦,沒有
    發表于 11-03 11:21 ?1614次閱讀

    基于SPEC 2000的桌面操作系統與處理器適配評測

    桌面操作系統與處理器的適配評測是提升國產計算機系統質量的重要途徑,傳統桌面操作系統的評測側重于軟件本身的測試,不能夠全面反映其與處理器的適配性能。基于SPEC 2000基準程序集,提出
    發表于 12-01 11:26 ?0次下載
    基于SPEC 2000的桌面<b class='flag-5'>操作系統與處理器</b>適配評測

    基于S3C4510B微處理器操作系統實現網絡通信工程的編寫設計

    Micro,是“小”的意思;C表示Control,是“控制”的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“針對微控制領域而設計的Linux系統”。它也是針對無MMU(內存管理單元模塊)的微處理器
    的頭像 發表于 10-04 17:37 ?1949次閱讀
    基于S3C4510B微<b class='flag-5'>處理器</b>和<b class='flag-5'>操作系統</b>實現網絡通信工程的編寫設計

    MMU的工作原理梳理

    本文從內存管理的發展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現細節,將 MMU 的工作原理從概念上比較清晰的梳理了一遍。 MMU 誕生之前:在傳
    的頭像 發表于 12-17 16:13 ?1.3w次閱讀
    <b class='flag-5'>MMU</b>的工作原理梳理

    如何使用IPMI安裝操作系統

    當我們購買了物理服務,首先要做的事是必須在其上安裝所需的操作系統。但這可以通過服務控制臺、IPMI或KVM來完成,具體取決于我們要安裝
    的頭像 發表于 11-09 15:38 ?3787次閱讀