色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

操作系統(tǒng)之CPU與實(shí)模式(上)

jf_78858299 ? 來源:碼農(nóng)的荒島求生 ? 作者:碼農(nóng)的荒島求生 ? 2023-02-15 14:56 ? 次閱讀

對(duì)于人類來說,我們不喜歡拐彎抹角,喜歡更直接的東西,“有話直說”、“沒有中間商賺差價(jià)”、“簡潔的設(shè)計(jì)”等等,然而對(duì)于計(jì)算機(jī),尤其是對(duì)內(nèi)存管理來說則恰恰相反, 在這里"簡潔"的設(shè)計(jì)往往不是好的設(shè)計(jì) ,這到底是什么意思呢?

我們?cè)诤茉绲奈恼轮芯吞岬竭^,內(nèi)存從本質(zhì)上將非常簡單,你可以將其想像成一個(gè)個(gè)的小盒子組成,每個(gè)小盒子要么能存儲(chǔ)1要么存儲(chǔ)0,每8個(gè)小盒子組成一個(gè)字節(jié)(8比特),每個(gè)字節(jié)都有一個(gè)唯一的地址,通過這個(gè)地址我們就能從相應(yīng)的一組小盒子取出這個(gè)比特。

其它沒了。

看到了吧,內(nèi)存本身其實(shí)是非常簡單的,然而程序員以及程序使用內(nèi)存的方式又讓這個(gè)問題變得復(fù)雜起來,分析任何復(fù)雜問題都要抓住重點(diǎn)、抓住核心問題,那么這里的重點(diǎn)以及核心是什么呢?

不賣關(guān)子,這里的核心在于兩個(gè)字: 尋址Addressing。

一切都是圍繞尋址展開的。

尋址,最重要的就是尋址

什么是尋址 Addressing?所謂尋址就是找到內(nèi)存中某個(gè)我們需要的數(shù)據(jù)的方式。

哪怕以我們平時(shí)去儲(chǔ)物柜取東西都有很多“尋址”方式:

  • 直接告訴我們一個(gè)編號(hào),我們拿到這個(gè)編號(hào)后按個(gè)去找,就像下面這張圖,我們需要找到東西在第15號(hào)儲(chǔ)物柜中,那么我們根據(jù)15這個(gè)地址就能找到第15號(hào)儲(chǔ)物柜。
    圖片

  • 當(dāng)然我們也可以將儲(chǔ)物柜劃分區(qū)域,還是以剛才的儲(chǔ)物柜為例我們可以劃分為3個(gè)區(qū)域,當(dāng)我們需要找東西時(shí)告訴我們其在儲(chǔ)物柜的哪個(gè)區(qū)域,以及在該區(qū)域中的"偏移"是多少。

    以下圖為例我們需要的東西在第二個(gè)區(qū)域,區(qū)域內(nèi)的偏移為6(該區(qū)域中的第6個(gè)儲(chǔ)物柜)。

    圖片

實(shí)際上,第一種更像是“絕對(duì)尋址”,什么意思呢?就是找到某個(gè)具體的儲(chǔ)物柜是根據(jù)一個(gè)“寫死的地址”(hardcode),很死板,第二種更像是相對(duì)尋址,稍顯靈活一些。

怎么樣,你是不是感覺這兩種其實(shí)也沒什么區(qū)別嘛,的確,對(duì)于找儲(chǔ)物柜這個(gè)例子來說這兩種方式的確沒什么區(qū)別,但對(duì)于內(nèi)存來說就不太一樣了。

死板 vs 靈活

我們知道程序以及程序使用的數(shù)據(jù)編譯好后存放在磁盤上,運(yùn)行時(shí)要加載到內(nèi)存中,因此這里同樣存在尋址問題:我們需要根據(jù)內(nèi)存地址找到機(jī)器指令以及數(shù)據(jù),接下來假設(shè)有一個(gè)只有8字節(jié)大小的內(nèi)存和一個(gè)只有2字節(jié)機(jī)器指令的程序(無需關(guān)心實(shí)際意義):

圖片

這段2字節(jié)的代碼非常簡單,其實(shí)就是一個(gè)無意義的while循環(huán),注意看這里的jmp這條指令,我們直接跳轉(zhuǎn)到內(nèi)存地址2,這就是一個(gè)寫死(hard code)的內(nèi)存地址,這就意味著我們必須把該程序加載到內(nèi)存地址為2的位置上:

圖片

否則這段指令根本沒有辦法運(yùn)行,比如我們把這段代碼加載到內(nèi)存地址6上去:

圖片

那么在執(zhí)行jmp 2時(shí)我們根本沒有辦法跳轉(zhuǎn)到add這行指令,有的同學(xué)可能覺得無所謂,不就是內(nèi)存地址寫死了嘛,好像也沒什么大不了的吧。

如果一次只能運(yùn)行一個(gè)程序的確也沒什么大不了的,但對(duì)于操作系統(tǒng)最核心的功能之一:多任務(wù),也就是一次可以運(yùn)行多個(gè)程序來說這個(gè)方案簡直行不通。

在這種方案下你幾乎沒有辦法一次運(yùn)行多個(gè)程序,除非在運(yùn)行之前你給要運(yùn)行的這幾個(gè)程序劃定好區(qū)域,比如要運(yùn)行兩個(gè)程序A和B,A占用03這個(gè)區(qū)域的內(nèi)存;B占用46這個(gè)區(qū)域的內(nèi)存, 對(duì)于現(xiàn)代程序員來說你能想象在程序運(yùn)行之前就需要給它劃定好區(qū)域嗎? 顯然,這非常繁瑣,也容易出錯(cuò)。

如果你在上世紀(jì)六七十年代寫代碼,面臨的大概就是這樣一種狀況。

實(shí)際上這個(gè)問題的核心就在于 重定位程序使用的地址不能綁定在一個(gè)內(nèi)存區(qū)域上,需要足夠靈活,我們需要在不修改代碼的情況下把程序加載到任意內(nèi)存區(qū)域上運(yùn)行! 想一想該怎么解決這個(gè)問題。

作為程序員肯定和文件路徑打過交道,如果你能明白絕對(duì)路徑與相對(duì)路徑就能解決重定位問題。

絕對(duì)路徑與相對(duì)路徑

想一想絕對(duì)地址有什么問題?這個(gè)問題就好比你在程序中讀取一個(gè)絕對(duì)地址時(shí):

/user/xiaofeng/doc/a.c

如果是你自己的計(jì)算機(jī)那么沒有問題, 但如果這個(gè)程序在其它人的計(jì)算機(jī)上運(yùn)行就不一定了,因?yàn)槠渌说挠?jì)算機(jī)中不一定有這個(gè)路徑 ,這時(shí)該怎么辦呢?聰明的你一定知道,那就不要使用絕對(duì)路徑,而是使用相對(duì)路徑就可了:

./a.c

其中./表示程序運(yùn)行時(shí)所在的路徑,這時(shí)不管這個(gè)程序在哪個(gè)路徑下運(yùn)行都能找到a.c這個(gè)文件,這時(shí)所在的目錄就成為了 基準(zhǔn)

解決重定位這個(gè)問題也是同樣的道理,編程生成可執(zhí)行程序時(shí)不再使用 絕對(duì)內(nèi)存地址 ,而是使用相對(duì)地址,怎么使用相對(duì)地址呢?相對(duì)于誰呢?很簡單, 相對(duì)于該程序被加載到的內(nèi)存起始地址

此時(shí)我們的jmp命令后面不再是一個(gè)絕對(duì)的內(nèi)存地址,而是一個(gè)相對(duì)地址:0,但畢竟向內(nèi)存發(fā)出讀寫指令時(shí)必須使用一個(gè)內(nèi)存地址,那么CPU執(zhí)行jmp 0時(shí)該怎樣將其轉(zhuǎn)為一個(gè)內(nèi)存地址呢?

圖片

很簡單,因?yàn)檫@一段程序被加載到了內(nèi)存起始地址2,因此只需要用相對(duì)地址加上起始地址得到的就是真實(shí)的物理內(nèi)存地址:

物理地址 = 起始地址 + 相對(duì)地址

很簡單吧, 這樣不管這段程序被加載到了哪個(gè)內(nèi)存區(qū)域,只要我們知道起始地址那么總能計(jì)算出真實(shí)的物理內(nèi)存地址 ,重定位問題就可以這樣解決。

實(shí)際上你會(huì)發(fā)現(xiàn), 這個(gè)儲(chǔ)物柜的第二種尋址方式也沒有什么區(qū)別

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10901

    瀏覽量

    212640
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3048

    瀏覽量

    74209
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6882

    瀏覽量

    123584
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是操作系統(tǒng)

    前面所說的,如果沒有操作系統(tǒng),程序員在開發(fā)軟件的時(shí)候就必須陷入復(fù)雜的硬件實(shí)現(xiàn)細(xì)節(jié)。程序員并不想涉足這個(gè)可怕的領(lǐng)域,而且大量的精力花費(fèi)在這個(gè)重復(fù)的、沒有創(chuàng)造性的工作也使得程序員無法集中精力放在更具有創(chuàng)造性
    發(fā)表于 09-13 10:10

    【安富萊】【RTX操作系統(tǒng)教程】第21章 RTX低功耗睡眠模式

    大家講解STM32F103和STM32F407的低功耗方式睡眠模式在RTX操作系統(tǒng)上面的實(shí)現(xiàn)方法(RTX本身支持的tickless低功耗模式在第24章節(jié)講解) 本章教程配套的例子含C
    發(fā)表于 02-04 16:39

    ARM CPU操作系統(tǒng)

    或Eclipe開發(fā)環(huán)境,市場(chǎng)上還有專用的開發(fā)工具,如Tornado、mC/View、mC/KA、CODE/Lab、Metroworks等。 本文就目前國內(nèi)在ARM CPU廣泛采用的三種嵌入式操作系統(tǒng)(mC/OS-II、mCLi
    發(fā)表于 07-04 07:03

    HarmonyOS鴻蒙操作系統(tǒng)什么是“基于微內(nèi)核的全場(chǎng)景分布式操作系統(tǒng)”?

    HarmonyOS鴻蒙操作系統(tǒng)什么是“基于微內(nèi)核的全場(chǎng)景分布式操作系統(tǒng)”?即使作為理工科的人咋一眼看上去似乎也不太懂這是什么,就像區(qū)塊鏈這個(gè)概念剛出來一樣,普通人都是一臉懵B(當(dāng)然現(xiàn)在我對(duì)這個(gè)也是
    發(fā)表于 09-23 17:06

    如何選擇ARM CPU操作系統(tǒng)

    ARM CPU廣泛采用的嵌入式操作系統(tǒng)有哪幾種?使用嵌入式Linux系統(tǒng)有哪幾種途徑?如何選擇ARM CPU
    發(fā)表于 04-26 06:39

    MOS微型操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹一個(gè)基于Intel 80x86 CPU實(shí)模式下的多任務(wù)微型操作系統(tǒng)MOS的設(shè)計(jì)與實(shí)現(xiàn)。 著重闡述了MOS的層次結(jié)構(gòu)、內(nèi)存布局、引導(dǎo)程序設(shè)計(jì)、進(jìn)程管理、上下文切換、信號(hào)量管理、
    發(fā)表于 07-30 10:19 ?10次下載

    什么是VxWorks操作系統(tǒng)

    VxWorksVxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一種實(shí)時(shí)操作系統(tǒng)。VxWorks擁有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及良好的用戶開發(fā)環(huán)境,在實(shí)
    發(fā)表于 06-17 00:33 ?4122次閱讀

    32位cpu、程序、操作系統(tǒng)是什么意思

    32位cpu、程序、操作系統(tǒng)指的是什么 1。32位指CPU的處理能力(如ALU、寄存器的位數(shù))。     若數(shù)據(jù)總線也是32位,就是32位機(jī),若數(shù)據(jù)總線只有16位,則是準(zhǔn)32
    發(fā)表于 06-17 07:48 ?1844次閱讀

    ARM CPU操作系統(tǒng)選擇要點(diǎn)

    本文就目前國內(nèi)在ARM CPU廣泛采用的三種嵌入式操作系統(tǒng)(mC/OS-II、mCLinux和嵌入式Linux)作分析
    發(fā)表于 05-23 10:21 ?737次閱讀

    Linux操作系統(tǒng)實(shí)訓(xùn)項(xiàng)目_虛擬機(jī)設(shè)置基礎(chǔ)_RHEL_5.0_2

    嵌入式Linux操作系統(tǒng)實(shí)訓(xùn)項(xiàng)目,虛擬機(jī)設(shè)置基礎(chǔ)RHEL_5.0
    發(fā)表于 11-04 15:17 ?0次下載

    Data_ONTAP_集群模式操作系統(tǒng)

    Data_ONTAP_集群模式操作系統(tǒng)
    發(fā)表于 12-29 12:01 ?0次下載

    EMWIN實(shí)驗(yàn)STemWin無操作系統(tǒng)移植-T

    電子發(fā)燒友網(wǎng)站提供《EMWIN實(shí)驗(yàn)STemWin無操作系統(tǒng)移植-T.rar》資料免費(fèi)下載
    發(fā)表于 09-15 16:16 ?0次下載
    EMWIN實(shí)驗(yàn)<b class='flag-5'>之</b>STemWin無<b class='flag-5'>操作系統(tǒng)</b>移植-T

    Linux操作系統(tǒng)的射頻測(cè)試模式應(yīng)用指南

    電子發(fā)燒友網(wǎng)站提供《Linux操作系統(tǒng)的射頻測(cè)試模式應(yīng)用指南.pdf》資料免費(fèi)下載
    發(fā)表于 02-19 09:39 ?0次下載
    Linux<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>上</b>的射頻測(cè)試<b class='flag-5'>模式</b>應(yīng)用指南

    國產(chǎn)CPU操作系統(tǒng)被納入政府采購清單:加速換國產(chǎn)OS

    國家發(fā)文要求將國產(chǎn)CPU操作系統(tǒng)納入采購清單,涉及35個(gè)項(xiàng)目,將推動(dòng)國產(chǎn)CPU操作系統(tǒng)產(chǎn)業(yè)發(fā)展。此舉將提高我國信息系統(tǒng)安全性和可靠性,減
    的頭像 發(fā)表于 05-13 17:42 ?2347次閱讀
    國產(chǎn)<b class='flag-5'>CPU</b>和<b class='flag-5'>操作系統(tǒng)</b>被納入政府采購清單:加速換國產(chǎn)OS

    如何在windowsemulate不同操作系統(tǒng)

    一、虛擬化技術(shù)概述 虛擬化技術(shù)允許在單個(gè)物理機(jī)器創(chuàng)建多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)都可以運(yùn)行不同的操作系統(tǒng)。這使得我們可以在Windows系統(tǒng)模擬其他
    的頭像 發(fā)表于 12-05 15:50 ?270次閱讀
    主站蜘蛛池模板: 伊人香蕉在线播放视频免费| 狠狠干女人| 翘臀少妇被扒开屁股日出水爆乳| 国产一区二区精品视频| 国产Av男人的天堂精品良久| YELLOW日本动漫免费动漫| 99视频在线观看视频| 1313久久国产午夜精品理论片 | 免费国产成人| 老头xxx| 麻豆免费高清完整版| 老汉老太bbbbbxxxxx| 老师我好爽再深一点老师好涨| 精品无码久久久久久动漫| 国内极度色诱视频网站| 黑人寄宿羽月希产后奶水| 国产最新精品亚洲2021不卡| 国产又粗又黄又爽的大片 | 邪恶肉肉全彩色无遮琉璃神社| 忘忧草在线社区WWW日本直播| 色欲人妻AAAAAAA无码| 少妇性饥渴BBBBBBBBB| 欧美video巨大粗暴18| 美女白虎穴| 欧美精品成人久久网站| 青青久久国产| 忘忧草下载| 亚洲伦理精品久久| 在线播放成人无码日| 97蜜桃网123.com| 爆操大胸美女| 国产不卡免费| 蝴蝶中文娱乐| 免费看到湿的小黄文软件APP| 欧美丰满熟妇BBB久久久| 日本丝袜护士| 欧美美女一区二区三区| 日本漂亮妈妈7观整有限中| 台湾18成人影院| 日韩精品特黄毛片免费看| 帅哥操美女|