資源描述:
《linux內(nèi)核系統(tǒng)調(diào)用擴(kuò)展研究》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、2012-07-19#####L##in#u#x##內(nèi)##核20系12統(tǒng)-0調(diào)7-用19擴(kuò)##展##研#2#0#究1#2-07-19########張步忠1,金海平2(1.安慶師范學(xué)院計(jì)算機(jī)系,安徽安慶246011;2.安慶師范學(xué)院數(shù)學(xué)系,安徽安慶246011)摘要:系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核提供給用戶使用內(nèi)核服務(wù)的接口。Linux操作系統(tǒng)由于其自由開(kāi)放性,用戶可在原有基礎(chǔ)上,添加新的系統(tǒng)調(diào)用,以便提供更多的服務(wù)?;贚inux2.4內(nèi)核,文中研究了Linux操作系統(tǒng)系統(tǒng)調(diào)用的實(shí)現(xiàn)機(jī)制,并以基于數(shù)據(jù)庫(kù)的文件系統(tǒng)功能擴(kuò)展為例,說(shuō)明系統(tǒng)調(diào)用擴(kuò)展的實(shí)現(xiàn)
2、過(guò)程。關(guān)鍵詞:Linux;系統(tǒng)調(diào)用;擴(kuò)展中圖分類(lèi)號(hào):TP316.8文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1673-629X(2007)05-0163-03ResearchofLinuxKernelSystemCallExpansionZHANGBu2zhong1,JINHai2ping2(1.DepartmentofComputer,AnqingTeachersCollege,Anqing246011,China;2.DepartmentofMathematics,AnqingTeachersCollege,Anqing246011,China)Abstr
3、act:Thesystemcallisauserinterface,whichtheoperatingsystemkernelprovidestousersusingkernelservice.BecauseofLinuxop2eratingsystemfreedomandopenness,usersmayexpandnew,specificapplicationsystemcallastheoriginalfoundation,whichcanprovidetousmoreservices.Inthispaper,basedonLinux2
4、.4kernel,realizationmechanismofLinuxsystemcallisintroduced.Acaseoffunctionexpansionoffilesystembasedondatabaseisusedtodemonstratetherealizationprocess.Keywords:Linux;systemcall;expansion系統(tǒng)調(diào)用現(xiàn)代計(jì)算機(jī)系統(tǒng)一般出于安全性和系統(tǒng)保護(hù)等方面的需要,劃分出不同的操作權(quán)限。如Intelx86系列從硬件上劃分了4個(gè)不同的操作等級(jí):0級(jí)最高,可擁有所有的系統(tǒng)操作權(quán)限,3
5、級(jí)最低,操作是受約束的,特別是一些特權(quán)指令是不能運(yùn)行的,想要運(yùn)行運(yùn)行這些指令也只有轉(zhuǎn)到更高的權(quán)限級(jí)別。一些操作系統(tǒng)根據(jù)需要,如Unix操作系統(tǒng)[1]也劃分了用戶和內(nèi)核兩個(gè)不同的操作級(jí)別,將進(jìn)程管理、內(nèi)存管理、設(shè)備管理等關(guān)鍵性的核心功能放在內(nèi)核級(jí),shell接口、用戶程序等放在用戶級(jí)運(yùn)行。并把兩者放在不同的地址空間,用戶和內(nèi)核空間是不能直接通信和相互調(diào)用程序的,用戶也不能直接訪問(wèn)硬件,從而防止了一部分低手段的用戶程序侵害,提高了安全性。但是很多情況下,需要內(nèi)核程序提供服務(wù),如用戶登錄需要?jiǎng)?chuàng)建一個(gè)新的會(huì)話進(jìn)程。為了既不破壞這種機(jī)制,又能讓用戶使用
6、內(nèi)核控制的資源,操作系統(tǒng)提供了一種用戶使用內(nèi)核服務(wù)的機(jī)制,即系統(tǒng)調(diào)用。系統(tǒng)調(diào)用函數(shù)通常由用戶進(jìn)程在用戶態(tài)下調(diào)用,內(nèi)核通過(guò)system-call函數(shù)響應(yīng)系統(tǒng)調(diào)用產(chǎn)生的軟中斷,在正確訪問(wèn)核心棧、系統(tǒng)調(diào)用開(kāi)關(guān)表之后陷入到操作系統(tǒng)內(nèi)核中進(jìn)行處理?;诖?文中主要討論了源代碼開(kāi)放的Linux環(huán)境下的系統(tǒng)調(diào)用實(shí)現(xiàn)機(jī)制,并針對(duì)基于數(shù)據(jù)庫(kù)的文件系統(tǒng)的用戶接口擴(kuò)展的實(shí)際需要,介紹如何擴(kuò)展內(nèi)核系統(tǒng)調(diào)用。12Linux系統(tǒng)調(diào)用實(shí)現(xiàn)過(guò)程Linux操作系統(tǒng)采用類(lèi)似Unix內(nèi)核方式,把操作系統(tǒng)也分成系統(tǒng)狀態(tài)和用戶狀態(tài)[2]。Linux下每個(gè)進(jìn)程都有4GB的虛擬空間,但這
7、4GB的空間分成兩部分:0~3GB部分稱為用戶空間,它是用戶進(jìn)程的私有空間;3~4GB成為內(nèi)核空間,由2012-07-19#############2012-07所-有1進(jìn)9程#及#內(nèi)#核#共#享2#使0#用1#。2-07-19########()收稿日期:2006-08-12般以C形式的庫(kù)函數(shù)給出。內(nèi)核函數(shù)是Linux內(nèi)核中設(shè)置了的一組用于實(shí)現(xiàn)各種系統(tǒng)功能子程序,并將它們提供給用戶調(diào)用。在用戶需要訪問(wèn)系統(tǒng)內(nèi)核管理的資源時(shí),用戶進(jìn)程將被掛起,接口函數(shù)將轉(zhuǎn)到內(nèi)核態(tài),內(nèi)核檢驗(yàn)用戶請(qǐng)求的合法性,嘗試執(zhí)行內(nèi)核函數(shù),并把結(jié)果反饋給用戶進(jìn)程,然后用戶進(jìn)程
8、重新啟動(dòng)。Linux中每個(gè)系統(tǒng)調(diào)用都有一個(gè)唯一的編號(hào),稱為系統(tǒng)調(diào)用號(hào)[3],這也是系統(tǒng)調(diào)用在入口地址表中位置的序號(hào)。在用戶程序調(diào)用系統(tǒng)調(diào)用時(shí),系統(tǒng)調(diào)用程序通過(guò)80H