版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、系統(tǒng)調(diào)用與庫函數(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)程通常情況下不允許訪問內(nèi)核數(shù)據(jù),也無法使用內(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)用與庫函數(shù)Linux操作系統(tǒng)提供良好定義的有限數(shù)目的接口程序,使用戶程序通過接口得到內(nèi)核提供的服務(wù),這些接口程序即即系統(tǒng)調(diào)用為了方便用戶編程使用,減低因執(zhí)行系統(tǒng)調(diào)用帶來的運(yùn)行模式切換所造成的開銷,Linux提供運(yùn)行在用戶空間的應(yīng)用程序接
2、口(API)庫函數(shù)系統(tǒng)調(diào)用與庫函數(shù)API庫函數(shù)和系統(tǒng)調(diào)用并不只是一對(duì)一的關(guān)系,可以是多對(duì)一,也可以是一對(duì)多只能是API向下調(diào)用,而系統(tǒng)調(diào)用不能調(diào)用API系統(tǒng)調(diào)用與庫函數(shù)庫函數(shù)為程序開發(fā)和執(zhí)行提供方便環(huán)境,本身并不屬于操作系統(tǒng)內(nèi)核部分系統(tǒng)調(diào)用一般位于操作系統(tǒng)核心的最高層,通過調(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)用可以打開一個(gè)指定文件 #include #include #include #include size_t rea
3、d(int fd, const void * buf, size_t count);系統(tǒng)調(diào)用與庫函數(shù)函數(shù)庫調(diào)用系統(tǒng)調(diào)用在所有的ANSI C編譯器版本中,C庫函數(shù)是相同的各個(gè)操作系統(tǒng)的系統(tǒng)調(diào)用是不同的調(diào)用函數(shù)庫中的一段程序(或函數(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í)間屬于過程調(diào)用,調(diào)用開銷較小需要在用戶空間和內(nèi)核上下文環(huán)境間切換,開銷較大庫文件程序要實(shí)現(xiàn)他們的功能,需要很多函數(shù),包括自己編寫和調(diào)用別人已經(jīng)寫好的函數(shù)linux把人們預(yù)先編譯好的按照可重用的原則編寫的函數(shù)集合起來,就是函數(shù)
4、庫在任何編程環(huán)境中,庫文件都是一些預(yù)先編譯好的函數(shù)集合,函數(shù)以二進(jìn)制代碼形式存儲(chǔ)在庫文件中庫文件為了便于編程,對(duì)于部分經(jīng)常使用的函數(shù),相應(yīng)的開發(fā)語言都提供了對(duì)應(yīng)的庫文件支持,用戶要使用這些函數(shù),只需要包含這些庫文件即可程序員在使用庫文件時(shí),只需要包含所需要函數(shù)所在的頭文件,而不必關(guān)心該函數(shù)的具體實(shí)現(xiàn)函數(shù)庫文件包含.a的靜態(tài)庫和.so的共享庫頭文件不同的系統(tǒng)調(diào)用函數(shù)需要不同頭文件頭文件保存在/usr/include內(nèi)系統(tǒng)調(diào)用函數(shù)依賴于所運(yùn)行的linux版本,一般放在/usr/include/sys或/usr/include/linux中庫文件在編譯時(shí)將庫中相應(yīng)函數(shù)的二進(jìn)制映像代碼直接拷貝到當(dāng)前編
5、譯的程序中,當(dāng)前程序在運(yùn)行時(shí)獨(dú)立運(yùn)行,即靜態(tài)庫,如 lib*.a在編譯時(shí)只引用庫中相應(yīng)函數(shù)的二進(jìn)制映像代碼的入口位置(不直接拷貝),該程序在運(yùn)行時(shí)從共享庫文件中讀出該函數(shù)代碼(首先將共享庫加載到內(nèi)存中),從而間接引用,這種庫即共享庫,以 lib*.so.x.x 為格式命名靜態(tài)庫與共享庫靜態(tài)庫(*.a)指令全都包含在最終生成的可執(zhí)行文件中當(dāng)同時(shí)運(yùn)行的許多程序都使用同一個(gè)靜態(tài)庫時(shí),就會(huì)在內(nèi)存中有同一個(gè)函數(shù)的多份拷貝共享庫(*.so)不必被包含在最終可執(zhí)行文件中,文件執(zhí)行時(shí)可以動(dòng)態(tài)的引用和卸載共享庫文件程序使用共享庫的時(shí)候,有必要共享庫才被加載到內(nèi)存中函數(shù)庫與頭文件/lib:系統(tǒng)必備共享庫/usr/
6、lib:標(biāo)準(zhǔn)共享庫和靜態(tài)庫/usr/local/lib: 本地函數(shù)庫/usr/include: 系統(tǒng)頭文件/usr/local/include: 本地頭文件共享庫ldd: 可查看某個(gè)可執(zhí)行文件所使用的共享庫/etc/ld.so.conf: 包含共享庫搜索位置的配置文件,記錄了編譯時(shí)使用的動(dòng)態(tài)庫的路徑ldconfig: 共享庫管理工具, /etc/ld.so.conf列出的路徑下的庫文件 緩存到/etc/ld.so.cache 以供使用,一般在更新了共享庫之后要運(yùn)行該命令ldd命令確定某一特定可執(zhí)行程序是否引用共享庫庫文件編譯器只會(huì)使用/lib和/usr/lib下的庫文件通過源碼包進(jìn)行安裝時(shí),如
7、果不指定-prefix會(huì)將庫安裝在/usr/local目錄下(可執(zhí)行文件在bin下,頭文件在include下,庫文件在lib下)若未在文件/etc/ld.so.conf中添加/usr/local/lib這個(gè)目錄,即使安裝了源碼包,但是使用時(shí)仍然找不到相關(guān)的.so庫也會(huì)報(bào)錯(cuò),系統(tǒng)找不到此文件glibcgnu發(fā)布的libc庫,即c運(yùn)行庫linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫都會(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 鏈接庫錯(cuò)誤鏈接庫默認(rèn)位置為/lib和/usr/lib在/lib里建立庫鏈接文件,或修改/etc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 好的故事課件
- 2024年淮北職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 武術(shù)五步拳身體素質(zhì)練習(xí)教學(xué)設(shè)計(jì)
- 2024年海南健康管理職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 【核心素養(yǎng)】37核能-浙教版科學(xué)九上探究學(xué)案(原卷版)
- 2024年浙江體育職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年泰山職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年陽曲縣精神病醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年河南建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年河北公安警察職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 公司費(fèi)用預(yù)算表格模板(詳細(xì)版)
- 華為經(jīng)營管理-華為市場營銷體系(6版)
- 2023年中國育齡女性生殖健康研究報(bào)告
- 鋼結(jié)構(gòu)加工廠考察報(bào)告
- 發(fā)電機(jī)檢修作業(yè)指導(dǎo)書
- 薪酬與福利管理實(shí)務(wù)-習(xí)題答案 第五版
- 廢舊物資處置申請(qǐng)表
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 31888-2015中小學(xué)生校服
- 質(zhì)量檢查考核辦法
- 云南省普通初中學(xué)生成長記錄-基本素質(zhì)發(fā)展初一-初三
評(píng)論
0/150
提交評(píng)論