亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        向多核平臺(tái)移植操作系統(tǒng)的研究

        2010-04-12 00:00:00田健生
        現(xiàn)代電子技術(shù) 2010年5期

        摘 要:隨著硬件技術(shù)的飛速發(fā)展,雙核乃至多核的計(jì)算機(jī)的普及,操作系統(tǒng)向多核平臺(tái)移植的需要也越來(lái)越迫切。詳細(xì)分析操作系統(tǒng)在向多CPU支持的平臺(tái)移植時(shí)可能遇見(jiàn)的偽共享問(wèn)題及優(yōu)先級(jí)錯(cuò)置問(wèn)題的產(chǎn)生原因,針對(duì)不同情況提出了按規(guī)范修改代碼、增加內(nèi)核調(diào)度監(jiān)控線程及將特定程序綁定在單CPU運(yùn)行等不同對(duì)策,并給出了實(shí)現(xiàn)方法。

        關(guān)鍵詞:多核平臺(tái);偽共享;線程優(yōu)先級(jí);操作系統(tǒng)

        中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1004-373X(2010)05-182-03

        Research on Transplanting of Operating System to Multi-core Environment

        CAI Mian,TIAN Jiansheng

        (College of Electronic Information and Control Engineering,Beijing University of Technology,Beijing,100124,China)

        Abstract:With the fast development of hardware and computers with mutli-core technology,the operating system is transplanted to mutli-core environment urgently.The 1 sharing and thread priority questions maybe found within the migrate process are analysed,for different conditions,different methods such as modifying the source code,adding a kernel thread to control priority and running special program on single CPU are proposed.

        Keywords:mutli-core environment;1 sharing;thread priority;operating system

        隨著硬件技術(shù)的飛速發(fā)展,雙核乃至多核的計(jì)算機(jī)的普及,運(yùn)用硬件資源為應(yīng)用程序提供運(yùn)行平臺(tái)的操作系統(tǒng)也要有相應(yīng)的調(diào)整?,F(xiàn)在絕大多數(shù)操作系統(tǒng)都支持多核平臺(tái)以及多線程及超線程技術(shù)。而對(duì)于安全有特殊需要的Linux安全操作系統(tǒng),在多核平臺(tái)上運(yùn)行多線程的應(yīng)用程序時(shí)可能會(huì)出現(xiàn)一些新的情況,而在特定條件下,它們會(huì)對(duì)系統(tǒng)的安全和穩(wěn)定構(gòu)成威脅。這些問(wèn)題主要體現(xiàn)在存儲(chǔ)緩存(Memory Caching)和線程優(yōu)先級(jí)(Thread Priority)方面。

        1 在內(nèi)存/緩存方面,在臨時(shí)存儲(chǔ)器共享的多核運(yùn)算平臺(tái)上可能出現(xiàn)偽共享問(wèn)題

        現(xiàn)在的主流個(gè)人計(jì)算機(jī)多核計(jì)算平臺(tái)中的每個(gè)執(zhí)行核都擁有自己的L1 Cache而共享L2 Cache,多核工作站也一般是每個(gè)執(zhí)行核擁有自己的Cache而共享內(nèi)存。由于CPU的處理速度遠(yuǎn)遠(yuǎn)高于內(nèi)存,總線等工作單元的存取,傳輸速度,為了更有效地利用CPU資源,一般把多個(gè)數(shù)據(jù)段組合在Cache的同一行中傳送給處理器,于是,在某個(gè)時(shí)間點(diǎn)上,一個(gè)處理器核上的L1 Cache與另一個(gè)處理器核上的L1 Cache可能會(huì)出現(xiàn)同步方面問(wèn)題。

        假設(shè)有兩個(gè)線程分別運(yùn)行在雙核處理器的兩個(gè)執(zhí)行核上,它們同時(shí)對(duì)鄰近的存儲(chǔ)器單元進(jìn)行讀寫(xiě)操作。由于操作系統(tǒng)對(duì)這兩個(gè)線程的管理是全局的,而Cache存儲(chǔ)器是基于局部性原理工作的,故不同的數(shù)據(jù)可能存放在Cache的同一行中。于是,即使某個(gè)線程所需的位于某個(gè)Cache塊中的數(shù)據(jù)尚未使用過(guò),操作系統(tǒng)還是可能會(huì)因?yàn)榱硪粋€(gè)處在其他執(zhí)行核上的線程使用了此Cache行中其他塊而將此行標(biāo)記為無(wú)效,要求其下一級(jí)的存儲(chǔ)單元重新讀入這行數(shù)據(jù)。如果兩個(gè)線程都要對(duì)這個(gè)Cache塊進(jìn)行連續(xù)多次的寫(xiě)操作(比如循環(huán)語(yǔ)句中的循環(huán)次數(shù)計(jì)數(shù)變量),使得這個(gè)塊要不斷的在兩個(gè)CPU間傳遞,從而極大的影響系統(tǒng)運(yùn)行速度。這就是常見(jiàn)的偽共享(False Sharing)問(wèn)題,如圖1所示。

        圖1 共享L2 Cache的雙核系統(tǒng)中的

        False Sharing問(wèn)題

        這會(huì)導(dǎo)致一些在單核平臺(tái)上運(yùn)行很穩(wěn)定的程序在多核平臺(tái)上卻不能正常工作。對(duì)于此問(wèn)題,文獻(xiàn)[1]給出了詳細(xì)說(shuō)明。

        而在安全操作系統(tǒng)中,由于有對(duì)隱通道進(jìn)行分析審計(jì)的安全功能模塊存在,在處理器進(jìn)行此嚴(yán)重異常操作的情況下應(yīng)該會(huì)進(jìn)行報(bào)警并執(zhí)行相應(yīng)的安全措施,從而使系統(tǒng)無(wú)法正常運(yùn)行。

        事實(shí)上,偽共享問(wèn)題早在十幾年前安裝有多個(gè)單芯片處理器的大規(guī)模并行處理機(jī)出現(xiàn)時(shí)就已經(jīng)浮出水面,十幾年來(lái),國(guó)內(nèi)外對(duì)其進(jìn)行了大量的研究,取得了諸多進(jìn)展,但由于此問(wèn)題起源于硬件架構(gòu),所以一直沒(méi)能找到一個(gè)完美的解決辦法。

        現(xiàn)在一般的處理技術(shù)有:在編程、編譯時(shí)將非共享的數(shù)據(jù)分放到不同的Cache行;將全局變量復(fù)制到一個(gè)函數(shù)內(nèi)的局部變量,在函數(shù)結(jié)束前再把它復(fù)制回去;在進(jìn)程中,將數(shù)據(jù)結(jié)構(gòu)集中處理并使每個(gè)數(shù)據(jù)元素(可以是確認(rèn)不會(huì)引起偽共享的幾個(gè)變量,以避免因在Cache行中填充大量空白而浪費(fèi)太多系統(tǒng)資源)占有一個(gè)Cache行;將引發(fā)了偽共享的線程移動(dòng)到一個(gè)執(zhí)行核上。

        應(yīng)該注意到,上面提到的前三種方法都要對(duì)源代碼進(jìn)行分析和改寫(xiě),這對(duì)整個(gè)操作系統(tǒng)以及其下運(yùn)行的大量應(yīng)該程序來(lái)說(shuō)工作量太過(guò)巨大,而最后一個(gè)方法雖然可以實(shí)時(shí)的處理偽共享問(wèn)題,可它要對(duì)Cache進(jìn)行不斷的監(jiān)控,其造成的額外系統(tǒng)資源開(kāi)銷過(guò)大,而且,如果是在講求所有操作行為都應(yīng)該是可預(yù)期的可信計(jì)算系統(tǒng)中,多出這樣一個(gè)具有最高權(quán)限的進(jìn)程很可能會(huì)與已有的TSP安全策略(TCB Security Policy)產(chǎn)生沖突,影響到系統(tǒng)的平穩(wěn)運(yùn)行。

        綜上,作為以安全穩(wěn)定為重點(diǎn)的操作系統(tǒng),在升級(jí)至多核平臺(tái)后應(yīng)以犧牲部分性能為代價(jià)對(duì)未經(jīng)改寫(xiě)的源代碼進(jìn)行兼容處理,即對(duì)其的編譯執(zhí)行提供兼容模式,令其只在一個(gè)執(zhí)行核上運(yùn)行。

        2 在多核平臺(tái)上,采用與單核平臺(tái)相同的進(jìn)程優(yōu)先級(jí)策略可能會(huì)產(chǎn)生異常的程序行為

        在單核平臺(tái)上,因?yàn)椴僮飨到y(tǒng)不會(huì)在高優(yōu)先級(jí)線程執(zhí)行時(shí)為低優(yōu)先級(jí)線程分配CPU資源,高優(yōu)先級(jí)線程可以一直占有系統(tǒng)資源而不會(huì)被低優(yōu)先級(jí)線程干擾。

        例如,Linux內(nèi)核的進(jìn)程調(diào)度采用搶占式優(yōu)先權(quán)調(diào)度算法(又稱可剝奪調(diào)度,Preemptive Scheduling) 該算法的本質(zhì)就是系統(tǒng)中當(dāng)前運(yùn)行的進(jìn)程永遠(yuǎn)是可運(yùn)行進(jìn)程中優(yōu)先權(quán)最高的那個(gè)。 在這種方式下,系統(tǒng)把處理器分配給優(yōu)先權(quán)最高的進(jìn)程,使之執(zhí)行。但是只要一出現(xiàn)了另一個(gè)優(yōu)先權(quán)更高的進(jìn)程時(shí),調(diào)度程序就暫停原最高優(yōu)先權(quán)進(jìn)程的執(zhí)行,而將處理器分配給新出現(xiàn)的優(yōu)先權(quán)最高的進(jìn)程,即剝奪當(dāng)前進(jìn)程的運(yùn)行。因此,在采用這種調(diào)度算法時(shí),每當(dāng)出現(xiàn)一新的可運(yùn)行進(jìn)程,就將它和當(dāng)前運(yùn)行進(jìn)程進(jìn)行優(yōu)先權(quán)比較,如果高于當(dāng)前進(jìn)程,將觸發(fā)進(jìn)程調(diào)度。

        而在多核平臺(tái)上,由于有兩個(gè)或更多的CPU,線程可以在同一時(shí)間運(yùn)行,于是,低優(yōu)先級(jí)線程完全有可能會(huì)影響到高優(yōu)先級(jí)線程的工作。

        考慮以下情況:在操作系統(tǒng)中,一條安全策略為:當(dāng)用戶要求運(yùn)行某程序時(shí),先對(duì)該程序進(jìn)行安全性、完整性和有效性進(jìn)行檢查,通過(guò)后則進(jìn)行運(yùn)行。以上步驟由兩個(gè)線程A,B實(shí)現(xiàn)。線程A負(fù)責(zé)對(duì)存儲(chǔ)器內(nèi)某一可執(zhí)行程序中數(shù)據(jù)的安全性、完整性、有效性進(jìn)行檢查分析,線程B執(zhí)行這個(gè)程序。線程A為實(shí)時(shí)線程,具有最高優(yōu)先級(jí),并且其thread_info描述符中的preempt_count字段大于0,禁止其他線程搶占。 B為普通線程。在單核平臺(tái),由于一定是高優(yōu)先級(jí)線程A執(zhí)行結(jié)束后才會(huì)執(zhí)行B,該程序可以正常有效的運(yùn)行??稍诙嗪似脚_(tái),由于A和B可以運(yùn)行在不同的CPU上,很可能在線程A正在進(jìn)行檢測(cè)時(shí),線程B便開(kāi)始運(yùn)行了。顯然,該情況將會(huì)對(duì)系統(tǒng)的安全穩(wěn)定構(gòu)成嚴(yán)重威脅。

        事實(shí)上,在多核平臺(tái)上,如果開(kāi)發(fā)人員還是依照“高優(yōu)先級(jí)線程不會(huì)受低優(yōu)先級(jí)線程影響”的思路進(jìn)行軟件開(kāi)發(fā),則其寫(xiě)出的代碼會(huì)很不穩(wěn)定。

        對(duì)于此情況,在系統(tǒng)開(kāi)發(fā)時(shí)有必要引入柵障(barrier)機(jī)制(見(jiàn)圖2)。柵障機(jī)制是一種同步手段,它可以保持線程集合在其操作控制流的某個(gè)邏輯點(diǎn)上的協(xié)調(diào)。

        圖2 柵障使同一線程組中所有線程都執(zhí)行到

        了某一邏輯點(diǎn)后才能再進(jìn)行

        采用這種手段,操作線程集內(nèi)的一個(gè)線程必須等待該集合中所有線程都完成某操作后才能繼續(xù)執(zhí)行。而在對(duì)安全要求高于其他一切的安全操作系統(tǒng)中,對(duì)于在單核環(huán)境下開(kāi)發(fā)的應(yīng)用程序,應(yīng)該對(duì)其代碼進(jìn)行改寫(xiě)后重新編譯。同樣,對(duì)未經(jīng)改寫(xiě)的程序,應(yīng)該限定其只能在一個(gè)執(zhí)行核上執(zhí)行。

        3 將特定程序限定在特定執(zhí)行核運(yùn)行的實(shí)現(xiàn)

        針對(duì)多核設(shè)計(jì)的操作系統(tǒng)對(duì)多核的運(yùn)用主要有以下三種模式:

        非對(duì)稱多處理(Asymmetric Multiprocessing,AMP)——每個(gè)CPU內(nèi)核運(yùn)行一個(gè)獨(dú)立的操作系統(tǒng)或同一操作系統(tǒng)的獨(dú)立實(shí)例(instantiation)。

        對(duì)稱多處理(Symmetric Multiprocessing,SMP)——一個(gè)操作系統(tǒng)的實(shí)例可以同時(shí)管理所有CPU內(nèi)核,且應(yīng)用并不綁定某一個(gè)內(nèi)核。

        混合多處理(Bound Multiprocessing,BMP)——一個(gè)操作系統(tǒng)的實(shí)例可以同時(shí)管理所有CPU內(nèi)核,但每個(gè)應(yīng)用程序都被鎖定于某個(gè)指定的核心。

        目前的公版Linux系統(tǒng)內(nèi)核都采用對(duì)稱多處理技術(shù)(SMP),它可以動(dòng)態(tài)地向應(yīng)用程序分配資源,從而最大程度地提高硬件資源的利用率?,F(xiàn)在為了保證系統(tǒng)安全,要使它兼容混合多處理(BMP),即對(duì)于默認(rèn)程序使用對(duì)稱多處理,而對(duì)于指定的程序,在運(yùn)行時(shí)則把它鎖定于某個(gè)指定的核心,為了實(shí)現(xiàn)這個(gè)目的,需要對(duì)內(nèi)核代碼中負(fù)責(zé)進(jìn)程調(diào)度的部分進(jìn)行一些改寫(xiě),在Shell中加入選擇運(yùn)行模式的功能,如要運(yùn)行X-windows環(huán)境,還應(yīng)在其中加入選擇運(yùn)行模式功能。

        參考文獻(xiàn)

        [1]Eggers S,JeremiassenT.Eliminating False Sharing.Proc.Int′l Conf.Parallel Processing[C].1991,1:377-381.

        [2]Shameem Akhter,Jason Roberts.Multi-Core Programming: Increasing Performance through Software Multi-threading[M].李寶峰,富弘毅,李韜,譯.北京:電子工業(yè)出版社,2007.

        [3]Tian Tian,Chiu-Pi Shih.Software Techniques for Shared-Cache Multi-Core Systems.Intel官方技術(shù)支持網(wǎng)站.

        [4]Jyh-Herng Chow and Vivek Sarkar.False Sharing Elimination by Selection of Runtime Scheduling Parameters.International Conference on Parallel Processing[C].1997:11-15.

        [5]Mahmut Kandemir,Alok Choudhary,Ramanujam J,et al.Reducing False Sharing and Improving Spatial Locality in a Unified Compilation Framework[J].IEEE Trans.on Parallel and Distrbuted Systems,2003,14(4):337-354.

        [6]Richard Stevens W,Stephen A Rago.Advance Programming in the UNIX Environment[M].北京:人民郵電出版社,2006.

        [7]何軍,王飆.多核處理器的結(jié)構(gòu)設(shè)計(jì)研究[J].計(jì)算機(jī)工程,2007,33(16):208-210.

        [8]趙吉志.Intel雙核處理器緩存介紹[J].科技浪潮,2007(5):42-44.

        [9]李芳社.虛擬化技術(shù)在嵌入式系統(tǒng)中的應(yīng)用[J].現(xiàn)代電子技術(shù),2008,31(16):43-45,50.

        [10]屈文新,樊曉椏,張盛兵.多核多線程處理器存儲(chǔ)技術(shù)研究進(jìn)展[J].計(jì)算機(jī)科學(xué),2007,34(4):13-16.

        丁煜.雙核技術(shù)問(wèn)答[J].科技浪潮,2006(1):24-26.

        成年网站在线91九色| 四虎欧美国产精品| 国产精品电影久久久久电影网| 最新日本久久中文字幕| 国产人成视频在线视频| 又长又大又粗又硬3p免费视频| 精品国产网红福利在线观看| 国产免费人成视频在线观看播放| 人妻夜夜爽天天爽三区麻豆av| 亚洲精品无码专区| 国产香蕉一区二区三区在线视频| 少妇熟女淫荡丰满| 国产性感午夜天堂av| 含紧一点h边做边走动免费视频| 精品久久久久久中文字幕大豆网 | 日本女同av在线播放| 欧美精品欧美人与动人物牲交| 国产熟人av一二三区| 精品国产福利片在线观看| 色综合中文字幕综合网| 中文字幕无码中文字幕有码| 亚洲日韩中文字幕一区| 国产精品国产三级国产av创| 久久精品国产亚洲av豆腐| (无码视频)在线观看| 亚洲色自偷自拍另类小说| 亚洲AV无码乱码一区二区三区 | 日本一级片一区二区三区| 日本少妇高潮喷水xxxxxxx | 中文字幕一区日韩精品| 在线看亚洲十八禁网站| 成人综合亚洲国产成人| 亚洲蜜臀av一区二区三区| 少妇愉情理伦片丰满丰满午夜| 亚洲爆乳大丰满无码专区| 精品日韩一区二区三区av| 人人妻人人做人人爽| 国产亚洲精久久久久久无码77777| 亚洲国产免费公开在线视频| 国产精品国产三级国产专播下| 久激情内射婷内射蜜桃人妖 |