基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究

基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究

ID:21893640

大?。?2.50 KB

頁數(shù):5頁

時(shí)間:2018-10-25

基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究_第1頁
基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究_第2頁
基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究_第3頁
基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究_第4頁
基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究_第5頁
資源描述:

《基于smp結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、基于SMP結(jié)構(gòu)的linux內(nèi)核進(jìn)程調(diào)度的研究:在給定的時(shí)間里,CPU能達(dá)到的最高速度總是給定的,再要提高速度就要設(shè)法增加其并行度,就是在計(jì)算機(jī)中使用多個(gè)處理器,即使用SMP對(duì)稱多處理器技術(shù).作為一種開源的操作系統(tǒng),,linux提供了對(duì)SMP結(jié)構(gòu)很好的支持,SMP系統(tǒng)中最關(guān)鍵的技術(shù)是如何更好地解決多個(gè)處理器的相互通訊和協(xié)調(diào)問題以及l(fā)inux內(nèi)核對(duì)于SMP結(jié)構(gòu)的進(jìn)程調(diào)度問題.  關(guān)鍵詞:SMPlinux進(jìn)程  :TP316.8:A:1007-9416(2011)11-0089-02    Linux操作系統(tǒng)作為UNIX操作系

2、統(tǒng)的一種克隆系統(tǒng)最初是由LinuasTorvalds編寫,后來借助InterX絡(luò),在全世界計(jì)算機(jī)愛好者的共同努力下稱為一款優(yōu)秀的開源操作系統(tǒng)。linux起初是為單處理機(jī)設(shè)計(jì)的.隨著并行計(jì)算的發(fā)展,通過SMP所獲得的性能要比幾臺(tái)獨(dú)立的機(jī)器組合起來更加的便宜和簡(jiǎn)單,因此使其得到快速的發(fā)展。linux內(nèi)核從2.0版本就開始支持SMP系統(tǒng)。文中以Linux2.4.0版為基礎(chǔ),分析闡述了Linux內(nèi)核是如何支持SMP體系結(jié)構(gòu)的以及SMP對(duì)linux內(nèi)核進(jìn)程調(diào)度的處理機(jī)制?! ?、SMP系統(tǒng)模型  SMP是指在一個(gè)計(jì)算機(jī)上匯集了一組

3、處理器(多CPU),它們通常物理上也采用同一種CPU,所有的CPU通過同一條總線共享同一個(gè)內(nèi)存以及所有的外設(shè),為了減少訪問內(nèi)存的沖突,SMP結(jié)構(gòu)中的各個(gè)CPU通常都有自己的高速緩存。  在SMP結(jié)構(gòu)中,高速緩存的作用比在單處理器結(jié)構(gòu)中更為重要,不僅可以提高取指令和讀寫數(shù)據(jù)的速度,還有利于減少多個(gè)CPU在訪問內(nèi)存時(shí)的沖突。如果內(nèi)存在同一時(shí)間內(nèi)受到多個(gè)CPU的訪問,每個(gè)CPU把自己的高速緩沖存滿之后,就可以運(yùn)行相當(dāng)長(zhǎng)的時(shí)間而無需經(jīng)常地讀、寫物理上的內(nèi)存。  linux內(nèi)核要支持SMP,必須修改基于UP的內(nèi)核代碼以適應(yīng)SMP,

4、主要涉及部分就是基于SMP的啟動(dòng)和進(jìn)程調(diào)度問題?! ?、linux內(nèi)核在SMP結(jié)構(gòu)系統(tǒng)的引導(dǎo)  操作系統(tǒng)內(nèi)核的映像必須存儲(chǔ)在不揮發(fā)的介質(zhì)中.當(dāng)系統(tǒng)開機(jī)加電時(shí).CPU從某個(gè)特殊的地址開始執(zhí)行指令,這段指令就是引導(dǎo)加載程序,負(fù)責(zé)將linux內(nèi)核的映像從Flash或EPROM中加載入內(nèi)存,這段程序有三部分,用匯編寫成:bootsect.S,setup.S,video.S.對(duì)i386的CPU而言,源碼放在linux系統(tǒng)的arch/i386/boot目錄下,從線性地址0xffff0執(zhí)行這段程序之后,將linux內(nèi)核的映像裝入內(nèi)存,

5、CPU通過一條長(zhǎng)線程轉(zhuǎn)移指令轉(zhuǎn)到映像代碼段開頭的入口startup_32,關(guān)鍵啟動(dòng)代碼如下:  ENTRY(stext)  ENTRY(_stext);  startup_32:  cld  movl$(__KERNEL_DS),%values  movl陎,%ds  movl陎,%es  .........  #ifdefCONFIG_SMP  orp_init()進(jìn)行SMP結(jié)構(gòu)的初始化,并創(chuàng)建起多個(gè)進(jìn)程,從而可以由多個(gè)處理器同事參與處理時(shí),才啟動(dòng)所有的”應(yīng)用處理器”,讓他們?cè)谕瓿勺陨淼某跏蓟院笸度脒\(yùn)行。一旦各個(gè)AP

6、都已投入運(yùn)行,這種暫時(shí)的主次關(guān)系便結(jié)束,從此之后便一律平等了,smp_init()函數(shù)的代碼如下:  staticvoid__initsmp_init(void)  {  mp_boot_cus();  smp_threads_ready=1;  mp_mence();  }  3、linux內(nèi)核在SMP結(jié)構(gòu)中的進(jìn)程調(diào)度  3.1SMP結(jié)構(gòu)進(jìn)程的互斥  linux系統(tǒng)中,進(jìn)程間的互斥通信是一個(gè)必須要考慮的問題,在單處理器結(jié)構(gòu)中,各個(gè)進(jìn)程間實(shí)際上同一時(shí)間點(diǎn)上只有一個(gè)進(jìn)程在運(yùn)行。但在SMP結(jié)構(gòu)中,由于多個(gè)處理器在獨(dú)立的運(yùn)行,

7、即使在單條指令中完成的操作也有可能受到干擾,有些在單處理器中的“原子操作”不再是原子了?! ≡趌inux內(nèi)核中使用自旋鎖的方式來實(shí)現(xiàn)多個(gè)進(jìn)程通信之間的互斥問題。關(guān)鍵代碼如下:  inlineintspin_trylock(spinlock_t*lock)  {  charoldval;  __asm____volatile__(  “xchgb

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。