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

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

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

linux內(nèi)核主流的內(nèi)存壓縮技術(shù)介紹

454398 ? 來源:蝸窩科技 ? 作者:OPPO內(nèi)核團(tuán)隊(duì) ? 2020-09-18 15:40 ? 次閱讀

1.技術(shù)背景

說到壓縮這個(gè)詞,我們并不陌生,應(yīng)該都能想到是降低占用空間,使同樣的空間可以存放更多的東西,類似于我們平時(shí)常用的文件壓縮,內(nèi)存壓縮同樣也是為了節(jié)省內(nèi)存。

盡管當(dāng)前android手機(jī)6GB,8GB甚至12GB的機(jī)器都較為常見了,但內(nèi)存無論多大,總是會(huì)有不夠用的時(shí)候。當(dāng)系統(tǒng)內(nèi)存緊張的時(shí)候,會(huì)將文件頁(yè)丟棄或回寫回磁盤(如果是臟頁(yè)),還可能會(huì)觸發(fā)LMK殺進(jìn)程進(jìn)行內(nèi)存回收。這些被回收的內(nèi)存如果再次使用都需要重新從磁盤讀取,而這個(gè)過程涉及到較多的IO操作。就目前的技術(shù)而言,IO的速度遠(yuǎn)遠(yuǎn)慢于這RAM操作速度。因此,如果頻繁地做IO操作,不僅影響flash使用壽命,還嚴(yán)重影響系統(tǒng)性能。內(nèi)存壓縮是一種讓IO過程平滑過渡的做法, 即盡量減少由于內(nèi)存緊張導(dǎo)致的IO,提升性能。

2.主流內(nèi)存壓縮技術(shù)

目前linux內(nèi)核主流的內(nèi)存壓縮技術(shù)主要有3種:zSwap, zRAM, zCache。

2.1zSwap

zSwap是在memory與flash之間的一層“cache”,當(dāng)內(nèi)存需要swap出去磁盤的時(shí)候,先通過壓縮放到zSwap中去,zSwap空間按需增長(zhǎng)。達(dá)到一定程度后則會(huì)按照LRU的順序(前提是使用的內(nèi)存分配方法需要支持LRU)將就最舊的page解壓寫入磁盤swap device,之后將當(dāng)前的page壓縮寫入zSwap。

zswap本身存在一些缺陷或問題:

1) 如果開啟當(dāng)zswap滿交換出backing store的功能, 由于需要將zswap里的內(nèi)存按LRU順序解壓再swap out, 這就要求內(nèi)存分配器支持LRU功能。

2) 如果不開啟當(dāng)zswap滿交換出backing store的功能, 和zRam是類似的。

2.2zRram

zRram即壓縮的內(nèi)存, 使用內(nèi)存模擬block device的做法。實(shí)際不會(huì)寫到塊設(shè)備中去,只會(huì)壓縮后寫到模擬的塊設(shè)備中,其實(shí)也就是還是在RAM中,只是通過壓縮了。由于壓縮和解壓縮的速度遠(yuǎn)比讀寫IO好,因此在移動(dòng)終端設(shè)備廣泛被應(yīng)用。zRam是基于RAM的block device, 一般swap priority會(huì)比較高。只有當(dāng)其滿,系統(tǒng)才會(huì)考慮其他的swap devices。當(dāng)然這個(gè)優(yōu)先級(jí)用戶可以配置。

zRram本身存在一些缺陷或問題:

1) zRam大小是可靈活配置的, 那是不是配置越大越好呢? 如果不是,配置多大是最合適的呢?

2) 使用zRam可能會(huì)在低內(nèi)存場(chǎng)景由于頻繁的內(nèi)存壓縮導(dǎo)致kswapd進(jìn)程占CPU高, 怎樣改善?

3) 增大了zRam配置,對(duì)系統(tǒng)內(nèi)存碎片是否有影響?

要利用好zRam功能, 并不是簡(jiǎn)單地配置了就OK了, 還需要對(duì)各種場(chǎng)景和問題都做好處理, 才能發(fā)揮最優(yōu)的效果。

2.3zCache

zCache是oracle提出的一種實(shí)現(xiàn)文件頁(yè)壓縮技術(shù),也是memory與block dev之間的一層“cache”,與zswap比較接近,但zcache目前壓縮的是文件頁(yè),而zSwap和zRAM壓縮是匿名頁(yè)。

zcache本身存在一些缺陷或問題:

1) 有些文件頁(yè)可能本身是壓縮的內(nèi)容, 這時(shí)可能無法再進(jìn)行壓縮了

2) zCache目前無法使用zsmalloc, 如果使用zbud,壓縮率較低

3) 使用的zbud/z3fold分配的內(nèi)存是不可移動(dòng)的, 需要關(guān)注內(nèi)存碎片問題

3.內(nèi)存壓縮主流的內(nèi)存分配器

3.2.1Zsmalloc

zsmalloc是為ZRAM設(shè)計(jì)的一種內(nèi)存分配器。內(nèi)核已經(jīng)有slub了, 為什么還需要zsmalloc內(nèi)存分配器?這是由內(nèi)存壓縮的場(chǎng)景和特點(diǎn)決定的。zsmalloc內(nèi)存分配器期望在低內(nèi)存的場(chǎng)景也能很好地工作,事實(shí)上,當(dāng)需要壓縮內(nèi)存進(jìn)行zsmalloc內(nèi)存分配時(shí),內(nèi)存一般都比較緊張且內(nèi)存碎片都比較嚴(yán)重了。如果使用slub分配, 很可能由于高階內(nèi)存分配不到而失敗。另外,slub也可能導(dǎo)致內(nèi)存碎片浪費(fèi)比較嚴(yán)重,最壞情況下,當(dāng)對(duì)象大小略大于PAGE_SIZE/2時(shí),每個(gè)內(nèi)存頁(yè)接近一般的內(nèi)存將被浪費(fèi)。

Android手機(jī)實(shí)測(cè)發(fā)現(xiàn),anon pages的平均壓縮比大約在1:3左右,所以compressed anon page size很多在1.2K左右。如果是Slub,為了分配大量1.2K的內(nèi)存,可能內(nèi)存浪費(fèi)嚴(yán)重。zsmalloc分配器嘗試將多個(gè)相同大小的對(duì)象存放在組合頁(yè)(稱為zspage)中,這個(gè)組合頁(yè)不要求物理連續(xù),從而提高內(nèi)存的使用率。

需要注意的是, 當(dāng)前zsmalloc不支持LRU功能, 舊版本內(nèi)核分配的不可移動(dòng)的頁(yè), 對(duì)內(nèi)存碎片影響嚴(yán)重, 但最新版本內(nèi)核已經(jīng)是支持分配可移動(dòng)類型內(nèi)存了。

3.2.2 Zbud

zbud是一個(gè)專門為存儲(chǔ)壓縮page而設(shè)計(jì)的內(nèi)存分配器。用于將2個(gè)objects存到1個(gè)單獨(dú)的page中。zbud是可以支持LRU的, 但分配的內(nèi)存是不可移動(dòng)的。

3.2.3 Z3fold

z3fold是一個(gè)較新的內(nèi)存分配器, 與zbud不同的是, 將3個(gè)objects存到1個(gè)單獨(dú)的page中,也就是zbud內(nèi)存利用率極限是1:2, z3fold極限是1:3。同樣z3fold是可以支持LRU的, 但分配的內(nèi)存是不可移動(dòng)的。

4.內(nèi)存壓縮技術(shù)與內(nèi)存分配器組合對(duì)比分析

結(jié)合上面zSwap / zRam /zCache的介紹, 與zsmalloc/zbud/z3fold分別怎樣組合最合適呢?

下面總結(jié)了一下, 具體原因可以看上面介紹的時(shí)候各類型的特點(diǎn)。

5.zRAM技術(shù)原理

本文重點(diǎn)介紹zRam內(nèi)存壓縮技術(shù),它是目前移動(dòng)終端廣泛使用的內(nèi)存壓縮技術(shù)。

5.1軟件框架

下圖展示了內(nèi)存管理大體的框架, 內(nèi)存壓縮技術(shù)處于內(nèi)存回收memory reclaim部分中。

linux內(nèi)核主流的內(nèi)存壓縮技術(shù)介紹

再具體到zRam, 它的軟件架構(gòu)可以分為3部分, 分別是數(shù)據(jù)流操作,內(nèi)存壓縮算法 ,zram驅(qū)動(dòng)。

數(shù)據(jù)流操作:提供串行或者并行的壓縮和解壓操作。

內(nèi)存壓縮算法:每種壓縮算法提供壓縮和解壓縮的具體實(shí)現(xiàn)回調(diào)接口供數(shù)據(jù)操作調(diào)用。

Zram驅(qū)動(dòng):創(chuàng)建一個(gè)基于ram的塊設(shè)備, 并提供IO請(qǐng)求處理接口。

5.2實(shí)現(xiàn)原理

Zram內(nèi)存壓縮技術(shù)本質(zhì)上就是以時(shí)間換空間。通過CPU壓縮、解壓縮的開銷換取更大的可用內(nèi)存空間。

我們主要描述清楚下面這2個(gè)問題:

1) 什么時(shí)候會(huì)進(jìn)行內(nèi)存壓縮?

2) 進(jìn)行內(nèi)存壓縮/解壓縮的流程是怎樣的?

進(jìn)行內(nèi)存壓縮的時(shí)機(jī):

1) Kswapd場(chǎng)景:kswapd是內(nèi)核內(nèi)存回收線程, 當(dāng)內(nèi)存watermark低于low水線時(shí)會(huì)被喚醒工作, 其到內(nèi)存watermark不小于high水線。

2) Direct reclaim場(chǎng)景:內(nèi)存分配過程進(jìn)入slowpath, 進(jìn)行直接行內(nèi)存回收。

下面是基于4.4內(nèi)核理出的內(nèi)存壓縮、解壓縮流程。

內(nèi)存回收過程路徑進(jìn)行內(nèi)存壓縮。會(huì)將非活躍鏈表的頁(yè)進(jìn)行shrink, 如果是匿名頁(yè)會(huì)進(jìn)行pageout, 由此進(jìn)行內(nèi)存壓縮存放到ZRAM中, 調(diào)用路徑如下:

在匿名頁(yè)換出到swap設(shè)備后, 訪問頁(yè)時(shí), 產(chǎn)生頁(yè)訪問錯(cuò)誤, 當(dāng)發(fā)現(xiàn)“頁(yè)表項(xiàng)不為空, 但頁(yè)不在內(nèi)存中”, 該頁(yè)就是已換到swap區(qū)中,由此會(huì)開始將該頁(yè)從swap區(qū)中重新讀取, 如果是ZRAM, 則是解壓縮的過程。調(diào)用路徑如下:

5.3內(nèi)存壓縮算法

目前比較主流的內(nèi)存算法主要為L(zhǎng)Z0, LZ4, ZSTD等。下面截取了幾種算法在x86機(jī)器上的表現(xiàn)。各算法有各自特點(diǎn), 有以壓縮率高的, 有壓縮/解壓快的等, 具體要結(jié)合需求場(chǎng)景選擇使用。

6.zRAM技術(shù)應(yīng)用

本節(jié)描述一下在使用ZRAM常遇到的一些使用或配置,調(diào)試的方法。

6.1如何配置開啟zRAM

1)配置內(nèi)存壓縮算法

下面例子配置壓縮算法為lz4

echo lz4 > /sys/block/zram0/comp_algorithm

2)配置ZRAM大小

下面例子配置zram大小為2GB

echo 2147483648 > /sys/block/zram0/disksize

3)使能zram

mkswap /dev/zram0

swapon /dev/zram0

6.2swappiness含義簡(jiǎn)述

swappiness參數(shù)是內(nèi)核傾向于回收匿名頁(yè)到swap(使用的ZRAM就是swap設(shè)備)的積極程度, 原生內(nèi)核范圍是0~100, 參數(shù)值越大, 表示回收匿名頁(yè)到swap的比例就越大。如果配置為0, 表示僅回收文件頁(yè),不回收匿名頁(yè)。默認(rèn)值為60。可以通過節(jié)點(diǎn)“/proc/sys/vm/swappiness”配置。

6.3zRam相關(guān)的技術(shù)指標(biāo)

1)ZRAM大小及剩余空間

Proc/meminfo中可以查看相關(guān)信息

SwapTotal:swap總大小, 如果配置為ZRAM, 這里就是ZRAM總大小

SwapFree:swap剩余大小, 如果配置為ZRAM, 這里就是ZRAM剩余大小

當(dāng)然, 節(jié)點(diǎn) /sys/block/zram0/disksize是最直接的。

2)ZRAM壓縮率

/sys/block/zram/mm_stat中有壓縮前后的大小數(shù)據(jù), 由此可以計(jì)算出實(shí)際的壓縮率

orig_data_size:壓縮前數(shù)據(jù)大小, 單位為bytes

compr_data_size :壓縮后數(shù)據(jù)大小, 單位為bytes

3)換出/換入swap區(qū)的總量, proc/vmstat中中有相關(guān)信息

pswpin:換入總量, 單位為page

pswout:換出總量, 單位為page

6.4zRam關(guān)優(yōu)化

上面提到zRam的一些缺陷, 怎么去改善呢?

1) zRam大小是可靈活配置的, 那是不是配置越大越好呢? 如果不是配置多大是最合適的呢?

zRam大小的配置比較靈活, 如果zRam配置過大, 后臺(tái)緩存了應(yīng)用過多, 這也是有可能會(huì)影響前臺(tái)應(yīng)用使用的流暢度。另外, zRam配置越大, 也需要關(guān)注系統(tǒng)的內(nèi)存碎片化情。因此zRam并不是配置越大越好,具體的大小需要根據(jù)內(nèi)存總大小及系統(tǒng)負(fù)載情況考慮及實(shí)測(cè)而定。

2) 使用zRam,可能會(huì)存在低內(nèi)存場(chǎng)景由于頻繁的內(nèi)存壓縮導(dǎo)致kswapd進(jìn)程占CPU高, 怎樣改善?

zRam本質(zhì)就是以時(shí)間換空間, 在低內(nèi)存的情況下, 肯定會(huì)比較頻繁地回收內(nèi)存, 這時(shí)kswapd進(jìn)程是比較活躍的, 再加上通過壓縮內(nèi)存, 會(huì)更加消耗CPU資源。 改善這種情況方法也比較多, 比如, 可以使用更優(yōu)的壓縮算法, 區(qū)別使用場(chǎng)景, 后臺(tái)不影響用戶使用的場(chǎng)景異步進(jìn)行深度內(nèi)存壓縮, 與用戶體驗(yàn)相關(guān)的場(chǎng)景同步適當(dāng)減少內(nèi)存壓縮, 通過增加文件頁(yè)的回收比例加快內(nèi)存回收等等。

3) 增大了zRam配置,對(duì)系統(tǒng)內(nèi)存碎片是否有影響?

使用zRam是有可能導(dǎo)致系統(tǒng)內(nèi)存碎片變得更嚴(yán)重的, 特別是zsmalloc分配不支持可移動(dòng)內(nèi)存類型的時(shí)候。新版的內(nèi)核zsmalloc已經(jīng)支持可移動(dòng)類型分配的, 但由于增大了zRam,結(jié)合android手機(jī)的使用特點(diǎn), 仍然會(huì)有可能導(dǎo)致系統(tǒng)內(nèi)存碎片較嚴(yán)重的情況,因些內(nèi)存碎片問題也是需要重點(diǎn)關(guān)注的。解決系統(tǒng)內(nèi)存碎片的方法也比較多, 可以結(jié)合具體的原因及場(chǎng)景進(jìn)行優(yōu)化。

7.參考資料

1)https://github.com/lz4/lz4

2) kernel\Documentation\blockdev\zram.txt

3) kernel\Documentation\vm\zswap.txt

4) kernel\Documentation\sysctl\vm.txt

聲明:本文內(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

    文章

    10889

    瀏覽量

    212401
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11327

    瀏覽量

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

    關(guān)注

    8

    文章

    3041

    瀏覽量

    74177
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程

    關(guān)于內(nèi)核啟動(dòng)流程涉及內(nèi)容較多而且復(fù)雜,過度的分析意義不大,因此,這里不做詳細(xì)講解,只做一個(gè)大概的介紹。初學(xué)者只做了解,有一定基礎(chǔ)的可以深入理解。 內(nèi)核鏡像被uboot加載到內(nèi)存空間之后
    發(fā)表于 01-06 09:51

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介

    開發(fā)板資料包\\02-Linux 源代碼\\02-0 出廠內(nèi)核和uboot源碼\\內(nèi)核源碼\\linux-4.1.15-elf1.tar.bz2 后面我們也會(huì)
    發(fā)表于 12-16 13:08

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡(jiǎn)介

    \\02-Linux 源代碼\\02-0 出廠內(nèi)核和uboot源碼\\內(nèi)核源碼\\linux-4.1.15-elf1.tar.bz2后面我們也會(huì)介紹
    發(fā)表于 12-13 09:03

    Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見問題

    Linux系統(tǒng)中,虛擬內(nèi)存管理是操作系統(tǒng)內(nèi)核的一個(gè)重要功能,負(fù)責(zé)管理物理內(nèi)存和磁盤上的交換空間。以下是對(duì)Linux下如何管理虛擬
    的頭像 發(fā)表于 12-04 09:19 ?557次閱讀

    嵌入式工程師都在找的【Linux內(nèi)核調(diào)試技術(shù)】建議收藏!

    在嵌入式系統(tǒng)的開發(fā)中,Linux內(nèi)核調(diào)試是一個(gè)至關(guān)重要的環(huán)節(jié)。 隨著處理器技術(shù)的不斷進(jìn)步和嵌入式領(lǐng)域的蓬勃發(fā)展,掌握有效的內(nèi)核調(diào)試技術(shù)成為
    發(fā)表于 11-28 15:37

    內(nèi)存管理的硬件結(jié)構(gòu)

    常見的內(nèi)存分配函數(shù)有malloc,mmap等,但大家有沒有想過,這些函數(shù)在內(nèi)核中是怎么實(shí)現(xiàn)的?換句話說,Linux內(nèi)核內(nèi)存管理是怎么實(shí)現(xiàn)的
    的頭像 發(fā)表于 09-04 14:28 ?356次閱讀
    <b class='flag-5'>內(nèi)存</b>管理的硬件結(jié)構(gòu)

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    Linux系統(tǒng)中,驅(qū)動(dòng)程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們?cè)试S內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實(shí)現(xiàn)對(duì)硬件設(shè)備的控制和管理。 驅(qū)動(dòng)程序的編寫 驅(qū)動(dòng)程序的編寫是Linux驅(qū)動(dòng)開發(fā)的基礎(chǔ)。在編
    的頭像 發(fā)表于 08-30 15:02 ?532次閱讀

    學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計(jì)

    第一部分(第1~2章)介紹Hypervisor基礎(chǔ),涵蓋虛擬化技術(shù)與實(shí)現(xiàn)、主流的嵌入式Hypervisor產(chǎn)品,以及基于分離內(nèi)核的嵌入式Hypervisor等內(nèi)容。第二部分(第3~12
    發(fā)表于 08-25 09:11

    Linux內(nèi)核測(cè)試技術(shù)

    。內(nèi)核測(cè)試技術(shù)是實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細(xì)介紹 Linux 內(nèi)核測(cè)試的各種技術(shù),包括單元
    的頭像 發(fā)表于 08-13 13:42 ?535次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>測(cè)試<b class='flag-5'>技術(shù)</b>

    歡創(chuàng)播報(bào) 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開發(fā)者大會(huì)上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨(dú)立于安卓和iOS的鴻蒙操作系統(tǒng),正式登場(chǎng)。這是HarmonyOS
    的頭像 發(fā)表于 06-27 11:30 ?874次閱讀

    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) Linux 內(nèi)核

    盟通技術(shù)干貨構(gòu)建實(shí)時(shí)Linux內(nèi)核簡(jiǎn)介盟通技術(shù)干貨Motrotech如果需要在Linux中實(shí)現(xiàn)實(shí)時(shí)計(jì)算性能,進(jìn)而有效地將
    的頭像 發(fā)表于 04-12 08:36 ?2639次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)核</b>

    微軟發(fā)布Linux內(nèi)核Rust模塊優(yōu)化補(bǔ)丁

    在此之前,Linux 內(nèi)核中要想實(shí)現(xiàn)模塊初始化,必須先創(chuàng)建一個(gè)實(shí)例,再將其移至特定內(nèi)存空間。然而,經(jīng)過新補(bǔ)丁調(diào)整后,各模塊可直接在預(yù)設(shè)定好的內(nèi)存地址上完成初始化工作。
    的頭像 發(fā)表于 04-02 15:11 ?481次閱讀

    Linux內(nèi)核內(nèi)存管理之內(nèi)核非連續(xù)物理內(nèi)存分配

    的主要優(yōu)點(diǎn)是避免了外部碎片,而缺點(diǎn)是需要修改內(nèi)核頁(yè)表。顯然,非連續(xù)內(nèi)存區(qū)域的大小必須是4096的倍數(shù)。Linux使用非連續(xù)物理內(nèi)存區(qū)的場(chǎng)景有幾種:(1)為swap區(qū)分配數(shù)據(jù)結(jié)構(gòu);(2)
    的頭像 發(fā)表于 02-23 09:44 ?1034次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>內(nèi)存</b>管理之<b class='flag-5'>內(nèi)核</b>非連續(xù)物理<b class='flag-5'>內(nèi)存</b>分配

    Linux內(nèi)核內(nèi)存管理之ZONE內(nèi)存分配器

    內(nèi)核中使用ZONE分配器滿足內(nèi)存分配請(qǐng)求。該分配器必須具有足夠的空閑頁(yè)幀,以便滿足各種內(nèi)存大小請(qǐng)求。
    的頭像 發(fā)表于 02-21 09:29 ?922次閱讀

    linux內(nèi)核主要由哪幾個(gè)部分組成,作用是什么

    Linux內(nèi)核主要由以下幾個(gè)部分組成: 進(jìn)程管理:Linux內(nèi)核負(fù)責(zé)管理和調(diào)度系統(tǒng)中的進(jìn)程。它通過進(jìn)程調(diào)度算法來決定哪個(gè)進(jìn)程在什么時(shí)間運(yùn)行以及如何分配系統(tǒng)資源。
    的頭像 發(fā)表于 01-22 14:34 ?2746次閱讀