在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何解決內(nèi)存碎片與內(nèi)存交換效率慢的問(wèn)題

麥辣雞腿堡 ? 來(lái)源:程序猿阿星 ? 作者:程序猿阿星 ? 2023-10-09 16:57 ? 次閱讀

內(nèi)存分頁(yè)

分段的好處是能產(chǎn)生連續(xù)的內(nèi)存空間,但是會(huì)出現(xiàn)大量?jī)?nèi)存碎片與內(nèi)存交換效率低的問(wèn)題

先思考一下怎么解決這兩個(gè)問(wèn)題,內(nèi)存碎片是由多個(gè)不連續(xù)的小物理內(nèi)存空間造成,如果把這些不連續(xù)的小物理內(nèi)存空間組合起來(lái),是不是解決了這個(gè)問(wèn)題?同樣的,內(nèi)存交換的時(shí)候我們保證交換的數(shù)據(jù)小,是不是能提高內(nèi)存交換的效率?

這個(gè)辦法就是內(nèi)存分頁(yè),分頁(yè)是把整個(gè)虛擬與物理空間切成一段段固定尺寸的大小,這樣一個(gè)連續(xù)并且尺寸固定的空間,我們叫頁(yè),在 Linux 下,每一頁(yè)的大小為4KB。(虛擬空間是指存儲(chǔ)一套虛擬地址的空間)

虛擬地址與物理地址是通過(guò)頁(yè)表來(lái)映射,虛擬空間內(nèi)的虛擬地址一定是連續(xù)的,物理地址不一定,但可以通過(guò)連續(xù)的虛擬地址把多個(gè)不連續(xù)的物理內(nèi)存組合使用。

圖片

而當(dāng)進(jìn)程訪問(wèn)的虛擬地址在頁(yè)表中查不到時(shí),系統(tǒng)會(huì)產(chǎn)生一個(gè)缺頁(yè)異常,進(jìn)入系統(tǒng)內(nèi)核空間分配物理內(nèi)存、更新進(jìn)程頁(yè)表,最后再返回用戶空間,恢復(fù)進(jìn)程的運(yùn)行。

分頁(yè)方式是如何解決內(nèi)存碎片與內(nèi)存交換效率慢的問(wèn)題呢??jī)?nèi)存碎片的解決:

因?yàn)槭褂脙?nèi)存的單位變成固定大小的頁(yè),所以每個(gè)程序的虛擬空間維護(hù)的也是連續(xù)的頁(yè)(虛擬地址),通過(guò)頁(yè)表再映射到物理內(nèi)存頁(yè),雖然映射的物理內(nèi)存頁(yè)不連續(xù),但是虛擬空間是連續(xù)的,可以讓它們組合起來(lái)使用,但這也只能解決外部?jī)?nèi)存碎片問(wèn)題,沒(méi)有解決內(nèi)部?jī)?nèi)碎片問(wèn)題,因?yàn)槊宽?yè)都有固定大小,可能某一頁(yè)只使用了部分,依然會(huì)造成一些浪費(fèi)。

內(nèi)存交換效率慢的解決:

之前說(shuō)過(guò),減少交換數(shù)據(jù)的大小,可以提高內(nèi)存交換效率,分頁(yè)方式是這樣解決的,如果內(nèi)存空間不夠時(shí),操作系統(tǒng)會(huì)把其他正在運(yùn)行的進(jìn)程中的「最近沒(méi)被使用」的內(nèi)存頁(yè)釋放掉,也就是加載到硬盤(pán),稱(chēng)為換出,一旦需要的時(shí)候再加載進(jìn)來(lái),稱(chēng)為換入。所以一次性寫(xiě)入硬盤(pán)的也只有一個(gè)頁(yè)或幾個(gè)頁(yè),內(nèi)存的交換效率自然就提升了。

分頁(yè)方式使加載程序的時(shí)候,不再需要一次性都把程序加載到物理內(nèi)存中。完全可以在進(jìn)行虛擬內(nèi)存和物理內(nèi)存的頁(yè)之間的映射之后,并不真的把頁(yè)加載到物理內(nèi)存里,而是只有在程序運(yùn)行中,需要用到對(duì)應(yīng)虛擬內(nèi)存頁(yè)里面的指令和數(shù)據(jù)時(shí),再加載到物理內(nèi)存里面去(用大白話說(shuō),當(dāng)你需要用到的時(shí)候才會(huì)去使用對(duì)應(yīng)的物理內(nèi)存)。

在內(nèi)存分頁(yè)方式下,虛擬地址和物理地址是如何映射的?

在分頁(yè)機(jī)制下,每個(gè)進(jìn)程都會(huì)分配一個(gè)頁(yè)表,虛擬地址會(huì)分為兩部分,頁(yè)號(hào)和頁(yè)內(nèi)偏移量,頁(yè)號(hào)作為頁(yè)表的索引,頁(yè)表包含物理頁(yè)每頁(yè)所在物理內(nèi)存的基地址,頁(yè)內(nèi)偏移量+物理內(nèi)存基地址就組成了物理內(nèi)存地址,如下圖所示

圖片

就是下面這幾步

頁(yè)號(hào)找到頁(yè)表中的頁(yè)項(xiàng)

獲取頁(yè)項(xiàng)的物理頁(yè)號(hào)基地址

偏移量+物理頁(yè)號(hào)基地址計(jì)算出物理內(nèi)存地址

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

    關(guān)注

    8

    文章

    7233

    瀏覽量

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

    關(guān)注

    8

    文章

    3102

    瀏覽量

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

    關(guān)注

    37

    文章

    7025

    瀏覽量

    124690
  • 地址
    +關(guān)注

    關(guān)注

    1

    文章

    32

    瀏覽量

    10942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言malloc申請(qǐng)內(nèi)存時(shí)的碎片問(wèn)題

    解決問(wèn)題:malloc在申請(qǐng)內(nèi)存的時(shí)候,內(nèi)存碎片問(wèn)題會(huì)導(dǎo)致原本內(nèi)存大小足夠,卻申請(qǐng)大內(nèi)存失敗。
    發(fā)表于 08-06 16:58 ?1849次閱讀
    C語(yǔ)言malloc申請(qǐng)<b class='flag-5'>內(nèi)存</b>時(shí)的<b class='flag-5'>碎片</b>問(wèn)題

    Linux內(nèi)核內(nèi)存規(guī)整總結(jié)

    1.前言 伙伴系統(tǒng)作為內(nèi)核最基礎(chǔ)的物理頁(yè)內(nèi)存分配器,具有高效、實(shí)現(xiàn)邏輯簡(jiǎn)介等優(yōu)點(diǎn),其原理頁(yè)也盡可能降低內(nèi)存外部碎片產(chǎn)生,但依然無(wú)法杜絕碎片問(wèn)題。外部
    的頭像 發(fā)表于 11-11 11:17 ?1547次閱讀
    Linux內(nèi)核<b class='flag-5'>內(nèi)存</b>規(guī)整總結(jié)

    請(qǐng)問(wèn)mymalloc會(huì)產(chǎn)生內(nèi)存碎片嗎?

    malloc申請(qǐng)內(nèi)存在釋放后,會(huì)產(chǎn)生內(nèi)存碎片,所以UCOSIII內(nèi)有專(zhuān)門(mén)的內(nèi)存申請(qǐng)。原子哥視頻(UCOSIII視頻19講)最后的時(shí)候說(shuō)可以用原子哥自己的mamalloc函數(shù)來(lái)申請(qǐng)
    發(fā)表于 10-16 04:35

    如何避免內(nèi)存碎片的產(chǎn)生

    考試題型:?jiǎn)芜x 8 道,不定項(xiàng) 2 道,編程 2 道,問(wèn)答 1 道考點(diǎn):進(jìn)程間通訊的方式,linux的基本指令(考了grep,chmod),根據(jù)代碼給出運(yùn)行的結(jié)果問(wèn)答題:簡(jiǎn)述內(nèi)存碎片的定義,如何避免
    發(fā)表于 12-21 07:50

    交換機(jī)內(nèi)存

    交換機(jī)內(nèi)存         
    發(fā)表于 01-08 11:16 ?2845次閱讀

    虛擬內(nèi)存是什么_虛擬內(nèi)存有什么用

    虛擬內(nèi)存是計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)。它使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間),而實(shí)際上,它通常是被分隔成多個(gè)物理內(nèi)存
    發(fā)表于 11-01 10:03 ?9830次閱讀
    虛擬<b class='flag-5'>內(nèi)存</b>是什么_虛擬<b class='flag-5'>內(nèi)存</b>有什么用

    基于線段樹(shù)的內(nèi)存管理方法

    現(xiàn)有的內(nèi)存管理的工作多集中在內(nèi)存分配的效率上,實(shí)時(shí)性較好,但易產(chǎn)生內(nèi)存碎片。為此,提出基于線段樹(shù)的高效內(nèi)
    發(fā)表于 12-27 14:06 ?2次下載
    基于線段樹(shù)的<b class='flag-5'>內(nèi)存</b>管理方法

    如何避免Linux的物理內(nèi)存碎片

    Linux buddyy系統(tǒng)是linux kernel比較穩(wěn)定的一個(gè)模塊,但是并不是說(shuō)它沒(méi)有缺陷,Linux內(nèi)存管理系統(tǒng)自誕生之日,就一直存在物理內(nèi)存碎片化的問(wèn)題:在系統(tǒng)啟動(dòng)并且運(yùn)行很長(zhǎng)一段時(shí)間后
    的頭像 發(fā)表于 05-01 16:43 ?5625次閱讀
    如何避免Linux的物理<b class='flag-5'>內(nèi)存</b><b class='flag-5'>碎片</b>化

    你知道linux kernel內(nèi)存碎片防治技術(shù)?

    Linux kernel組織管理物理內(nèi)存的方式是buddy system(伙伴系統(tǒng)),而物理內(nèi)存碎片正式buddy system的弱點(diǎn)之一,為了預(yù)防以及解決碎片問(wèn)題,kernel采取了
    發(fā)表于 05-10 10:59 ?1036次閱讀

    OPPO內(nèi)存碎片化引擎的作業(yè)

    OPPO宣傳的內(nèi)存碎片化引擎是個(gè)什么東西?它有何作用?針對(duì)上述問(wèn)題,ColorOS官方微博特地發(fā)文科普,我們一起來(lái)看看。
    的頭像 發(fā)表于 03-15 16:20 ?3682次閱讀

    探索內(nèi)存交換的新出路

    內(nèi)存交換技術(shù)是當(dāng)內(nèi)存緊缺的時(shí)候,將內(nèi)存中的頁(yè)面交換交換設(shè)備中(如zRAM,SSD等)。隨著SS
    的頭像 發(fā)表于 07-26 09:11 ?913次閱讀
    探索<b class='flag-5'>內(nèi)存</b><b class='flag-5'>交換</b>的新出路

    FreeRTOS內(nèi)存碎片是怎么來(lái)的

    內(nèi)存碎片 在看 FreeRTOS的內(nèi)存分配方法之前我們先來(lái)看一下什么叫做內(nèi)存碎片,看名字就知道是小塊的、
    的頭像 發(fā)表于 07-30 10:29 ?1073次閱讀
    FreeRTOS<b class='flag-5'>內(nèi)存</b><b class='flag-5'>碎片</b>是怎么來(lái)的

    什么是內(nèi)存碎片Linux

    什么是內(nèi)存碎片? 內(nèi)存碎片在Linux很早的時(shí)候就已經(jīng)出現(xiàn)了,了解早期內(nèi)存碎片產(chǎn)生的歷史,有利于
    的頭像 發(fā)表于 10-08 10:12 ?868次閱讀
    什么是<b class='flag-5'>內(nèi)存</b><b class='flag-5'>碎片</b>Linux

    內(nèi)存分段是如何產(chǎn)生內(nèi)存碎片

    內(nèi)存分段 程序包含若干個(gè)邏輯分段,如可由代碼段、數(shù)據(jù)段、棧段、堆段組成,每個(gè)分段都有不同的屬性,所以內(nèi)存以分段的形式把這些段分離出來(lái)進(jìn)行管理 在內(nèi)存分段方式下,虛擬地址和物理地址是如何映射的? 分段
    的頭像 發(fā)表于 10-09 16:28 ?1597次閱讀
    <b class='flag-5'>內(nèi)存</b>分段是如何產(chǎn)生<b class='flag-5'>內(nèi)存</b><b class='flag-5'>碎片</b>的

    如何使用反射內(nèi)存交換機(jī)

    反射內(nèi)存交換機(jī)是一種用于實(shí)現(xiàn)高速數(shù)據(jù)共享和通信的關(guān)鍵設(shè)備,以下是關(guān)于如何使用反射內(nèi)存交換機(jī)的詳細(xì)介紹:一、前期準(zhǔn)備?在開(kāi)始使用反射內(nèi)存
    發(fā)表于 09-14 09:23 ?0次下載
    主站蜘蛛池模板: 97人人爱| 亚洲第一黄色网址 | 伊人精品成人久久综合欧美 | 看黄免费在线 | 草草影院www色极品欧美 | 激情欧美一区二区三区中文字幕 | 免费看一级特黄a大片 | 天天干夜夜想 | 午夜在线观看免费视频 | 伊人网在线免费视频 | 日本黄色激情视频 | 欧美黑人xxxxxxxxxx | 手机在线看片福利盒子 | 久操视频在线播放 | 精品亚洲综合在线第一区 | 久久网免费视频 | 国产美女久久久 | 天天看人体 | 成人免费一区二区三区 | 亚洲精品视频免费 | 中文字幕一区二区三区免费视频 | 国产精品久久久久久影院 | 在线免费看 | 天天躁狠狠躁狠狠躁夜夜躁 | 9984四虎永久免费网站 | 国产三级a三级三级野外 | 美女张开大腿让男人捅 | 美女黄网站 | 天天爽天天狼久久久综合 | 色天使在线播放 | 日本免费色 | 影音先锋 色天使 | 成人综合在线视频 | 永久观看 | 性a爱片免费视频性 | 天天干天天操天天爽 | 国产美女一区二区三区 | 免费看大尺度视频在线观看 | dyav午夜片| 浓厚な接吻と肉体の交在线观看 | 五月婷婷丁香在线观看 |