




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、系統(tǒng)調用與庫函數(shù)操作系統(tǒng)結構用戶進程及系統(tǒng)進程都在內核上運行用戶態(tài)與內核態(tài)為了更好地保護內核空間,將程序的運行空間分為用戶空間和內核空間,邏輯上是相互分離的用戶進程通常情況下不允許訪問內核數(shù)據,也無法使用內核函數(shù),它們只能在用戶空間操作用戶數(shù)據,調用用戶空間的函數(shù)用戶空間的進程需要獲得系統(tǒng)服務,就必須利用操作系統(tǒng)提供給用戶的特殊接口,即系統(tǒng)調用函數(shù)系統(tǒng)調用系統(tǒng)調用與庫函數(shù)Linux操作系統(tǒng)提供良好定義的有限數(shù)目的接口程序,使用戶程序通過接口得到內核提供的服務,這些接口程序即即系統(tǒng)調用為了方便用戶編程使用,減低因執(zhí)行系統(tǒng)調用帶來的運行模式切換所造成的開銷,Linux提供運行在用戶空間的應用程序接
2、口(API)庫函數(shù)系統(tǒng)調用與庫函數(shù)API庫函數(shù)和系統(tǒng)調用并不只是一對一的關系,可以是多對一,也可以是一對多只能是API向下調用,而系統(tǒng)調用不能調用API系統(tǒng)調用與庫函數(shù)庫函數(shù)為程序開發(fā)和執(zhí)行提供方便環(huán)境,本身并不屬于操作系統(tǒng)內核部分系統(tǒng)調用一般位于操作系統(tǒng)核心的最高層,通過調用內核函數(shù)實現(xiàn)包括進程控制、文件系統(tǒng)控制、內存管理、socket管理、進程通信、系統(tǒng)控制等功能虛擬文件系統(tǒng)系統(tǒng)調用函數(shù)系統(tǒng)調用函數(shù)以C函數(shù)形式提供給用戶有類型、名稱、參數(shù),并且標明相應的文件包含read系統(tǒng)調用可以打開一個指定文件 #include #include #include #include size_t rea
3、d(int fd, const void * buf, size_t count);系統(tǒng)調用與庫函數(shù)函數(shù)庫調用系統(tǒng)調用在所有的ANSI C編譯器版本中,C庫函數(shù)是相同的各個操作系統(tǒng)的系統(tǒng)調用是不同的調用函數(shù)庫中的一段程序(或函數(shù))調用系統(tǒng)內核的服務與用戶程序相聯(lián)系是操作系統(tǒng)的一個入口點在用戶地址空間執(zhí)行在內核地址空間執(zhí)行它的運行時間屬于“用戶時間”它的運行時間屬于“系統(tǒng)”時間屬于過程調用,調用開銷較小需要在用戶空間和內核上下文環(huán)境間切換,開銷較大庫文件程序要實現(xiàn)他們的功能,需要很多函數(shù),包括自己編寫和調用別人已經寫好的函數(shù)linux把人們預先編譯好的按照可重用的原則編寫的函數(shù)集合起來,就是函數(shù)
4、庫在任何編程環(huán)境中,庫文件都是一些預先編譯好的函數(shù)集合,函數(shù)以二進制代碼形式存儲在庫文件中庫文件為了便于編程,對于部分經常使用的函數(shù),相應的開發(fā)語言都提供了對應的庫文件支持,用戶要使用這些函數(shù),只需要包含這些庫文件即可程序員在使用庫文件時,只需要包含所需要函數(shù)所在的頭文件,而不必關心該函數(shù)的具體實現(xiàn)函數(shù)庫文件包含.a的靜態(tài)庫和.so的共享庫頭文件不同的系統(tǒng)調用函數(shù)需要不同頭文件頭文件保存在/usr/include內系統(tǒng)調用函數(shù)依賴于所運行的linux版本,一般放在/usr/include/sys或/usr/include/linux中庫文件在編譯時將庫中相應函數(shù)的二進制映像代碼直接拷貝到當前編
5、譯的程序中,當前程序在運行時獨立運行,即靜態(tài)庫,如 lib*.a在編譯時只引用庫中相應函數(shù)的二進制映像代碼的入口位置(不直接拷貝),該程序在運行時從共享庫文件中讀出該函數(shù)代碼(首先將共享庫加載到內存中),從而間接引用,這種庫即共享庫,以 lib*.so.x.x 為格式命名靜態(tài)庫與共享庫靜態(tài)庫(*.a)指令全都包含在最終生成的可執(zhí)行文件中當同時運行的許多程序都使用同一個靜態(tài)庫時,就會在內存中有同一個函數(shù)的多份拷貝共享庫(*.so)不必被包含在最終可執(zhí)行文件中,文件執(zhí)行時可以動態(tài)的引用和卸載共享庫文件程序使用共享庫的時候,有必要共享庫才被加載到內存中函數(shù)庫與頭文件/lib:系統(tǒng)必備共享庫/usr/
6、lib:標準共享庫和靜態(tài)庫/usr/local/lib: 本地函數(shù)庫/usr/include: 系統(tǒng)頭文件/usr/local/include: 本地頭文件共享庫ldd: 可查看某個可執(zhí)行文件所使用的共享庫/etc/ld.so.conf: 包含共享庫搜索位置的配置文件,記錄了編譯時使用的動態(tài)庫的路徑ldconfig: 共享庫管理工具, /etc/ld.so.conf列出的路徑下的庫文件 緩存到/etc/ld.so.cache 以供使用,一般在更新了共享庫之后要運行該命令ldd命令確定某一特定可執(zhí)行程序是否引用共享庫庫文件編譯器只會使用/lib和/usr/lib下的庫文件通過源碼包進行安裝時,如
7、果不指定-prefix會將庫安裝在/usr/local目錄下(可執(zhí)行文件在bin下,頭文件在include下,庫文件在lib下)若未在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄,即使安裝了源碼包,但是使用時仍然找不到相關的.so庫也會報錯,系統(tǒng)找不到此文件glibcgnu發(fā)布的libc庫,即c運行庫linux系統(tǒng)中最底層的api,幾乎其它任何運行庫都會依賴于glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務外,它本身也提供了許多其它一些必要功能服務的實現(xiàn)glibc版本查看libc版本安裝clustal omega解壓縮及安裝tar -zxvf clustal-omega-1.2.1.tar.gz./configureargtable2wget /argtable/argtable2-13.tar.gz 鏈接庫錯誤鏈接庫默認位置為/lib和/usr/lib在/lib里建立庫鏈接文件,或修改/etc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年聲增敏保偏光纖項目發(fā)展計劃
- 車間質量意識培訓
- 2025年技術成果轉化服務項目建議書
- 2025年光學纖維倒像器項目建議書
- 2024年廣州市花都區(qū)三上數(shù)學期末質量檢測模擬試題含解析
- 2024年甘肅省甘南藏族自治州碌曲縣數(shù)學三上期末調研模擬試題含解析
- 2024年布爾津縣三上數(shù)學期末試題含解析
- 裝修工程監(jiān)理培訓課件
- 供應鏈管理在供應鏈可持續(xù)發(fā)展戰(zhàn)略教學課件
- 《銀針療法治療腰椎間盤突出》課件
- 城市雕塑藝術工程工程量計價清單定額2022年版
- 人教版一年級起點小學二年級英語下冊全套教案
- 績溪事業(yè)單位招聘考試《行測》歷年真題匯總及答案解析精選V
- 湘美版美術三年級下冊 《漁家樂-蟳埔情》課件(共20張PPT)
- 農產品集中交易市場等級技術規(guī)范-編制說明
- 第四課:印巴戰(zhàn)爭
- 武漢綠地中心項目技術管理策劃書(48頁)
- 婚無遠慮必有財憂法商思維營銷之婚姻篇74張幻燈片
- 小學一年級人民幣學具圖片最新整理直接打印
- 投擲:原地投擲壘球
- 港口碼頭常用安全警示標志
評論
0/150
提交評論