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

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

ID:21893640

大?。?2.50 KB

頁數(shù):5頁

時間:2018-10-25

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

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

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

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

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

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

5、CPU通過一條長線程轉(zhuǎn)移指令轉(zhuǎn)到映像代碼段開頭的入口startup_32,關鍵啟動代碼如下:  ENTRY(stext)  ENTRY(_stext);  startup_32:  cld  movl$(__KERNEL_DS),%values  movl陎,%ds  movl陎,%es  .........  #ifdefCONFIG_SMP  orp_init()進行SMP結(jié)構(gòu)的初始化,并創(chuàng)建起多個進程,從而可以由多個處理器同事參與處理時,才啟動所有的”應用處理器”,讓他們在完成自身的初始化以后投入運行。一旦各個AP

6、都已投入運行,這種暫時的主次關系便結(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)中的進程調(diào)度  3.1SMP結(jié)構(gòu)進程的互斥  linux系統(tǒng)中,進程間的互斥通信是一個必須要考慮的問題,在單處理器結(jié)構(gòu)中,各個進程間實際上同一時間點上只有一個進程在運行。但在SMP結(jié)構(gòu)中,由于多個處理器在獨立的運行,

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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