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

        ?

        基于UEFI規(guī)范的BIOS多線程運行機制研究與設(shè)計

        2014-07-24 19:01:06張遠虎相明瓊吳猷楊勇
        微型電腦應用 2014年12期
        關(guān)鍵詞:狀態(tài)機線程隊列

        張遠虎,相明瓊,吳猷,楊勇

        基于UEFI規(guī)范的BIOS多線程運行機制研究與設(shè)計

        張遠虎,相明瓊,吳猷,楊勇

        對基于UEFI規(guī)范的 BIOS(簡稱UEFI BIOS)的運行環(huán)境,執(zhí)行流程及其框架結(jié)構(gòu)進行了詳細分析;基于OS下的多線程思想,提出了基于UEFI BIOS環(huán)境下的多線程設(shè)計理念和方案;嚴格遵循UEFI 標準,實現(xiàn)并驗證了基于UEFI的多線程方案,完成了啟動過程中多線程庫的研究。經(jīng)實際應用驗證,方法簡便,具有較強的實用性。

        UEFI;BIOS;多線程

        0 引言

        BIOS(Basic Input Output System[1]),它是計算機運行的第一個程序,該程序保存了電腦的詳細硬件信息,擔負著初始化計算機硬件,檢測硬件功能以及引導操作系統(tǒng)的作用。2000年,Intel公司發(fā)明了用以規(guī)范BIOS開發(fā)的可擴展固件接口(Extensible Firmware Interface,EFI)[2],用以規(guī)范PC固件體系結(jié)構(gòu)、接口和服務的建議標準。之后,業(yè)界多家著名公司制定了新的國際標準UEFI規(guī)范,基于UEFI規(guī)范的 BIOS又稱為UEFI BIOS。本文從UEFI BIOS的架構(gòu)著手,分析UEFI BIOS啟動的各個階段,結(jié)合實例剖析了多線程這項復雜技術(shù)的設(shè)計思路和實現(xiàn)方法。

        1 UEFI BIOS的先進性

        近年來,計算機硬件技術(shù)更新迅速,傳統(tǒng)的 BIOS(Legacy BIOS)技術(shù)由于功能的局限性,已成為技術(shù)進步的包袱。目前,最新的UEFI BIOS日趨成熟,其設(shè)置操作均模仿 Windows操作系統(tǒng)下的使用體驗,支持鼠標點擊來切換菜單、調(diào)整配置選項。下面從擴展性和兼容性兩方面簡要說明遵循UEFI規(guī)范的BIOS相比Legacy BIOS的先進性:

        (1)高擴展性

        UEFI BIOS代碼98%以上使用C語言編寫,內(nèi)置圖形驅(qū)動功能,提供強大的連網(wǎng)功能,支持32位或64位運行模式,突破了傳統(tǒng)16位代碼的尋址能力,達到處理器的最大尋址,提高了BIOS代碼的運行速度。另一方面,使用模塊化設(shè)計,在邏輯上分為操作系統(tǒng)軟件管理和硬件控制兩部分,操作系統(tǒng)軟件管理提供一個開放的可編程的接口,為系統(tǒng)的后期擴展提供了無線的可能性。以系統(tǒng)診斷功能為例,在不開啟操作系統(tǒng)情況下,UEFI BIOS可實現(xiàn)通過互聯(lián)網(wǎng)對計算機遠程故障排查的功能。

        (2)良好兼容性

        UEFI借鑒了以“Byte Code”形式存在的JAVA語言能夠在多種平臺上運行的編譯模式,從而實現(xiàn)了基于UEFI規(guī)范的BIOS的良好兼容性。UEFI BIOS的驅(qū)動由EFI Byte Code(EFI字節(jié)代碼)編寫而成,EFI Byte Code是一組用于UEFI驅(qū)動的虛擬機器指令,必須在UEFI驅(qū)動運行環(huán)境下被編譯、運行,這種中間件機制使得UEFI BIOS具有更好的兼容性,同時也降低了UEFI驅(qū)動編寫的復雜性,縮短了系統(tǒng)的研發(fā)時間,降低了計算機配件供應商的準入門檻。

        2 UEFI相關(guān)技術(shù)簡介

        2.1 UEFI框架

        UEFI規(guī)范定義了完整的標準接口和數(shù)據(jù)結(jié)構(gòu),UEFI規(guī)范和傳統(tǒng)的BIOS本質(zhì)上是沒有區(qū)別的,都是為了能夠把不同的硬件平臺封裝成為操作系統(tǒng)(OS)能夠識別的統(tǒng)一軟件接口,使得所有的硬件平臺都能用統(tǒng)一的接口、協(xié)議和服務展現(xiàn)出來。從整個平臺的架構(gòu)上看,它處于系統(tǒng)抽象層(System Abstract Layer)的地位,多線程服務在uFFI架構(gòu)中的位置,如圖1所示:

        圖1 UEFI系統(tǒng)抽象

        從圖1中可知,UEFI是對整個硬件平臺的軟件抽象,它暴露給OS的只有標準的服務和接口。從軟件架構(gòu)來區(qū)分,可分成3層[3]:處理器抽象層(PAL,Processor Abstraction Layer)、系統(tǒng)抽象層(SAL, System Abstraction Layer)、可擴展固件接口(EFI,Extensible Firmware Interface)。UEFI僅支持單線程,只支持時鐘中斷,這也是硬件設(shè)備的操作[4]只能使用輪詢的方式來操作的根本原因。

        2.2 PI(Platform Initialization)規(guī)范

        UEFI規(guī)范定義的都是接口,對于怎么去實現(xiàn)這些接口該規(guī)范并沒有做過多的限制。顯然,通過程序?qū)崿F(xiàn)這套規(guī)范是很復雜的。UEFI論壇定義出了平臺初始化標準,被命名為PI(Platform Initialization)。平臺初始化分階段地把UEFI接口的實現(xiàn)定義成了7個階段,他們分別是SEC,PEI,DXE,BDS,TSL,Runtime,AfterLife。PI和uFFI之間的關(guān)系,如圖2所示:

        圖2 PI和uEFI關(guān)系

        從圖2中可知,整個PI定義的就想一個英文字母H的框架。形象地理解為,往這個框架里面可以填入各個模塊。經(jīng)過所有的模塊的運行,UEFI包裝并提供了所有的 UEFI規(guī)范中定義的接口和協(xié)議。

        3 UEFI BIOS的執(zhí)行流程

        UEFI BIOS實際上是基于Intel的Framework,嚴格遵循PI標準定義來搭建整個UEFI環(huán)境,并向OS提供標準的可擴展接口。PI標準定義了SEC,PEI,DXE,BDS,TSL,RT,AL共7個階段,如圖3所示:

        圖3 uEFI的各個階段示意圖

        4 多線程設(shè)計理念

        眾所周知多線程在多核系統(tǒng)上有很多的優(yōu)點,但是由于多年前我們的處理器只是單核,加上設(shè)計多線程的軟件產(chǎn)品是更為復雜。大多數(shù)軟件,包括最新的UEFI BIOS都是單線程的。

        4.1 系統(tǒng)設(shè)計原則

        遵循uEFI 規(guī)范,對其他EFI組件不做修改。要做到更好的模塊化;

        獨立的模塊,以Protocol的形式提供線程服務,這樣才符合uEFI 的宗旨易于擴展和升級;

        保證以實現(xiàn)規(guī)定的順序加載EFI驅(qū)動,并保證驅(qū)動程序的完整性;

        保證EFI Shell命令,EFI應用程序以及OS加載器的完整性;

        保證多線程服務的可靠性,包括線程的創(chuàng)建,取消,終止;

        保證多線程服務變量的一致性,包括全局變量和局部變量;

        保證多線程服務調(diào)度的合理性,包括避免調(diào)度可能出現(xiàn)的死鎖;

        采用線程1:1模式來映射LWP,且保證每一個CPU內(nèi)核運行一個線程。

        4.2 系統(tǒng)設(shè)計方案

        本論文在DXE階段和BDS階段設(shè)計的多線程服務庫主要保障DXE驅(qū)動程序加載的正確性和驅(qū)動程序安裝服務的完整性。保證在DXE后期和BDS階段,其他驅(qū)動使用的線程服務的合法無誤。本論文中設(shè)計的線程調(diào)度算法,默認是EFI_SCHED_FCFS,當然這是最基本的算法的實現(xiàn),另外還有EFI_SCHED_QUEUE,EFI_SCHED_OTHER。

        EFI_SCHED_FCFS

        FCFS顯然是最簡單,最容易操作的算法。而一切更為復雜的算法,也大多都是基于這個算法做的更深入的修改。

        EFI_SCHED_QUEUE

        該算法是就是創(chuàng)建多個隊列,每個隊列里面存放等待線程。它可以提高系統(tǒng)吞吐量,提供叫好的I/O設(shè)備利用率。往往這個算法也結(jié)合優(yōu)先級算法一起使用達到更好的效果。

        EFI_SCHED_OTHER

        EFI_SCHED_OTHER是本論文中增強的調(diào)度算法,該算法是融合了先到先服務算法,多級隊列調(diào)度算法,優(yōu)先級算法為一體的綜合算法。所以,默認算法有著比較均衡的性能指標。能夠取各種算法的優(yōu)點,同時又能避開各個算法的缺點。基本上達到了取長補短的目的。

        4.3 多線程的總體架構(gòu)設(shè)計

        本論文的設(shè)計方案,其多線程服務庫是通過EFI驅(qū)動在DXE階段加載后建立的標準的uEFI 協(xié)議實現(xiàn)。由于標準的EDK[5]并沒有提供創(chuàng)建這些服務程序的驅(qū)動,因此必須首先要開發(fā)建立多線程服務的EFI驅(qū)動。

        最底層是真正的硬件平臺,也就是物理多核 CPU。它是真實存在的物理設(shè)備,沒有被任何軟件抽象?;?uEFI的協(xié)議,實現(xiàn)了線程服務的調(diào)度,創(chuàng)建,取消,同步等工作。

        4.4 uEFI 多線程服務的實現(xiàn)

        多線程服務是線程庫的底層實現(xiàn)。包含線程的狀態(tài)機設(shè)計,硬件處理器的狀態(tài)機設(shè)計,以及線程服務的核心調(diào)度器的設(shè)計,3個大方面。

        4.4.1 線程的狀態(tài)機

        線程在調(diào)度器的協(xié)調(diào)下能夠正常地工作,關(guān)于線程的狀態(tài)切換,這里做一個比較直觀的說明,如圖4所示:

        圖4 線程的狀態(tài)機

        從圖4 中可以看出:

        線程被創(chuàng)建以后,該線程就成為默認狀態(tài);

        隨后會被創(chuàng)建線程的函數(shù)插入到線程等待隊列中成為線程隊列等待狀態(tài);

        線程如果被調(diào)度,則該線程就會運行起來,成為線程運行狀態(tài);

        線程如果正在等待,同時又有取消的請求,那么調(diào)度器就會取消線程,該線程進入到取消狀態(tài);

        最后線程處理完畢,或者直接調(diào)用線程服務中的退出函數(shù)達到退出狀態(tài)。

        4.4.2 處理器的狀態(tài)機

        在線程的啟動,運行,退出的過程中,線程的服務會對處理器做出不同的操作。有時候需要等待 CPU,有時候需要啟動CPU,等等,CPU狀態(tài)機示意圖,如圖5所示:

        圖5 處理器的狀態(tài)機

        如圖5所示,處理器一共有4種狀態(tài):

        處理器在多處理器服務的操作下能夠?qū)崿F(xiàn)關(guān)閉,開啟的狀態(tài)。

        線程服務則可以利用處理器空閑的狀態(tài)來調(diào)度線程,并運行之。

        4.4.3 多線程服務協(xié)議

        多線程服務協(xié)議提供了一種比較通用的uEFI 協(xié)議來完成多線程的各種工作,EFI_THREAD_SERVICES_PROTOCOL這個協(xié)議服務協(xié)議就是本論文開發(fā)的重中之重。在這個協(xié)議里面提供了所有多線程服務鎖需要的功能函數(shù)。簡單描述一樣如下:

        ThreadCreate創(chuàng)建一個線程

        ThreadDetach處理等待某個線程

        ThreadJoin同步等待一個線程

        ThreadExit終止一個線程

        ThreadCancel脫離一個同步好的線程

        ThreadSelf獲取自身的線程ID

        ThreadMutexLock線程對變量加鎖

        ThreadMutexUnlock線程對變量解鎖

        ThreadMutexTryLock線程嘗試對變量加鎖

        4.4.4 線程調(diào)度器的程序?qū)崿F(xiàn)

        本論文的調(diào)度器在默認情況下使用EFI_SCHED_FCFS。線程調(diào)度器是多線程服務的核心,它的訪問對象就是32個循環(huán)隊列構(gòu)成的數(shù)組。對于每一個特定的隊列,則每次都去詢問并執(zhí)行。每一個循環(huán)隊列在被調(diào)度的過程中是按照入隊的先后順序來調(diào)度的。在優(yōu)先級調(diào)度的時候,是按照在創(chuàng)建線程的時候,默認的優(yōu)先級數(shù)來調(diào)度的。

        在調(diào)度器的內(nèi)部還有一個計數(shù)器,確保每次調(diào)度線程都是較高優(yōu)先級的。并且級別較低的線程等待時間超過規(guī)定時間,那么調(diào)度器會自動提升低優(yōu)先級的線程優(yōu)先級數(shù)。線程調(diào)度器的核心流程圖,如圖6所示:

        圖6 調(diào)度器核心流程

        4.5 uEFI 多線程程序的應用

        多線程的優(yōu)勢在其他的操作系統(tǒng)下面已經(jīng)都得到了論證。那么這個小節(jié)主要介紹多線程的在uEFI 下的應用。

        uEFI 的快速啟動

        最剛性的需求是WIN8對OS和BIOS的啟動時間做了非常精確的定義。比如在筆記本電腦上,用SSD的情況下,必須要在2秒內(nèi)進OS;臺式機則是4秒。這對于傳統(tǒng)的BIOS來說是一項很大的挑戰(zhàn)。顯然,多線程在這個方面表現(xiàn)是客觀的。不過目前,BIOS行業(yè)還沒有采用這一技術(shù)。可以預見的未來,在BIOS快速啟動這一塊,多線程可以做出很多的貢獻。

        uEFI 應用程序的性能提高

        在uEFI 的環(huán)境下,現(xiàn)在已經(jīng)越來越多的普通的EFI應用程序大量出現(xiàn)在研發(fā)部門和工廠部門。在市場上也出現(xiàn)了多種多樣的EFI應用程序。尤其uEFI 在畫圖的方面原本就做了很多的提高。在用到Hii的時候,那么多線程顯得尤為有優(yōu)勢。純軟件的設(shè)計和操作,正是多線程的強項。

        uEFI 應用程序的反應速度提高

        多線程能夠提高那些數(shù)量計算較多的反應速度。比如現(xiàn)在很多大廠(HP, DELL等等),他們在主板出貨之前都會做嚴格的硬件診斷。而這些診斷程序都是在EFI SHELL下運行的。其中不乏有大量數(shù)據(jù)處理的EFI應用程序。那么,這個時候,多線程服務就派上用場了。

        5 總結(jié)

        本文通過研究uEFI BIOS的架構(gòu)和實現(xiàn)原理,具體實現(xiàn)了uEFI 環(huán)境下的多線程服務,豐富并增強了uEFI 這個可擴展接口的標準。該多線程服務,可以提高應用程序的性能,可以提高加快BIOS的啟動速度,可以提高應用程序的反應速度等。因此,該多線程服務技術(shù)有很高的使用價值。

        [1] 陳文欽.BIOS研發(fā)技術(shù)剖析[M].北京:清華大學出版社,2001.9.

        [2] Intel Inc..Extensible Firmware Interface Specification[J]. Intel Inc.,2002,12

        [3] Intel Inc..Intel?Itanium?Processor Family System Abstraction Layer Specification Version 3.4[J].Intel Inc.,2009,5

        [4] Lubomir F.Bic,Alan C.Shaw.Operating System Principles[M],北京:清華大學出版社,2004.

        [5] Intel Inc..EDK Getting Started Guide[J],2005, 6

        Research and Design Of BIOS’s Multi-Thread Operating Mechanism Based on UEFI Standard

        Zhang Yuanhu1, Xiang Mingqiong2, Wu You2, Yang Yong3
        (1. Shanghai Jiaotong University, Shanghai 201201, China; 2. Shanghai Enty-Exit Inspection and Quarantine Bureau, Shanghai 201201, China; 3. Shanghai Institute of Satellite Engineering, Shanghai 201201, China)

        This paper analyzes the BIOS’s running environment, framework and its executive process based on UEFI. Based on the Pthread theory under the OS, it proposes the the design concept and scheme of multi-thread under UEFI BIOS environment. After following UEFI specification restrictly it realizes and verifies multi-thread scheme based on UEFI, and finishes the research of multithreadingservice in the start-up procedure. It is veried in the practical application that it is convenient and is of strong practicability.

        UEFI; BIOS; Multi-Threa

        V474

        A

        2014.10.11)

        1007-757X(2014)12-0035-03

        張遠虎(1985-),男,漢族,刺穿瀘縣,晟碟信息科技有限公司,碩士,研究方向:BIOS系統(tǒng)設(shè)計與研究,上海,201201

        相明瓊(1987-),男,漢族,山東聊城,上海出入境檢驗檢疫局,工程師,碩士,研究方向:信息化管理、UEFI研究,上海,201201

        吳 猷(1982-),男,漢族,浙江寧波,上海出入境檢驗檢疫局,助理工程師,研究方向:信息化管理、UEFI研究,上海,201201

        楊 勇(1980-),男,漢族,山西運城,上海衛(wèi)星工程研究所,高級工程師,碩士,研究方向:電子系統(tǒng)研發(fā)、射頻通信,上海,201201

        猜你喜歡
        狀態(tài)機線程隊列
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
        在隊列里
        豐田加速駛?cè)胱詣玉{駛隊列
        淺談linux多線程協(xié)作
        Linux線程實現(xiàn)技術(shù)研究
        FPGA設(shè)計中狀態(tài)機安全性研究
        黑龍江科學(2011年2期)2011-03-14 00:39:36
        基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
        么移動中間件線程池并發(fā)機制優(yōu)化改進
        婷婷五月亚洲综合图区| 又大又紧又粉嫩18p少妇| 又湿又黄裸乳漫画无遮挡网站 | 国产精品一区二区久久乐下载| 91麻豆精品一区二区三区| 一区二区视频中文字幕| 国产md视频一区二区三区| 男人扒开女人双腿猛进女人机机里 | 国产成人精品蜜芽视频| 青青草视频在线观看入口| 成人午夜福利视频| 无码人妻一区二区三区免费| 无码制服丝袜中文字幕| 免费人成网站在线视频| av中文字幕潮喷人妻系列| 五月天激情小说| 国产不卡一区二区三区视频 | 每日更新在线观看av| 亚洲人成绝费网站色www| 国产激情无码Av毛片久久| 少妇熟女天堂网av天堂| 少妇做爰免费视频了| 性饥渴艳妇性色生活片在线播放| 老熟女一区二区免费| 亚洲精品中字在线观看| 精品视频无码一区二区三区| 18禁美女裸体网站无遮挡| 日韩精品视频在线一二三| 亚洲天堂av在线网站| 久久久久国产一区二区| 麻豆AⅤ精品无码一区二区| 美女一区二区三区在线视频| 午夜时刻免费入口| 狠狠人妻久久久久久综合| 国产大片在线观看三级| 久草青青91在线播放| 丰满熟女人妻中文字幕免费| 国产在线看不卡一区二区| 亚洲激情综合中文字幕| 色妞ww精品视频7777| 野外三级国产在线观看|