版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、系統(tǒng)調(diào)用與庫(kù)函數(shù)操作系統(tǒng)結(jié)構(gòu)用戶進(jìn)程及系統(tǒng)進(jìn)程都在內(nèi)核上運(yùn)行用戶態(tài)與內(nèi)核態(tài)為了更好地保護(hù)內(nèi)核空間,將程序的運(yùn)行空間分為用戶空間和內(nèi)核空間,邏輯上是相互分離的用戶進(jìn)程通常情況下不允許訪問(wèn)內(nèi)核數(shù)據(jù),也無(wú)法使用內(nèi)核函數(shù),它們只能在用戶空間操作用戶數(shù)據(jù),調(diào)用用戶空間的函數(shù)用戶空間的進(jìn)程需要獲得系統(tǒng)服務(wù),就必須利用操作系統(tǒng)提供給用戶的特殊接口,即系統(tǒng)調(diào)用函數(shù)系統(tǒng)調(diào)用系統(tǒng)調(diào)用與庫(kù)函數(shù)Linux操作系統(tǒng)提供良好定義的有限數(shù)目的接口程序,使用戶程序通過(guò)接口得到內(nèi)核提供的服務(wù),這些接口程序即即系統(tǒng)調(diào)用為了方便用戶編程使用,減低因執(zhí)行系統(tǒng)調(diào)用帶來(lái)的運(yùn)行模式切換所造成的開(kāi)銷,Linux提供運(yùn)行在用戶空間的應(yīng)用程序接
2、口(API)庫(kù)函數(shù)系統(tǒng)調(diào)用與庫(kù)函數(shù)API庫(kù)函數(shù)和系統(tǒng)調(diào)用并不只是一對(duì)一的關(guān)系,可以是多對(duì)一,也可以是一對(duì)多只能是API向下調(diào)用,而系統(tǒng)調(diào)用不能調(diào)用API系統(tǒng)調(diào)用與庫(kù)函數(shù)庫(kù)函數(shù)為程序開(kāi)發(fā)和執(zhí)行提供方便環(huán)境,本身并不屬于操作系統(tǒng)內(nèi)核部分系統(tǒng)調(diào)用一般位于操作系統(tǒng)核心的最高層,通過(guò)調(diào)用內(nèi)核函數(shù)實(shí)現(xiàn)包括進(jìn)程控制、文件系統(tǒng)控制、內(nèi)存管理、socket管理、進(jìn)程通信、系統(tǒng)控制等功能虛擬文件系統(tǒng)系統(tǒng)調(diào)用函數(shù)系統(tǒng)調(diào)用函數(shù)以C函數(shù)形式提供給用戶有類型、名稱、參數(shù),并且標(biāo)明相應(yīng)的文件包含read系統(tǒng)調(diào)用可以打開(kāi)一個(gè)指定文件 #include #include #include #include size_t rea
3、d(int fd, const void * buf, size_t count);系統(tǒng)調(diào)用與庫(kù)函數(shù)函數(shù)庫(kù)調(diào)用系統(tǒng)調(diào)用在所有的ANSI C編譯器版本中,C庫(kù)函數(shù)是相同的各個(gè)操作系統(tǒng)的系統(tǒng)調(diào)用是不同的調(diào)用函數(shù)庫(kù)中的一段程序(或函數(shù))調(diào)用系統(tǒng)內(nèi)核的服務(wù)與用戶程序相聯(lián)系是操作系統(tǒng)的一個(gè)入口點(diǎn)在用戶地址空間執(zhí)行在內(nèi)核地址空間執(zhí)行它的運(yùn)行時(shí)間屬于“用戶時(shí)間”它的運(yùn)行時(shí)間屬于“系統(tǒng)”時(shí)間屬于過(guò)程調(diào)用,調(diào)用開(kāi)銷較小需要在用戶空間和內(nèi)核上下文環(huán)境間切換,開(kāi)銷較大庫(kù)文件程序要實(shí)現(xiàn)他們的功能,需要很多函數(shù),包括自己編寫(xiě)和調(diào)用別人已經(jīng)寫(xiě)好的函數(shù)linux把人們預(yù)先編譯好的按照可重用的原則編寫(xiě)的函數(shù)集合起來(lái),就是函數(shù)
4、庫(kù)在任何編程環(huán)境中,庫(kù)文件都是一些預(yù)先編譯好的函數(shù)集合,函數(shù)以二進(jìn)制代碼形式存儲(chǔ)在庫(kù)文件中庫(kù)文件為了便于編程,對(duì)于部分經(jīng)常使用的函數(shù),相應(yīng)的開(kāi)發(fā)語(yǔ)言都提供了對(duì)應(yīng)的庫(kù)文件支持,用戶要使用這些函數(shù),只需要包含這些庫(kù)文件即可程序員在使用庫(kù)文件時(shí),只需要包含所需要函數(shù)所在的頭文件,而不必關(guān)心該函數(shù)的具體實(shí)現(xiàn)函數(shù)庫(kù)文件包含.a的靜態(tài)庫(kù)和.so的共享庫(kù)頭文件不同的系統(tǒng)調(diào)用函數(shù)需要不同頭文件頭文件保存在/usr/include內(nèi)系統(tǒng)調(diào)用函數(shù)依賴于所運(yùn)行的linux版本,一般放在/usr/include/sys或/usr/include/linux中庫(kù)文件在編譯時(shí)將庫(kù)中相應(yīng)函數(shù)的二進(jìn)制映像代碼直接拷貝到當(dāng)前編
5、譯的程序中,當(dāng)前程序在運(yùn)行時(shí)獨(dú)立運(yùn)行,即靜態(tài)庫(kù),如 lib*.a在編譯時(shí)只引用庫(kù)中相應(yīng)函數(shù)的二進(jìn)制映像代碼的入口位置(不直接拷貝),該程序在運(yùn)行時(shí)從共享庫(kù)文件中讀出該函數(shù)代碼(首先將共享庫(kù)加載到內(nèi)存中),從而間接引用,這種庫(kù)即共享庫(kù),以 lib*.so.x.x 為格式命名靜態(tài)庫(kù)與共享庫(kù)靜態(tài)庫(kù)(*.a)指令全都包含在最終生成的可執(zhí)行文件中當(dāng)同時(shí)運(yùn)行的許多程序都使用同一個(gè)靜態(tài)庫(kù)時(shí),就會(huì)在內(nèi)存中有同一個(gè)函數(shù)的多份拷貝共享庫(kù)(*.so)不必被包含在最終可執(zhí)行文件中,文件執(zhí)行時(shí)可以動(dòng)態(tài)的引用和卸載共享庫(kù)文件程序使用共享庫(kù)的時(shí)候,有必要共享庫(kù)才被加載到內(nèi)存中函數(shù)庫(kù)與頭文件/lib:系統(tǒng)必備共享庫(kù)/usr/
6、lib:標(biāo)準(zhǔn)共享庫(kù)和靜態(tài)庫(kù)/usr/local/lib: 本地函數(shù)庫(kù)/usr/include: 系統(tǒng)頭文件/usr/local/include: 本地頭文件共享庫(kù)ldd: 可查看某個(gè)可執(zhí)行文件所使用的共享庫(kù)/etc/ld.so.conf: 包含共享庫(kù)搜索位置的配置文件,記錄了編譯時(shí)使用的動(dòng)態(tài)庫(kù)的路徑ldconfig: 共享庫(kù)管理工具, /etc/ld.so.conf列出的路徑下的庫(kù)文件 緩存到/etc/ld.so.cache 以供使用,一般在更新了共享庫(kù)之后要運(yùn)行該命令ldd命令確定某一特定可執(zhí)行程序是否引用共享庫(kù)庫(kù)文件編譯器只會(huì)使用/lib和/usr/lib下的庫(kù)文件通過(guò)源碼包進(jìn)行安裝時(shí),如
7、果不指定-prefix會(huì)將庫(kù)安裝在/usr/local目錄下(可執(zhí)行文件在bin下,頭文件在include下,庫(kù)文件在lib下)若未在文件/etc/ld.so.conf中添加/usr/local/lib這個(gè)目錄,即使安裝了源碼包,但是使用時(shí)仍然找不到相關(guān)的.so庫(kù)也會(huì)報(bào)錯(cuò),系統(tǒng)找不到此文件glibcgnu發(fā)布的libc庫(kù),即c運(yùn)行庫(kù)linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫(kù)都會(huì)依賴于glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù)的實(shí)現(xiàn)glibc版本查看libc版本安裝clustal omega解壓縮及安裝tar -zxvf clustal-omega-1.2.1.tar.gz./configureargtable2wget /argtable/argtable2-13.tar.gz 鏈接庫(kù)錯(cuò)誤鏈接庫(kù)默認(rèn)位置為/lib和/usr/lib在/lib里建立庫(kù)鏈接文件,或修改/etc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林藝術(shù)學(xué)院《數(shù)字出版》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林藝術(shù)學(xué)院《剪輯技術(shù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林藝術(shù)學(xué)院《當(dāng)代藝術(shù)思潮》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林師范大學(xué)《中國(guó)共產(chǎn)黨歷史》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024年大棚洞子承包協(xié)議書(shū)模板
- 婚紗店合伙開(kāi)店協(xié)議書(shū)范文模板
- (基于系統(tǒng)思維的)2025屆江西省新高考化學(xué)二輪復(fù)習(xí)策略 課件
- 吉林師范大學(xué)《教育統(tǒng)計(jì)與測(cè)量》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林師范大學(xué)《歌曲寫(xiě)作》2021-2022學(xué)年第一學(xué)期期末試卷
- 老年人自愿放棄社保協(xié)議書(shū)
- 新解讀《JTG 5120-2021公路橋涵養(yǎng)護(hù)規(guī)范》
- 我們喜歡的動(dòng)畫(huà)片(課件)三年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)教科版
- 2024年秋季學(xué)期新人教版七年級(jí)上冊(cè)英語(yǔ)課件 Unit 4 My Favourite Subject(第4課時(shí))SectionB 1a-1d
- 讀書(shū)分享課件:《一句頂一萬(wàn)句》
- 2024年涉密人員考試試題庫(kù)保密基本知識(shí)試題附答案(考試直接用)
- 2024年黑龍江哈爾濱市文化廣電和旅游局“丁香人才周”(春季)事業(yè)單位引才招聘24人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 教案模板電子版
- 項(xiàng)目化學(xué)習(xí)在跨學(xué)科教學(xué)中的實(shí)施
- VSD負(fù)壓吸引術(shù)應(yīng)用及護(hù)理
- 2024年山東省青島中德生態(tài)園(青島國(guó)際經(jīng)濟(jì)合作區(qū))管委會(huì)選聘52人歷年(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 2023下半年四川綿陽(yáng)引進(jìn)高層次和急需緊缺人才14716人筆試歷年典型考題及考點(diǎn)剖析附答案詳解
評(píng)論
0/150
提交評(píng)論