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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 4.txt

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品原创巨作av| 热久久国产精品| 亚洲自拍与偷拍| 国产在线一区观看| 91精品福利视频| 2014亚洲片线观看视频免费| 亚洲卡通动漫在线| 国产精品91一区二区| 欧美日韩一本到| 国产精品精品国产色婷婷| 日本va欧美va瓶| 91色综合久久久久婷婷| 久久九九久久九九| 日韩高清一级片| 91视频在线观看免费| 久久久久九九视频| 精品亚洲porn| 欧美高清激情brazzers| 一区二区免费视频| 成人激情图片网| 久久久一区二区| 久久丁香综合五月国产三级网站| 欧美日韩一区国产| 亚洲乱码中文字幕综合| 国产成人8x视频一区二区| 欧美大片顶级少妇| 麻豆中文一区二区| 欧美电视剧免费全集观看| 天天av天天翘天天综合网色鬼国产| 一本久久综合亚洲鲁鲁五月天| 国产嫩草影院久久久久| 福利视频网站一区二区三区| 久久先锋资源网| 国产伦理精品不卡| 久久精品网站免费观看| 国产精品1024| 欧美激情自拍偷拍| 成人app网站| 中文字幕一区二区三区不卡 | 国产一区二区不卡| 日韩免费成人网| 久久激情五月婷婷| 久久婷婷综合激情| 国产福利一区二区| 国产精品电影一区二区| 日本高清不卡aⅴ免费网站| 亚洲欧美另类久久久精品2019| 97久久超碰国产精品电影| 1区2区3区欧美| 精品视频色一区| 日韩高清不卡在线| 久久久久国产精品免费免费搜索| 粉嫩一区二区三区性色av| 亚洲欧美怡红院| 在线国产亚洲欧美| 看电影不卡的网站| 国产日韩在线不卡| 一本久久a久久免费精品不卡| 亚洲成人午夜影院| 精品伦理精品一区| 92国产精品观看| 亚洲午夜精品在线| 精品动漫一区二区三区在线观看| 国产suv精品一区二区6| 一区二区三区四区不卡在线 | 亚洲图片有声小说| 日韩三级在线观看| 一区二区三区自拍| 91小视频在线观看| 婷婷丁香久久五月婷婷| 欧美精品一区二区三区蜜桃视频| 成人性生交大片免费看视频在线 | 亚洲精品高清视频在线观看| 欧美一级日韩不卡播放免费| 国产激情视频一区二区在线观看| 亚洲精品一二三| 欧美成人伊人久久综合网| 99久久国产综合色|国产精品| 日本最新不卡在线| 亚洲精品国产一区二区三区四区在线| 538在线一区二区精品国产| 成人黄色777网| 日本少妇一区二区| 亚洲色图视频网站| 久久综合999| 欧美久久高跟鞋激| 99久久精品情趣| 国产一区二区伦理| 日韩专区中文字幕一区二区| 日韩毛片精品高清免费| 久久蜜桃av一区精品变态类天堂| 欧美日韩国产一区| 92精品国产成人观看免费| 极品少妇xxxx精品少妇| 亚洲成a人v欧美综合天堂| 中文字幕在线不卡| 26uuu国产电影一区二区| 在线综合+亚洲+欧美中文字幕| av在线不卡观看免费观看| 美女尤物国产一区| 亚洲成人动漫在线免费观看| 伊人婷婷欧美激情| 国产精品久久综合| 国产日韩三级在线| www激情久久| 日韩美女视频一区二区在线观看| 欧美日韩电影在线| 在线亚洲高清视频| 91国偷自产一区二区三区成为亚洲经典 | 亚洲午夜成aⅴ人片| 亚洲欧洲成人av每日更新| 国产丝袜美腿一区二区三区| 欧美r级电影在线观看| 91精品婷婷国产综合久久性色 | 91精品午夜视频| 欧美日韩一区二区三区四区| 色综合久久中文综合久久97| 97精品国产97久久久久久久久久久久 | 精品少妇一区二区| 日韩一级二级三级精品视频| 91精品一区二区三区久久久久久 | 日韩国产成人精品| 秋霞午夜av一区二区三区| 日韩电影免费在线看| 视频一区二区欧美| 日本特黄久久久高潮| 老司机免费视频一区二区三区| 美女www一区二区| 久久国产综合精品| 国产a精品视频| 95精品视频在线| 色哟哟一区二区| 欧美日韩亚洲另类| 91麻豆精品国产91久久久资源速度| 欧美美女激情18p| 日韩一级黄色片| 日本一区二区三区高清不卡| 亚洲视频一区二区免费在线观看| 一区二区三区.www| 天天操天天色综合| 国产美女久久久久| www.99精品| 欧美日韩国产综合一区二区| 日韩欧美一区二区视频| 欧美国产精品一区二区| 亚洲精品网站在线观看| 免费在线一区观看| gogo大胆日本视频一区| 欧美美女一区二区在线观看| 国产亚洲1区2区3区| 亚洲婷婷综合久久一本伊一区| 午夜精品一区二区三区免费视频 | 日韩视频一区二区三区在线播放| 久久精品综合网| 一区二区在线观看免费视频播放| 老色鬼精品视频在线观看播放| 成人性生交大片免费看视频在线 | 亚洲男同性视频| 秋霞影院一区二区| 99久久免费精品高清特色大片| 91精品视频网| 亚洲欧洲精品一区二区三区不卡 | 成人动漫一区二区在线| 欧美精品日韩精品| 国产精品私房写真福利视频| 视频一区国产视频| a级高清视频欧美日韩| 日韩网站在线看片你懂的| 亚洲乱码日产精品bd| 精品一区在线看| 欧美午夜精品免费| 中文字幕精品—区二区四季| 日韩成人免费在线| 在线观看av一区二区| 国产精品伦一区二区三级视频| 日韩av一区二区三区四区| 在线观看视频一区二区| 久久久久高清精品| 久久精品国产99国产| 欧美日韩精品一区二区三区四区| 国产精品伦一区| 国产九色精品成人porny| 91精品国产欧美一区二区成人 | 欧洲一区二区三区在线| 国产精品午夜久久| 九九精品一区二区| 欧美一区二区三区免费观看视频| 亚洲自拍偷拍图区| 91麻豆国产精品久久| 中文字幕一区二区三区四区不卡 | 精品一区二区在线视频| 欧美色精品天天在线观看视频| 亚洲女同一区二区| 色综合久久久久| 亚洲欧美日韩国产综合| 97国产精品videossex| 国产精品蜜臀av| 成人精品鲁一区一区二区| 国产欧美日韩久久| 国产91精品久久久久久久网曝门|