嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐

《嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐》是2012年12月出版的圖書,作者是豐海。

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐基本信息

書名 嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐 作者 豐海
ISBN 978-7-111-39684-0 定價(jià) 36.8元

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐造價(jià)信息

市場(chǎng)價(jià) 信息價(jià) 詢價(jià)
材料名稱 規(guī)格/型號(hào) 市場(chǎng)價(jià)
(除稅)
工程建議價(jià)
(除稅)
行情 品牌 單位 稅率 供應(yīng)商 報(bào)價(jià)日期
圖方便負(fù)壓污水收集系統(tǒng) 依據(jù)實(shí)際項(xiàng)目進(jìn)行配置(含真空井、真空管道、動(dòng)力源站) 查看價(jià)格 查看價(jià)格

圖方便

13% 圖方便(蘇州)環(huán)??萍加邢薰?/a>
裝配一體化污水處理設(shè)備 PKY-DIAB-600,Ф8000mm×7000mm,材質(zhì)碳鋼防腐,處理規(guī)模600m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-1000,Ф10400mm×7000mm,材質(zhì)碳鋼防腐,處理規(guī)模1000m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-2000,Ф14300mm×7000mm,材質(zhì)碳鋼防腐,處理規(guī)模2000m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-3000,Ф18000mm×7000mm,材質(zhì)碳鋼防腐,處理規(guī)模3000m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-10000,Ф32500mm×7000mm,材質(zhì)碳鋼防腐,處理規(guī)模10000m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-600,Ф8000mm×7000mm,材質(zhì)304不銹鋼,處理規(guī)模600m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
裝配一體化污水處理設(shè)備 PKY-DIAB-2000,Ф14300mm×7000mm,材質(zhì)304不銹鋼,處理規(guī)模2000m3/d 查看價(jià)格 查看價(jià)格

鵬凱

13% 鵬凱環(huán)境科技股份有限公司
材料名稱 規(guī)格/型號(hào) 除稅
信息價(jià)
含稅
信息價(jià)
行情 品牌 單位 稅率 地區(qū)/時(shí)間
GRG高級(jí)裝飾系統(tǒng) 厚15-20(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年3季度信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚10-12(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年2季度信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年2季度信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚10-12(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年1季度信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年1季度信息價(jià)
煙感系統(tǒng) 查看價(jià)格 查看價(jià)格

湛江市2005年2月信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚25-35(雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2016年3季度信息價(jià)
GRG高級(jí)裝飾系統(tǒng) 厚10-12 (雙曲、異形、無縫拼接) 查看價(jià)格 查看價(jià)格

m2 湛江市2015年4季度信息價(jià)
材料名稱 規(guī)格/需求量 報(bào)價(jià)數(shù) 最新報(bào)價(jià)
(元)
供應(yīng)商 報(bào)價(jià)地區(qū) 最新報(bào)價(jià)時(shí)間
視頻綜合平臺(tái)1、采用嵌入式架構(gòu),專用Linux系統(tǒng),使用DSP解碼.為? 視頻綜合平臺(tái)1、采用嵌入式架構(gòu),專用Linux系統(tǒng),使用DSP解碼.為?|1臺(tái) 3 查看價(jià)格 浙江宇視科技有限公司 全國(guó)   2020-11-13
Linux系統(tǒng) Linux Enterprise 12.0(2cpu)一年服務(wù),盒包|15套 1 查看價(jià)格 上海傾菲電子科技有限公司 全國(guó)   2018-05-17
操作系統(tǒng)(Linux) Linux Enterprise 12.0(2cpu)一年服務(wù),盒包|2套 1 查看價(jià)格 上海傾菲電子科技有限公司 全國(guó)   2018-05-17
嵌入式錄播系統(tǒng) 軟件內(nèi)嵌于錄播系統(tǒng)主機(jī),運(yùn)行于嵌入式Linux操作系統(tǒng)環(huán)境,支持B/S管理.支持對(duì)課堂或培訓(xùn)課堂錄制的控制和管理,具有錄制資源模式、錄制電源模式、錄制暫停、選擇錄制格式等功能.支持添加錄制片頭、添加|1套 3 查看價(jià)格 廣州市迪士普音響科技有限公司 全國(guó)   2019-09-03
人員主被動(dòng)定位通信應(yīng)用系統(tǒng) 人員主被動(dòng)定位通信應(yīng)用系統(tǒng)|1套 1 查看價(jià)格 南京埃爾喬億自控設(shè)備有限公司 四川   2021-06-16
操作系統(tǒng)(Linux) Linux Enterprise 12.0(2cpu)一年服務(wù),盒包|4套 1 查看價(jià)格 上海傾菲電子科技有限公司 全國(guó)   2018-05-17
嵌入式地毯 1、嵌入式地毯2、地毯成份::手工簇絨3、做法參考物料表"SF-1061"對(duì)應(yīng)附屬大樣圖4、滿足圖紙要求等一切所需|112.97m2 3 查看價(jià)格 山東東升地毯集團(tuán)有限公司 廣東   2022-03-19
嵌入式硬盤錄像 嵌入式硬盤錄像8路|8247套 1 查看價(jià)格 廣州市帝星信息科技有限公司 廣東  廣州市 2015-05-14

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐常見問題

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐文獻(xiàn)

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐第7章_GPIO接口控制LED燈 嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐第7章_GPIO接口控制LED燈

格式:pdf

大?。?span id="pbrxyyt" class="single-tag-height">2.0MB

頁數(shù): 10頁

評(píng)分: 4.4

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐第7章_GPIO接口控制LED燈

立即下載
嵌入式linux的LED實(shí)驗(yàn) 嵌入式linux的LED實(shí)驗(yàn)

格式:pdf

大?。?span id="8zu776a" class="single-tag-height">2.0MB

頁數(shù): 9頁

評(píng)分: 4.4

嵌入式linux的LED實(shí)驗(yàn)

立即下載

嵌入式學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見的是嵌入式Linux方向,關(guān)注這個(gè)方向,大概分3個(gè)階段:

1、嵌入式Linux上層應(yīng)用,包括QT的GUI開發(fā)

2、嵌入式Linux系統(tǒng)開發(fā)

3、嵌入式Linux驅(qū)動(dòng)

Linux是開源免費(fèi)的,而且其源代碼是開放的,更加適合學(xué)習(xí)嵌入式。

(1) C語言是所有編程語言中的強(qiáng)者,因此必須非常熟練的掌握。

(2)Linux操作系統(tǒng)就是用C語言編寫的,所以也應(yīng)該先學(xué)習(xí)下Linux方面的編程,只有會(huì)應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。

(4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們?cè)谇度胧介_發(fā)中,一般很少去寫匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。

(5) 系統(tǒng)移植的時(shí)候,就需要你從最下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。

(6) 驅(qū)動(dòng)開發(fā)

linux驅(qū)動(dòng)程序設(shè)計(jì)既是個(gè)極富有挑戰(zhàn)性的領(lǐng)域,又是一個(gè)博大精深的內(nèi)容。

以上是大概的框架,

推薦學(xué)習(xí)平臺(tái):

iTOP-4412開發(fā)板涵蓋嵌入式技術(shù)熱點(diǎn),支持linux,android,QT,Ubuntu系統(tǒng)

核心板參數(shù)

尺寸:50mm*60mm

高度:連同連接器在內(nèi)0.26cm

CPU:Exynos4412,四核Cortex-A9,主頻為1.4GHz-1.6GHz

內(nèi)存:1GB 雙通道 DDR3(2GB 可選)

存儲(chǔ)4GB EMMC(16GB 可選)

電源管理:低功耗動(dòng)態(tài)三星S5M8767電源管理,最優(yōu)架構(gòu)!

工作電壓:2.65V--5.5V (推薦4.0V)

系統(tǒng)支持:Linux-QT/Android4.2/Ubuntu操作系統(tǒng)

USB HOST:板載USB3503,引出高性能HSIC,實(shí)現(xiàn)2路USB HOST輸出

引角擴(kuò)展:引出腳多達(dá)320個(gè),滿足用戶各類擴(kuò)展需求

運(yùn)行溫度:-25度至+80度區(qū)間,設(shè)備工作正常,運(yùn)行良好!

底板參數(shù)

尺寸:110mm*190mm

SWITCH:電源接口

RESET:1個(gè)復(fù)位按鍵

POWER:電直流電源輸入接口,5V/2A電源輸入

TF Card:1個(gè)標(biāo)準(zhǔn)TF卡接口

USB Host:2路USB Host,支持USB2.0協(xié)議

USB OTG:1路USB OTG 2.0

以太網(wǎng)口:10M/100M自適應(yīng)網(wǎng)口

PHONE:支持耳機(jī)輸出

MIC:支持MIC輸入

串口:2路串口

A/D:1路

User Key:5個(gè)功能按鍵

DIP SWITCH:1個(gè)

GPIO:20PIN(電源和地)

CAMERA接口:1個(gè)(可支持200萬和500萬攝像頭)

WIFI接口:1個(gè)

HDMI接口:標(biāo)準(zhǔn)HDMI v1.4,1080p高清分辨率輸出

LCD接口:共3個(gè),2個(gè)LVDS接口,1個(gè)RGB接口

LCD電源開關(guān):1個(gè)

MIPI接口:1個(gè)

實(shí)時(shí)時(shí)鐘:內(nèi)部實(shí)時(shí)時(shí)鐘,帶有后備鋰電池座,斷電后系統(tǒng)時(shí)間不丟失

BUZZER:1個(gè)蜂鳴器

JTAG接口:1個(gè)

串口、矩陣鍵盤、GPS接口:1個(gè)

Linux系統(tǒng)中有關(guān)/dev/null和/dev/zero文件說明

提示:這個(gè)題目完全可以作為一個(gè)面試題考考運(yùn)維的應(yīng)聘者:

面試題:請(qǐng)解釋Linux中/dev/null和/dev/zero兩個(gè)文件的作用和區(qū)別。

在類Unix操作系統(tǒng)中,設(shè)備節(jié)點(diǎn)并不一定要對(duì)應(yīng)物理設(shè)備。沒有這種對(duì)應(yīng)關(guān)系的設(shè)備被稱之為偽設(shè)備。操作系統(tǒng)運(yùn)用了它們實(shí)現(xiàn)多種多樣的功能,/dev/null和/dev/zero就是這樣的設(shè)備,類似的還有/dev/urandom、/dev/tty等。

先檢查下/dev/null和/dev/zero兩個(gè)文件的屬性:

[root@oldboy ~]# ls -l/dev/null /dev/zero

crw-rw-rw-. 1 root root 1, 3Jul 15 00:11 /dev/null

crw-rw-rw-. 1 root root 1, 5Jul 15 00:11 /dev/zero

提示:從文件屬性可以看出這兩個(gè)文件都是字符設(shè)備文件。

1、/dev/null

1)/dev/null介紹

大家都知道宇宙中“太陽黑洞”吧,所有的天體(含地球)一旦進(jìn)入了太陽黑洞都會(huì)消失的無影無蹤。這里的/dev/null就是Linux系統(tǒng)中的"黑洞"。

在類Unix系統(tǒng)中,/dev/null(空設(shè)備文件或黑洞文件)是一個(gè)特殊的設(shè)備文件,所有寫入其中的數(shù)據(jù),都會(huì)被丟棄的無影無蹤,/dev/null通常被用于丟棄不需要的數(shù)據(jù)輸出,或作為用于輸入流的空文件。這些操作通常由重定向完成。

2)/dev/null實(shí)踐

范例1-1:清空文件。

[root@oldboy ~]# cp/etc/hosts{,.ori} #<==備份。

[root@oldboy ~]# cat /dev/null>/etc/hosts #<==將讀取黑洞設(shè)備寫入到/etc/hosts,表示清空hosts文件。

[root@oldboy ~]# cat/etc/hosts #<==果然沒了。使用上述備份恢復(fù)回來。

范例1-2:將無用的輸出流寫入到黑洞丟棄。

當(dāng)取一個(gè)地址響應(yīng)頭的第一行時(shí),加上管道就會(huì)出現(xiàn)下面的特殊結(jié)果:

[root@oldboy ~]# curl -Iwww.oldboyedu.com|head -1

% Total % Received % Xferd AverageSpeed Time Time Time Current

Dload Upload Total Spent Left Speed

0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0

HTTP/1.1 200 OK

執(zhí)行上述命令時(shí),會(huì)憑空多出來的幾行無用信息,此時(shí)就可以使用將錯(cuò)誤信息定向到黑洞(2>/dev/null)的方式丟棄無用信息。

[root@oldboy ~]# curl -Iwww.oldboyedu.com 2>/dev/null|head -1 #<==將錯(cuò)誤信息定向到黑洞。

HTTP/1.1 200 OK

當(dāng)然了curl命令也提供了實(shí)現(xiàn)參數(shù),這里暫且不多表。

[root@oldboy ~]# curl -I -s www.oldboyedu.com|head-1

HTTP/1.1 200 OK

范例1-3:將定時(shí)任務(wù)腳本結(jié)尾加上>/dev/null 2>&1

在書寫定時(shí)任務(wù)總,規(guī)范的寫法就是將所有定時(shí)任務(wù)腳本結(jié)尾加上>/dev/null 2>&1,讓所有的輸出流(包括錯(cuò)誤的和正確的)都定向到空設(shè)備丟棄。

[root@oldboy ~]# crontab -l

#time sync by oldboy at2010-2-1

*/5 * * * * /usr/sbin/ntpdatetime.windows.com >/dev/null 2>&1

#bak all db

00 01 * * * /bin/sh/server/s/mysqlbak.sh >/dev/null 2>&1

2、/dev/zero

1) /dev/zero介紹

和/dev/null類似,/dev/zero也是一個(gè)特殊的字符設(shè)備文件,當(dāng)我們使用或讀取它的時(shí)候,它會(huì)提供無限連續(xù)不斷的空的數(shù)據(jù)流(特殊的數(shù)據(jù)格式流)。

/dev/zero文件的常見應(yīng)用場(chǎng)景有二:

a./dev/zero文件覆蓋其他文件信息。

b.產(chǎn)生指定大小的空文件,例如:交換文件、模擬虛擬文件系統(tǒng)等。

2)/dev/zero實(shí)踐

范例1-5:產(chǎn)生指定大小的空文件。

[root@oldboy ~]# dd if=/dev/zeroof=test.data bs=1M count=2 #<==生成塊大小1M,含有2個(gè)塊的文件。

2+0 records in

2+0 records out

2097152 bytes (2.1 MB) copied,0.00279345 s, 751 MB/s

[root@oldboy ~]# ls -lhtest.data

-rw-r--r--. 1 root root 2.0MJul 15 20:20 test.data #<==一共2M大小。

[root@oldboy ~]# filetest.data

test.data: data #<==特殊的數(shù)據(jù)文件格式。

提示:在使用dd命令產(chǎn)生空文件時(shí)常用/dev/zero作為字符流的源。

范例1-4:利用/dev/zero文件覆蓋其他文件信息

[root@oldboy ~]# echo oldboy>new.txt #<==生成一個(gè)新文件寫入oldboy字符串。

[root@oldboy ~]# ddif=/dev/zero of=new.txt bs=1M count=10 #<==用空的字符流覆蓋存在的new.txt文件。

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied,0.0475368 s, 221 MB/s

[root@oldboy ~]# cat new.txt #<==數(shù)據(jù)丟失了。

更多干貨請(qǐng)關(guān)注老男孩公眾號(hào)

Linux 調(diào)度器對(duì)比

BFS vs CFS,設(shè)計(jì)上的不同 白天 Con Kolivas 在醫(yī)院里當(dāng)麻醉師,為人們解除痛苦,業(yè)余的時(shí)候借 Linux 解除自己的痛苦。額,Kolivas 學(xué)習(xí) Linux 并不是為了解決痛苦,我臆測(cè)而已。但據(jù) Kolivas 自述,他接觸 Linux 內(nèi)核時(shí)連 C 語言也沒有學(xué)習(xí)過。。。這個(gè)事實(shí)證明,語言只是一項(xiàng)工具,對(duì)問題本質(zhì)的深入理解才是寫程序的關(guān)鍵??赡苓€有執(zhí)著,CFS 和 RSDL 之爭(zhēng)導(dǎo)致 Kolivas 離開 Linux 社區(qū),此去經(jīng)年,當(dāng) Kolivas 再次開始看內(nèi)核代碼的時(shí)候,他立即發(fā)現(xiàn) CFS 存在以下幾個(gè)設(shè)計(jì)上的問題:

CFS 的目標(biāo)是支持從桌面到高端服務(wù)器的所有應(yīng)用場(chǎng)景,這種大而全的設(shè)計(jì)思路導(dǎo)致其必須做一些實(shí)現(xiàn)上的折中,此外,那些只有在高端機(jī)器中才需要的特性將引入不必要的復(fù)雜代碼。

其次,為了維護(hù)多 CPU 上的公平性,CFS 采用了負(fù)載平衡機(jī)制,Kolivas 認(rèn)為,這些復(fù)雜代碼抵消了 per cpu queue 曾帶來的好處。

最后,主流內(nèi)核的 CFS 還是對(duì)睡眠進(jìn)程存在一些偏好,這意味著"不公平"。

設(shè)計(jì)目標(biāo)不同

在現(xiàn)實(shí)中,調(diào)度算法類似一個(gè)處境尷尬的主婦,滿足孩子對(duì)晚餐的要求便有可能傷害到老人的食欲。Linux 內(nèi)核一直試圖做出一道讓全家老少都喜歡的菜,在這方面,CFS 已經(jīng)做的很好。但一道能被所有人接受的菜,或許就意味著稍許平淡。而 BFS 只打算滿足一種口味,以便將這種口味發(fā)展到極限。

根據(jù) Linux Magazine的說法,Con Kolivas是看到了下面這則來自 xkcd 的漫畫而開始思考 BFS 的。

事情源于一些 Linux 用戶,他們發(fā)現(xiàn) Linux 雖然號(hào)稱能夠充分發(fā)揮 4096 顆 CPU 系統(tǒng)的計(jì)算能力,但在普通的 laptop 上卻無法流暢地播放 Youtube 視頻。

這讓人們開始思考,對(duì)于 Desktop 環(huán)境來講,CFS 哪些復(fù)雜的特性究竟是否還有意義?人們是否有必要在自己的個(gè)人電腦中使用一個(gè)支持 4096 個(gè) CPU 的調(diào)度器?

BFS 正是對(duì)這種質(zhì)疑的自然反應(yīng)。它不打算支持 4096 個(gè) CPU 的龐然大物,BFS 的目標(biāo)是普通人使用的桌面電腦。此外,BFS 還刪除了那些只有在服務(wù)器上才需要的特性。比如,BFS 拋棄了 CFS 的組調(diào)度特性,類似 CGROUP 這樣的特性對(duì)于普通的桌面用戶是多余的技術(shù)。

這很容易理解:在只有一個(gè) CPU 的系統(tǒng)中,誰還會(huì)設(shè)計(jì)多個(gè) CGroup,哪里還能用到 NUMA domain等概念呢?

此外 BFS 使用單一的 run queue,不再需要復(fù)雜的負(fù)載均衡機(jī)制。由于不再有 CGROUP 概念,也不再需要 Group 間的負(fù)載均衡。

這些簡(jiǎn)單的裁剪使得 BFS 的代碼極大地簡(jiǎn)化,簡(jiǎn)化的代碼意味著執(zhí)行一次調(diào)度所需要的指令數(shù)減少了,相應(yīng)的 footprint 自然也減少了。

當(dāng)然簡(jiǎn)化代碼只是一個(gè)顯而易見的方面,更重要的是,這種理念的不同會(huì)對(duì)最終的調(diào)度器實(shí)現(xiàn)產(chǎn)生更加深遠(yuǎn)的影響,這實(shí)在是難以盡述。

多隊(duì)列 vs 單一隊(duì)列

?在 Linux 內(nèi)核進(jìn)入 2.6 時(shí),調(diào)度器采用 per cpu run queue 從而克服了單一 run queue 的局限。在多 CPU 系統(tǒng)中,單一 run queue 意味著 run queue 成為了系統(tǒng)的瓶頸,因?yàn)樵谕粫r(shí)刻,一個(gè) CPU 訪問 run queue 時(shí),其他的 CPU 即使空閑也必須等待。當(dāng)使用 per CPU 的 run queue 之后,每個(gè) CPU 不必再使用大鎖,從而能夠并行地處理調(diào)度。

但很多事情都不像第一眼看上去那樣簡(jiǎn)單。

Kolivas 發(fā)現(xiàn),采用 per cpu run queue 所帶來的好處會(huì)被追求公平性的 load balance 代碼所抵消。在目前的 CFS 調(diào)度器中,每顆 CPU 只維護(hù)本地 run queue 中所有進(jìn)程的公平性,為了實(shí)現(xiàn)跨 CPU 的調(diào)度公平性,CFS 必須定時(shí)進(jìn)行 load balance,將一些進(jìn)程從繁忙的 CPU 的 run queue 中移到其他空閑的 run queue 中。

這個(gè) load balance 的過程需要獲得其他 run queue 的鎖,這種操作降低了多運(yùn)行隊(duì)列帶來的并行性。

并且在復(fù)雜情況下,這種因 load balance 而引入的 footprint 將非??捎^。

當(dāng)然,load balance 引入的加鎖操作依然比全局鎖的代價(jià)要低,這種代價(jià)差異隨著 CPU 個(gè)數(shù)的增加而更加顯著。但請(qǐng)您注意,BFS 并不打算為那些擁有 1024 個(gè) CPU 的系統(tǒng)工作,假若系統(tǒng)中的 CPU 個(gè)數(shù)有限時(shí),多 run queue 的優(yōu)勢(shì)便不明顯了。

而 BFS 采用單一隊(duì)列之后,每一個(gè)需要調(diào)度的新進(jìn)程都可以在全局范圍內(nèi)查找最合適的 CPU,而無需 CFS 那樣等待 load balance 代碼來決定,這減少了多 CPU 之間裁決的延遲,最終的結(jié)果是更小的調(diào)度延遲。

向前看還是向后看?

多年來 Kolivas 一直關(guān)注著 Linux 在 desktop 上的表現(xiàn)。對(duì)于 desktop 的用戶,最注重的不是系統(tǒng)的吞吐量,而是交互性程序的流暢體驗(yàn)。從 SD 開始,Kolivas 就告訴內(nèi)核黑客們,完全公平能夠從根本上保證交互性。他始終堅(jiān)持一個(gè)基本觀點(diǎn):調(diào)度器應(yīng)該 forward look only。決不要去考慮一個(gè)進(jìn)程的過去。

CFS 卻偏偏要考慮進(jìn)程的過去。2.6.23 的時(shí)候,CFS 記錄并使用 sleep time。之后不久,在 2.6.24 發(fā)布的時(shí)候,CFS 合并了"Real Fair Scheduler",刪除了 sleep time。因此在 2.6.24 之后的內(nèi)核中,CFS 終于也不再考慮進(jìn)程過去的睡眠時(shí)間。

但 CFS 還是保留了 sleeper fairness 的思想,當(dāng)進(jìn)程 wakeup 的時(shí)候,在 place_entity() 函數(shù)中,CFS 將對(duì) sleeper 進(jìn)行獎(jiǎng)勵(lì),以便其能盡快得到 CPU。這個(gè)策略是非常微妙的,我們?cè)?2.1 節(jié)中詳細(xì)介紹了 sleeper fairness 的演進(jìn)過程。假如您花些時(shí)間回頭再看看,就會(huì)發(fā)現(xiàn) sleeper fairness 曾造成怎樣嚴(yán)重的延遲問題。雖然 Ingo 自稱 Gentle fairness 解決了延遲問題,但從代碼上看,Gentle Fairness 只是對(duì) sleeper 的獎(jiǎng)勵(lì)減半而已。因此我們可以說,CFS 依然對(duì) Sleeper 進(jìn)程進(jìn)行獎(jiǎng)勵(lì),這代表著一種偏好,一種"不公平"。而這,正是 BFS 所反對(duì)的。

BFS 中,當(dāng)一個(gè)進(jìn)程 wakeup 時(shí),調(diào)度器將根據(jù)進(jìn)程的 deadline 來進(jìn)行選擇(關(guān)于 deadline 本文將在第 4 章中詳細(xì)描述),其結(jié)果是,更早睡眠的進(jìn)程能更快地得到調(diào)度;CFS 的 sleeper fairness 則意味著要根據(jù) wakeup 的時(shí)間來選擇下一個(gè)被調(diào)度的進(jìn)程,更早 wakeup 的進(jìn)程會(huì)更快得到調(diào)度。

這種不同究竟會(huì)對(duì)桌面應(yīng)用造成何種影響尚沒有理論依據(jù)可以參考。但我個(gè)人認(rèn)為,BFS 的策略更加合理。

您現(xiàn)在可能已經(jīng)讀得有些煩躁了 ( 這些英文加中文的說些啥啊 ),所以我還是盡快介紹一下 BFS 的實(shí)現(xiàn)細(xì)節(jié)吧。然后或許您會(huì)理解我,有些詞還是不翻譯更好。

嵌入式Linux系統(tǒng)應(yīng)用及項(xiàng)目實(shí)踐相關(guān)推薦
  • 相關(guān)百科
  • 相關(guān)知識(shí)
  • 相關(guān)專欄

最新詞條

安徽省政采項(xiàng)目管理咨詢有限公司 數(shù)字景楓科技發(fā)展(南京)有限公司 懷化市人民政府電子政務(wù)管理辦公室 河北省高速公路京德臨時(shí)籌建處 中石化華東石油工程有限公司工程技術(shù)分公司 手持無線POS機(jī) 廣東合正采購(gòu)招標(biāo)有限公司 上海城建信息科技有限公司 甘肅鑫禾國(guó)際招標(biāo)有限公司 燒結(jié)金屬材料 齒輪計(jì)量泵 廣州采陽招標(biāo)代理有限公司河源分公司 高鋁碳化硅磚 博洛尼智能科技(青島)有限公司 燒結(jié)剛玉磚 深圳市東海國(guó)際招標(biāo)有限公司 搭建香蕉育苗大棚 SF計(jì)量單位 福建省中億通招標(biāo)咨詢有限公司 泛海三江 威海鼠尾草 廣東國(guó)咨招標(biāo)有限公司 Excel 數(shù)據(jù)處理與分析應(yīng)用大全 甘肅中泰博瑞工程項(xiàng)目管理咨詢有限公司 山東創(chuàng)盈項(xiàng)目管理有限公司 當(dāng)代建筑大師 廣西北纜電纜有限公司 拆邊機(jī) 大山檳榔 上海地鐵維護(hù)保障有限公司通號(hào)分公司 甘肅中維國(guó)際招標(biāo)有限公司 舌花雛菊 湖北鑫宇陽光工程咨詢有限公司 GB8163標(biāo)準(zhǔn)無縫鋼管 中國(guó)石油煉化工程建設(shè)項(xiàng)目部 華潤(rùn)燃?xì)猓ㄉ虾#┯邢薰? 韶關(guān)市優(yōu)采招標(biāo)代理有限公司 莎草目 建設(shè)部關(guān)于開展城市規(guī)劃動(dòng)態(tài)監(jiān)測(cè)工作的通知 電梯平層準(zhǔn)確度 廣州利好來電氣有限公司 蘇州弘創(chuàng)招投標(biāo)代理有限公司