国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng)的制作方法

      文檔序號:8942775閱讀:177來源:國知局
      一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,特別是涉及操作系統(tǒng)進(jìn)程的內(nèi)存管理技術(shù)領(lǐng)域,具體為一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]Linux操作系統(tǒng)用戶進(jìn)程的內(nèi)存管理默認(rèn)使用的是ptmalloc機(jī)制。Linux操作系統(tǒng)的ptmalloc內(nèi)存管理機(jī)制有以下特點(diǎn)=Linux系統(tǒng)的用戶進(jìn)程從進(jìn)程空間的兩個(gè)區(qū)域申請動(dòng)態(tài)內(nèi)存:brk區(qū)域和_ap區(qū)域,如圖1所示。當(dāng)用戶申請的內(nèi)存塊大小小于_ap分配閥值(默認(rèn)值為128K)時(shí),操作系統(tǒng)從brk區(qū)域給進(jìn)程分配內(nèi)存。從brk分配的內(nèi)存在釋放時(shí)不會(huì)立刻歸還操作系統(tǒng)。當(dāng)用戶申請的內(nèi)存塊大小大于或者等于_ap分配閥值(默認(rèn)值為128K)時(shí),操作系統(tǒng)從_ap區(qū)域給進(jìn)程分配內(nèi)存。從—ap區(qū)域分配的內(nèi)存效率比較低,因此適合在申請大塊內(nèi)存時(shí)使用。從-ap區(qū)域分配的內(nèi)存在釋放時(shí)立刻歸還給操作系統(tǒng)。
      [0003]ptmalloc內(nèi)存管理機(jī)制存在以下問題:假設(shè)用戶按順序(內(nèi)存塊A_>內(nèi)存塊B_>內(nèi)存塊C)申請三塊內(nèi)存塊,內(nèi)存塊大小都小于mmap分配閥值(默認(rèn)值為128K)。進(jìn)程在釋放內(nèi)存時(shí)如果只釋放了內(nèi)存塊A和內(nèi)存塊B,內(nèi)存塊C沒有釋放。則存在這么一個(gè)問題:所釋放的內(nèi)存塊A和內(nèi)存塊B只是把內(nèi)存塊A和內(nèi)存塊B放到了進(jìn)程的可用內(nèi)存當(dāng)中,并不會(huì)歸還給操作系統(tǒng),這就導(dǎo)致了其他的進(jìn)程無法使用這兩塊內(nèi)存。出現(xiàn)應(yīng)用進(jìn)程堆內(nèi)存釋放時(shí)無法歸還給操作系統(tǒng)的原因主要是頻繁申請和釋放大小小于_ap分配閥值的內(nèi)存塊,也就是操作系統(tǒng)從brk區(qū)域分配了內(nèi)存塊。在一些需要反復(fù)申請、釋放大量的內(nèi)存塊的業(yè)務(wù)經(jīng)常會(huì)導(dǎo)致操作系統(tǒng)因?yàn)閮?nèi)存耗盡而殺死某些進(jìn)程,造成業(yè)務(wù)中斷。

      【發(fā)明內(nèi)容】

      [0004]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中在一些需要反復(fù)申請、釋放大量的內(nèi)存塊的業(yè)務(wù)經(jīng)常會(huì)導(dǎo)致操作系統(tǒng)因?yàn)閮?nèi)存耗盡而殺死某些進(jìn)程,造成業(yè)務(wù)中斷的問題。
      [0005]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種動(dòng)態(tài)內(nèi)存控制方法,用于對Linux操作系統(tǒng)用戶進(jìn)程的內(nèi)存管理控制過程中,所述動(dòng)態(tài)內(nèi)存控制方法包括:從進(jìn)程空間的內(nèi)存映射區(qū)域?yàn)橛脩暨M(jìn)程預(yù)先分配至少一個(gè)不小于所述內(nèi)存映射區(qū)域分配閾值的第一內(nèi)存塊;將所述第一內(nèi)存塊分割成大小相等的至少兩個(gè)第二內(nèi)存塊;在接收到不大于所述第二內(nèi)存塊的內(nèi)存的進(jìn)程內(nèi)存申請時(shí),將所述第二內(nèi)存塊的內(nèi)存分配至所述進(jìn)程內(nèi)存申請對應(yīng)的進(jìn)程;當(dāng)所述進(jìn)程釋放內(nèi)存時(shí),將所述進(jìn)程占用的所述第二內(nèi)存塊的內(nèi)存歸還至所述第二內(nèi)存塊原來所屬的第一內(nèi)存塊中;在所述第一內(nèi)存塊中的所有第二內(nèi)存塊均被釋放后,將所述第一內(nèi)存塊的內(nèi)存歸還至Linux操作系統(tǒng)。
      [0006]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),各個(gè)所述第一內(nèi)存塊的大小不相等。
      [0007]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),各個(gè)所述第一內(nèi)存塊的大小相等。
      [0008]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),每一個(gè)所述第一內(nèi)存塊中的第二內(nèi)存塊的大小與其他所述第一內(nèi)存塊中的第二內(nèi)存塊的大小均不相等。
      [0009]優(yōu)選地,所述第二內(nèi)存塊的大小為4字節(jié)、8字節(jié)、16字節(jié)、32字節(jié)、64字節(jié)或128字Tl O
      [0010]為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種動(dòng)態(tài)內(nèi)存控制系統(tǒng),用于對Linux操作系統(tǒng)用戶進(jìn)程的內(nèi)存管理控制過程中,所述動(dòng)態(tài)內(nèi)存控制系統(tǒng)包括:第一內(nèi)存塊分配模塊,用于從進(jìn)程空間的內(nèi)存映射區(qū)域?yàn)橛脩暨M(jìn)程預(yù)先分配至少一個(gè)不小于所述內(nèi)存映射區(qū)域分配閾值的第一內(nèi)存塊;第二內(nèi)存塊分配模塊,與所述第一內(nèi)存塊分配模塊相連,用于將所述第一內(nèi)存塊分割成大小相等的至少兩個(gè)第二內(nèi)存塊;進(jìn)程內(nèi)存分配模塊,與所述第二內(nèi)存塊分配模塊相連,用于在接收到不大于所述第二內(nèi)存塊的內(nèi)存的進(jìn)程內(nèi)存申請時(shí),將所述第二內(nèi)存塊的內(nèi)存分配至所述進(jìn)程內(nèi)存申請對應(yīng)的進(jìn)程;內(nèi)存釋放控制模塊,與所述第二內(nèi)存塊分配模塊和所述進(jìn)程內(nèi)存分配模塊相連,用于當(dāng)所述進(jìn)程釋放內(nèi)存時(shí),將所述進(jìn)程占用的所述第二內(nèi)存塊的內(nèi)存歸還至所述第二內(nèi)存塊原來所屬的第一內(nèi)存塊中;內(nèi)存塊歸還模塊,與所述內(nèi)存釋放控制模塊相連,用于在所述第一內(nèi)存塊中的所有第二內(nèi)存塊均被釋放后,將所述第一內(nèi)存塊的內(nèi)存歸還至Linux操作系統(tǒng)。
      [0011]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),所述第一內(nèi)存塊分配模塊還用于使得各個(gè)所述第一內(nèi)存塊的大小不相等。
      [0012]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),所述第一內(nèi)存塊分配模塊還用于使得各個(gè)所述第一內(nèi)存塊的大小相等。
      [0013]優(yōu)選地,若所述第一內(nèi)存塊的數(shù)量大于等于兩個(gè),所述第二內(nèi)存塊分配模塊還用于控制每一個(gè)所述第一內(nèi)存塊中的第二內(nèi)存塊的大小與其他所述第一內(nèi)存塊中的第二內(nèi)存塊的大小均不相等。
      [0014]優(yōu)選地,所述第二內(nèi)存塊分配模塊還用于控制所述第二內(nèi)存塊的大小為4字節(jié)、8字節(jié)、16字節(jié)、32字節(jié)、64字節(jié)或128字節(jié)。
      [0015]如上所述,本發(fā)明的一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng),具有以下有益效果:
      [0016]本發(fā)明從進(jìn)程空間的內(nèi)存映射區(qū)域?yàn)橛脩暨M(jìn)程預(yù)先分配至少一個(gè)不小于所述內(nèi)存映射區(qū)域分配閾值的第一內(nèi)存塊并將所述第一內(nèi)存塊分割成大小相等的至少兩個(gè)第二內(nèi)存塊,在接收到不大于所述第二內(nèi)存塊的內(nèi)存的進(jìn)程內(nèi)存申請時(shí),將所述第二內(nèi)存塊的內(nèi)存分配至所述進(jìn)程內(nèi)存申請對應(yīng)的進(jìn)程,當(dāng)所述進(jìn)程釋放內(nèi)存時(shí),將所述進(jìn)程占用的所述第二內(nèi)存塊的內(nèi)存歸還至所述第二內(nèi)存塊原來所屬的第一內(nèi)存塊中,并在所述第一內(nèi)存塊中的所有第二內(nèi)存塊均被釋放后,將所述第一內(nèi)存塊的內(nèi)存歸還至Linux操作系統(tǒng),所以本發(fā)明可以有效解決現(xiàn)有技術(shù)中在一些需要反復(fù)申請、釋放大量的內(nèi)存塊的業(yè)務(wù)經(jīng)常會(huì)導(dǎo)致操作系統(tǒng)因?yàn)閮?nèi)存耗盡而殺死某些進(jìn)程,造成業(yè)務(wù)中斷的問題。本發(fā)明簡單高效,具有較強(qiáng)的通用性和實(shí)用性。
      【附圖說明】
      [0017]圖1顯示為現(xiàn)有技術(shù)中Linux系統(tǒng)的用戶進(jìn)程從進(jìn)程空間的brk區(qū)域和mmap區(qū)域申請動(dòng)態(tài)內(nèi)存的示意圖。
      [0018]圖2顯示為本發(fā)明的動(dòng)態(tài)內(nèi)存控制方法的流程示意圖。
      [0019]圖3顯示為本發(fā)明的動(dòng)態(tài)內(nèi)存控制方法中分配內(nèi)存的示意圖。
      [0020]圖4顯示為本發(fā)明的動(dòng)態(tài)內(nèi)存控制方法中釋放內(nèi)存的示意圖。
      [0021]圖5顯示為本發(fā)明的動(dòng)態(tài)內(nèi)存控制系統(tǒng)的結(jié)構(gòu)示意圖。
      [0022]元件標(biāo)號說明
      [0023]I動(dòng)態(tài)內(nèi)存控制系統(tǒng)
      [0024]11 第一內(nèi)存塊分配模塊
      [0025]12 第二內(nèi)存塊分配模塊
      [0026]13 進(jìn)程內(nèi)存分配模塊
      [0027]14內(nèi)存釋放控制模塊
      [0028]15 內(nèi)存塊歸還模塊
      [0029]511?515步驟
      【具體實(shí)施方式】
      [0030]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
      [0031]本實(shí)施例的目的在于提供一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中在一些需要反復(fù)申請、釋放大量的內(nèi)存塊的業(yè)務(wù)經(jīng)常會(huì)導(dǎo)致操作系統(tǒng)因?yàn)閮?nèi)存耗盡而殺死某些進(jìn)程,造成業(yè)務(wù)中斷的問題。以下將詳細(xì)闡述本實(shí)施例的一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng)的原理及實(shí)施方式,使本領(lǐng)域技術(shù)人員不需要?jiǎng)?chuàng)造性勞動(dòng)即可理解本實(shí)施例的一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng)。
      [0032]如圖2至圖5所示,本實(shí)施例提供一種動(dòng)態(tài)內(nèi)存控制方法及系統(tǒng),通過從進(jìn)程空間的-ap區(qū)域(內(nèi)存映射區(qū)域)分配大塊內(nèi)存,然后分割成各種不同大小的小塊內(nèi)存以供進(jìn)程本身使用,釋放時(shí)如果小塊內(nèi)存所在的大塊內(nèi)存上所有的小塊內(nèi)存都已經(jīng)釋放,則立即將整塊大塊內(nèi)存歸還給操作系統(tǒng)。
      [0033]具體地,如圖2所示,本實(shí)施例提供一種動(dòng)態(tài)內(nèi)存控制方法,用于對Linux操作系統(tǒng)用戶進(jìn)程的內(nèi)存管理控制過程中,所述動(dòng)態(tài)內(nèi)存控制方法包括以下步驟。
      [0034]步驟S11,如圖3所示,從進(jìn)程空間的內(nèi)存映射區(qū)域?yàn)橛脩暨M(jìn)程預(yù)先分配至少一個(gè)不小于所述內(nèi)存映射區(qū)域分配閾值的第一內(nèi)存
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1