亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 4.txt

?? Linux內(nèi)核源代碼分析/電子書
?? TXT
?? 第 1 頁 / 共 3 頁
字號(hào):
圖4-1   描述用緩存這個(gè)if程序塊為記錄表格分配內(nèi)存,并把所有項(xiàng)都清零。注意到如果prof_shift是0(默認(rèn)值),那么記錄功能就被關(guān)掉了,if程序塊不再被執(zhí)行,也不為表格分配空間。19846:內(nèi)核通過調(diào)用sti(UP版本的13104行,注意該主題在第6章中有更詳細(xì)的介紹)開始接收硬件中斷。首先需要激活定時(shí)器中斷,以便后來對(duì)calibrate_delay(19654行)的調(diào)用可以計(jì)算機(jī)器的BogoMIPS的值(在下一節(jié)“BogoMIPS”中介紹)。因?yàn)橐恍┰O(shè)備驅(qū)動(dòng)程序需要BogoMIPS的值,所以內(nèi)核必需在大部分硬件、文件系統(tǒng)等等初始化之前計(jì)算出這個(gè)值來。19876:測試該CPU的各種缺陷,比如Pentium F00F缺陷(請參見第8章),記錄檢測到的缺陷,以便于內(nèi)核的其他部分以后可以使用它們工作。(為了節(jié)省空間起見,我們省略掉了check_bugs函數(shù)。)19882:調(diào)用smp_init(19787行),它又調(diào)用了其他的函數(shù)來激活SMP系統(tǒng)中的其他CPU:在x86的平臺(tái)上,smp_boot_cpus(4614行)初始化一些內(nèi)核數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)跟蹤檢測另外的CPU并簡單的將其改為保持模式;最后smp_commence(4195行)使這些CPU繼續(xù)執(zhí)行。19883:把init函數(shù)作為內(nèi)核線程終止,這比較復(fù)雜;請參閱本章后面有關(guān)init的討論。19885:增加idle進(jìn)程的need_resched標(biāo)志,這樣做的原因此時(shí)可能還比較模糊。當(dāng)讀完了第5、6、7章以后,就會(huì)有個(gè)清楚的概念;但是,在下一個(gè)定時(shí)器中斷結(jié)束之前(在第6章中討論),system_call(171行,在第5章中討論)函數(shù)中會(huì)注意到idle進(jìn)程的need_resched標(biāo)志增加了,并且調(diào)用schedule(26686行,第7章)釋放CPU,并將其賦給更應(yīng)該獲取CPU的進(jìn)程。19886:已經(jīng)完成了內(nèi)核初始化的工作—或者不管怎樣,已經(jīng)把需要完成的少量責(zé)任傳遞給了init,所剩余的工作不過是進(jìn)入idle循環(huán)以消耗空閑的CPU時(shí)間片。因此,本行調(diào)用cpu_idle(2014行)—idle循環(huán)。正如你可以從cpu_idle本身可以發(fā)現(xiàn)的一樣,該函數(shù)從不返回。然而,當(dāng)有實(shí)際工作要處理時(shí),該函數(shù)就會(huì)被搶占。注意到cpu_idle只是反復(fù)調(diào)用idle系統(tǒng)調(diào)用(下一章將討論系統(tǒng)調(diào)用),它通過sys_idle(2064行)實(shí)現(xiàn)真正的idle循環(huán)—2014行對(duì)應(yīng)UP版本,2044行針對(duì)SMP版本。它們通過執(zhí)行hlt(對(duì)應(yīng)“halt”)指令把CPU轉(zhuǎn)入低功耗的“睡眠”狀態(tài)。只要沒有實(shí)際的工作處理,CPU都將轉(zhuǎn)入這種狀態(tài)。4.2.1   BogoMIPSBogoMIPS的數(shù)字由內(nèi)核計(jì)算并在系統(tǒng)初始化的時(shí)候打印。它近似給出了每秒鐘CPU可以執(zhí)行一個(gè)短延遲循環(huán)的次數(shù)。在內(nèi)核中,這個(gè)結(jié)果主要用于需要等待非常短周期的設(shè)備驅(qū)動(dòng)程序—例如,等待幾微秒并查看設(shè)備的某些信息是否已經(jīng)可用。由于沒有正確理解BogoMIPS的含義,BogoMIPS在各處都被濫用,就仿佛它可以滿足人類最原始、最深層次的需求:把所有計(jì)算機(jī)性能的信息簡化為一個(gè)數(shù)字。“BogoMIPS”中的“Bogo”部分來源于“偽(bogus)”,就正是為了防止這種用法:雖然這個(gè)數(shù)字比大多數(shù)基準(zhǔn)測試數(shù)大,但是它仍然是不準(zhǔn)確的、容易引起誤解的、無用的和不真實(shí)的,根本不適合將它用于機(jī)器間差別的對(duì)比。但是這個(gè)數(shù)字仍然非常吸引人,這也正是我們在這里討論這個(gè)問題的原因。(BogoMIPS 中“MIPS”部分是“millions of instructions per second(百萬條指令每秒)”的縮寫,這是cpu基準(zhǔn)測試中的一個(gè)常用單位。) calibrate_delay19654:calibrate_delay是近似計(jì)算BogoMIPS數(shù)字的內(nèi)核函數(shù)。19622:作為第一次估算,calibrate_delay計(jì)算出在每一秒內(nèi)執(zhí)行多少次__delay循環(huán)(6866行),也就是每個(gè)定時(shí)器滴答(timer tick)—百分之一秒—內(nèi)延時(shí)循環(huán)可以執(zhí)行多少次。19664:計(jì)算一個(gè)定時(shí)器滴答內(nèi)可以執(zhí)行多少次循環(huán)需要在滴答開始時(shí)就開始計(jì)數(shù),或者應(yīng)該盡可能與它接近。全局變量jiffies(16588行)中存儲(chǔ)了從內(nèi)核開始保持跟蹤時(shí)間開始到現(xiàn)在已經(jīng)經(jīng)過的定時(shí)器滴答數(shù);第6章中將介紹它的實(shí)現(xiàn)方式。jiffies保持異步更新,在一個(gè)中斷內(nèi)—每秒一百次,內(nèi)核暫時(shí)掛起正在處理的內(nèi)容,更新變量,然后繼續(xù)剛才的工作。如果不這樣處理,下一行的循環(huán)就永遠(yuǎn)不可能退出。從而,如果jiffies不聲明為volatile—簡單地說,這個(gè)值變化的原因?qū)τ诰幾g器是透明的,gcc仍然可能對(duì)該循環(huán)進(jìn)行優(yōu)化,并引起該循環(huán)進(jìn)入不能退出的狀態(tài)。雖然目前的gcc還沒有如此高的智能,然而它的維護(hù)者應(yīng)該完全能夠?yàn)樗鼘?shí)現(xiàn)這種智能。19669:定時(shí)器又前移了一個(gè)滴答,因此又產(chǎn)生一個(gè)新的滴答。下一步是要等待loops_per_sec延時(shí)循環(huán)調(diào)用定時(shí)器循環(huán),接著檢測是否最少有一個(gè)完整的滴答已經(jīng)完成。如果是這樣,就退出首次近似估算循環(huán);如果沒有,就把loops_per_sec的值加倍,然后重新啟動(dòng)這個(gè)過程。這個(gè)循環(huán)的正確性依賴于如下的事實(shí):現(xiàn)有的機(jī)器在任何地方都不能每秒執(zhí)行232次延時(shí)循環(huán)(對(duì)于64位機(jī)來說則遠(yuǎn)低于每秒264次),雖然這只是一個(gè)微不足道的問題。19677:現(xiàn)在內(nèi)核已經(jīng)清楚loops_per_sec循環(huán)調(diào)用延時(shí)循環(huán)在這臺(tái)機(jī)器上要花費(fèi)超過百分之一秒的時(shí)間才能完成,因此,內(nèi)核將重新開始進(jìn)行估算。為了提高效率,內(nèi)核使用折半查找算法計(jì)算loops_per_sec的實(shí)際值,我們假定開始的時(shí)候,實(shí)際值在現(xiàn)在計(jì)算結(jié)果和其一半之間—實(shí)際值不可能比現(xiàn)在計(jì)算值還大,但是可以(而且可能)稍微小一點(diǎn)。19681:和前面使用的方式一樣,calibrate_delay查看這個(gè)loops_per_sec已經(jīng)減小了的值是否還是比較大,而需要耗費(fèi)一個(gè)完整的定時(shí)器間隔。如果還是相當(dāng)大,實(shí)際值應(yīng)該小于當(dāng)前計(jì)算值或者就是當(dāng)前值,因此,使用更小的值繼續(xù)查詢;如果不夠大,就使用一個(gè)更大的值繼續(xù)查詢。19691:內(nèi)核有一種很好的方法來計(jì)算一個(gè)定時(shí)器滴答中執(zhí)行延時(shí)循環(huán)的次數(shù)。這個(gè)數(shù)字乘以一秒內(nèi)滴答的數(shù)量就得到了每秒內(nèi)可以執(zhí)行的延時(shí)循環(huán)的次數(shù)。這種計(jì)算只是一種估算,乘法也累積了誤差,因此結(jié)果并不能精確到納秒。但是這個(gè)數(shù)字供內(nèi)核使用已經(jīng)足夠精確了。19693:為了讓用戶感到激動(dòng),內(nèi)核打印出這個(gè)數(shù)字。注意這里明顯省略了%f的格式限定—內(nèi)核盡量避免浮點(diǎn)數(shù)運(yùn)算。這個(gè)計(jì)算過程中最有用的常量是500 000;它是用一百萬除以2得來,理由是每秒鐘執(zhí)行一百萬條指令,而每個(gè)delay循環(huán)的核心是2條指令(decl和一條跳轉(zhuǎn)指令)。4.2.2   分析內(nèi)核選項(xiàng)parse_options函數(shù)分析由內(nèi)核引導(dǎo)程序發(fā)送給內(nèi)核的啟動(dòng)選項(xiàng),在初始化過程中按照某些選項(xiàng)運(yùn)行,并將剩余部分傳送給init進(jìn)程(在本章后面部分提到)。這些選項(xiàng)可能已經(jīng)存儲(chǔ)在配置文件中了,也可能是由用戶在系統(tǒng)啟動(dòng)時(shí)敲入的—內(nèi)核并不關(guān)心這些。類似的細(xì)節(jié)全部是內(nèi)核引導(dǎo)程序應(yīng)該關(guān)注的內(nèi)容。1. parse_options19707:參數(shù)已經(jīng)收集在一條長的命令行中,內(nèi)核被賦給指向該命令行頭部的一個(gè)指針;內(nèi)核引導(dǎo)程序在前面已經(jīng)將該行存儲(chǔ)在一個(gè)指定地址中。19718:中斷下一個(gè)參數(shù),保持指向下一個(gè)參數(shù)的指針以供下一次循環(huán)使用。注意系統(tǒng)使用空格而不是通常的空白來分隔內(nèi)核參數(shù);制表符并不能把當(dāng)前參數(shù)和下一個(gè)參數(shù)分隔開。如果發(fā)現(xiàn)了分隔字符空格,下一行就使用字節(jié)0覆蓋,這樣line可以作為包含有唯一一個(gè)內(nèi)核選項(xiàng)的標(biāo)準(zhǔn)C字符串來使用了。如果沒有發(fā)現(xiàn)空格,就該函數(shù)關(guān)心的內(nèi)容而言,其余的部分都具有相同的屬性—這只有在處理line中最后一個(gè)選項(xiàng)的情況下才會(huì)發(fā)生,循環(huán)就會(huì)在下次開始時(shí)結(jié)束。注意該代碼不會(huì)跳過多個(gè)空格。假設(shè)line值如下所述(兩個(gè)空格):rw  debug這會(huì)被當(dāng)作三個(gè)選項(xiàng):“rw”、“”(空字符串)和“debug”。因?yàn)榭兆址皇怯行У膬?nèi)核選項(xiàng),它將會(huì)被傳遞到初始化的過程(這一點(diǎn)隨后就可以看到)—這當(dāng)然不是用戶所希望的。因此,內(nèi)核引導(dǎo)程序應(yīng)該負(fù)責(zé)對(duì)多個(gè)空格進(jìn)行壓縮。LILO通過忽略用戶多敲的空格,完美地解決了這個(gè)問題。19721:現(xiàn)在開始解釋這些選項(xiàng)。最前面的兩個(gè)選項(xiàng)ro和rw指明內(nèi)核要裝載根文件系統(tǒng),也就是根目錄( / 目錄)所在的位置,而分別處于只讀和讀/寫模式。19729:第三種可能性,debug,增加了調(diào)試信息的數(shù)量;這些調(diào)試信息要通過調(diào)用do_syslog打印出來(25724行)。19733:開始幾個(gè)選項(xiàng)是簡單的獨(dú)立標(biāo)志,它們并不使用參數(shù)。內(nèi)核也可以辨認(rèn)形為option=value的選項(xiàng)。本行就是一個(gè)例子,這里內(nèi)核引導(dǎo)程序定義了一個(gè)命令來代替init運(yùn)行;它使用init=/some/other/program的形式。這里的代碼舍棄了init= 部分,為隨后init的使用而把剩余部分在execute_command中保存起來(20044行)。和其他大部分參數(shù)的處理方法不同,本處功能不能在checksetup(19612行)中實(shí)現(xiàn),這是因?yàn)樗淖兞嗽摵瘮?shù)的局部變量。很快,你就可以看到前面三個(gè)選項(xiàng)之所以也在這里處理,而不是在checksetup中處理的原因。19745:大部分內(nèi)核選項(xiàng)都是由checksetup函數(shù)分析的。如果checksetup處理了某個(gè)選項(xiàng),就返回真值,循環(huán)繼續(xù)進(jìn)行。19750:否則,line中沒有已經(jīng)被辨認(rèn)的內(nèi)核選項(xiàng)。在這種情況下,它被作為一個(gè)供init進(jìn)程使用的選項(xiàng)或者環(huán)境變量來處理—如果其形式為envar=value,就作為環(huán)境變量處理;否則,就作為選項(xiàng)處理。如果argv_init和envp_init(分別見19057和19059行)數(shù)組中有足夠的空間,選項(xiàng)和環(huán)境變量就存儲(chǔ)在里面供以后init函數(shù)使用。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品天堂| 欧美一区二区在线免费播放| 久久久久久久久久久久久夜| 国产一区二区在线看| 久久众筹精品私拍模特| 国产精品自拍av| 亚洲天堂网中文字| 欧美日本在线观看| 九九精品视频在线看| 国产日产欧美一区二区三区| 成人高清免费观看| 伊人一区二区三区| 欧美一级高清大全免费观看| 国产乱子轮精品视频| 国产精品丝袜一区| 色成年激情久久综合| 麻豆一区二区三| 国产精品久久国产精麻豆99网站| 在线免费观看视频一区| 日韩高清在线一区| 国产午夜亚洲精品羞羞网站| 国产精品素人一区二区| 色94色欧美sute亚洲线路一ni| 视频在线观看91| 国产视频一区在线观看| 在线中文字幕不卡| 国产一区在线观看视频| 亚洲精品日日夜夜| 精品欧美黑人一区二区三区| 91丨九色丨蝌蚪富婆spa| 日本一区中文字幕| 亚洲日穴在线视频| 欧美xxxxx裸体时装秀| 欧美在线视频日韩| 国产一区二区调教| 亚洲v日本v欧美v久久精品| 国产午夜精品久久久久久免费视| 欧洲人成人精品| 国产精品资源站在线| 亚洲h精品动漫在线观看| 欧美激情综合在线| 日韩精品在线看片z| 欧美综合在线视频| 不卡的av中国片| 久久se精品一区精品二区| 综合久久一区二区三区| 2欧美一区二区三区在线观看视频| 在线一区二区视频| www.久久精品| 国产精选一区二区三区| 日韩影视精彩在线| 亚洲观看高清完整版在线观看 | 在线精品视频一区二区| 国产一区在线观看视频| 日韩av一级电影| 亚洲国产精品自拍| 亚洲婷婷综合色高清在线| 中文字幕欧美国产| 久久老女人爱爱| 日韩美女一区二区三区四区| 欧美精品 日韩| 精品1区2区3区| 在线亚洲高清视频| 91在线视频播放| 成人开心网精品视频| 九色porny丨国产精品| 日本不卡一二三区黄网| 亚洲va欧美va天堂v国产综合| 亚洲欧美日韩电影| 国产精品久久久久天堂| 欧美韩国日本一区| 国产精品视频yy9299一区| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲成av人片观看| 94-欧美-setu| 成人av在线资源网| bt欧美亚洲午夜电影天堂| 风间由美一区二区三区在线观看| 国产一区不卡视频| 国产精品资源在线看| 国产风韵犹存在线视精品| 国产高清久久久| 成人av电影在线观看| 色综合久久九月婷婷色综合| 91视频国产观看| 欧美综合天天夜夜久久| 欧美日韩精品一区二区三区蜜桃| 欧美精品一二三四| 日韩欧美中文字幕精品| 欧美成人r级一区二区三区| 欧美精品一区男女天堂| 久久久精品国产免大香伊| 日本一区二区不卡视频| 亚洲丝袜美腿综合| 亚洲午夜激情av| 蜜臀av一区二区在线观看| 国产一区二区三区蝌蚪| 国产成人午夜视频| 91年精品国产| 91精品欧美综合在线观看最新| 日韩欧美在线影院| 国产欧美一区二区精品忘忧草 | 欧美影院一区二区三区| 777欧美精品| 久久中文字幕电影| 亚洲欧洲综合另类| 天天综合天天综合色| 国产一区二区三区免费播放| av不卡免费电影| 91精品国产综合久久香蕉麻豆| 精品免费国产二区三区| 亚洲色图在线看| 日本美女一区二区三区| 成人污视频在线观看| 欧美色中文字幕| 久久伊人蜜桃av一区二区| 国产精品久久免费看| 五月激情丁香一区二区三区| 国产成人在线影院| 在线播放91灌醉迷j高跟美女| 26uuu色噜噜精品一区| 玉足女爽爽91| 国产一区二区三区国产| 在线一区二区三区四区五区| 久久亚洲精精品中文字幕早川悠里 | 不卡的av在线| 91精品一区二区三区久久久久久| 欧美成人一区二区三区在线观看| 国产精品国产三级国产普通话蜜臀 | 国产一区视频导航| 91麻豆精品在线观看| 欧美精品一二三区| 日韩一区在线免费观看| 麻豆91在线看| 色综合一个色综合| 国产视频视频一区| 蜜臀精品久久久久久蜜臀| 色一区在线观看| 国产精品区一区二区三区| 久久av资源站| 91精品国产综合久久久久久久| ...xxx性欧美| 91精品国产综合久久精品麻豆| 国产精品的网站| 国产一区在线观看麻豆| 日韩欧美黄色影院| 石原莉奈在线亚洲二区| 色婷婷精品大在线视频| 中文字幕亚洲精品在线观看| 国产麻豆精品一区二区| 日韩免费看网站| 天堂va蜜桃一区二区三区| 色婷婷久久99综合精品jk白丝| 国产网站一区二区三区| 精品亚洲免费视频| 日韩色在线观看| 日本人妖一区二区| 欧美疯狂性受xxxxx喷水图片| 一级做a爱片久久| 一本一道久久a久久精品综合蜜臀| 欧美激情一区二区三区不卡| 国产一区二区三区免费看| 精品国产凹凸成av人导航| 美腿丝袜亚洲一区| 日韩一区二区免费在线电影| 免费成人在线观看视频| 日韩亚洲电影在线| 强制捆绑调教一区二区| 日韩一区二区免费视频| 久久爱www久久做| 欧美精品一区二区不卡 | 2024国产精品视频| 国产一区二三区好的| 久久久国产午夜精品 | 国产精品久久午夜| 成人高清免费在线播放| 1024亚洲合集| 欧美网站大全在线观看| 婷婷国产在线综合| 日韩一级视频免费观看在线| 久久99精品久久久久久久久久久久| 欧美一级欧美三级| 国产中文字幕精品| 国产精品黄色在线观看| 91国偷自产一区二区三区观看| 性做久久久久久免费观看| 337p亚洲精品色噜噜噜| 久久精品国产澳门| 久久精品一区蜜桃臀影院| 成人a区在线观看| 亚洲国产精品久久久男人的天堂| 欧美精品v国产精品v日韩精品| 韩日欧美一区二区三区| 欧美激情一区三区| 欧美私模裸体表演在线观看| 蜜臀久久99精品久久久久久9| 欧美激情一区二区三区全黄| 在线影院国内精品| 久久99蜜桃精品| 亚洲欧美激情一区二区|