




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、系統調用與庫函數操作系統結構用戶進程及系統進程都在內核上運行用戶態與內核態為了更好地保護內核空間,將程序的運行空間分為用戶空間和內核空間,邏輯上是相互分離的用戶進程通常情況下不允許訪問內核數據,也無法使用內核函數,它們只能在用戶空間操作用戶數據,調用用戶空間的函數用戶空間的進程需要獲得系統服務,就必須利用操作系統提供給用戶的特殊接口,即系統調用函數系統調用系統調用與庫函數Linux操作系統提供良好定義的有限數目的接口程序,使用戶程序通過接口得到內核提供的服務,這些接口程序即即系統調用為了方便用戶編程使用,減低因執行系統調用帶來的運行模式切換所造成的開銷,Linux提供運行在用戶空間的應用程序接
2、口(API)庫函數系統調用與庫函數API庫函數和系統調用并不只是一對一的關系,可以是多對一,也可以是一對多只能是API向下調用,而系統調用不能調用API系統調用與庫函數庫函數為程序開發和執行提供方便環境,本身并不屬于操作系統內核部分系統調用一般位于操作系統核心的最高層,通過調用內核函數實現包括進程控制、文件系統控制、內存管理、socket管理、進程通信、系統控制等功能虛擬文件系統系統調用函數系統調用函數以C函數形式提供給用戶有類型、名稱、參數,并且標明相應的文件包含read系統調用可以打開一個指定文件 #include #include #include #include size_t rea
3、d(int fd, const void * buf, size_t count);系統調用與庫函數函數庫調用系統調用在所有的ANSI C編譯器版本中,C庫函數是相同的各個操作系統的系統調用是不同的調用函數庫中的一段程序(或函數)調用系統內核的服務與用戶程序相聯系是操作系統的一個入口點在用戶地址空間執行在內核地址空間執行它的運行時間屬于“用戶時間”它的運行時間屬于“系統”時間屬于過程調用,調用開銷較小需要在用戶空間和內核上下文環境間切換,開銷較大庫文件程序要實現他們的功能,需要很多函數,包括自己編寫和調用別人已經寫好的函數linux把人們預先編譯好的按照可重用的原則編寫的函數集合起來,就是函數
4、庫在任何編程環境中,庫文件都是一些預先編譯好的函數集合,函數以二進制代碼形式存儲在庫文件中庫文件為了便于編程,對于部分經常使用的函數,相應的開發語言都提供了對應的庫文件支持,用戶要使用這些函數,只需要包含這些庫文件即可程序員在使用庫文件時,只需要包含所需要函數所在的頭文件,而不必關心該函數的具體實現函數庫文件包含.a的靜態庫和.so的共享庫頭文件不同的系統調用函數需要不同頭文件頭文件保存在/usr/include內系統調用函數依賴于所運行的linux版本,一般放在/usr/include/sys或/usr/include/linux中庫文件在編譯時將庫中相應函數的二進制映像代碼直接拷貝到當前編
5、譯的程序中,當前程序在運行時獨立運行,即靜態庫,如 lib*.a在編譯時只引用庫中相應函數的二進制映像代碼的入口位置(不直接拷貝),該程序在運行時從共享庫文件中讀出該函數代碼(首先將共享庫加載到內存中),從而間接引用,這種庫即共享庫,以 lib*.so.x.x 為格式命名靜態庫與共享庫靜態庫(*.a)指令全都包含在最終生成的可執行文件中當同時運行的許多程序都使用同一個靜態庫時,就會在內存中有同一個函數的多份拷貝共享庫(*.so)不必被包含在最終可執行文件中,文件執行時可以動態的引用和卸載共享庫文件程序使用共享庫的時候,有必要共享庫才被加載到內存中函數庫與頭文件/lib:系統必備共享庫/usr/
6、lib:標準共享庫和靜態庫/usr/local/lib: 本地函數庫/usr/include: 系統頭文件/usr/local/include: 本地頭文件共享庫ldd: 可查看某個可執行文件所使用的共享庫/etc/ld.so.conf: 包含共享庫搜索位置的配置文件,記錄了編譯時使用的動態庫的路徑ldconfig: 共享庫管理工具, /etc/ld.so.conf列出的路徑下的庫文件 緩存到/etc/ld.so.cache 以供使用,一般在更新了共享庫之后要運行該命令ldd命令確定某一特定可執行程序是否引用共享庫庫文件編譯器只會使用/lib和/usr/lib下的庫文件通過源碼包進行安裝時,如
7、果不指定-prefix會將庫安裝在/usr/local目錄下(可執行文件在bin下,頭文件在include下,庫文件在lib下)若未在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄,即使安裝了源碼包,但是使用時仍然找不到相關的.so庫也會報錯,系統找不到此文件glibcgnu發布的libc庫,即c運行庫linux系統中最底層的api,幾乎其它任何運行庫都會依賴于glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九師聯盟月考試題及答案
- 拆遷回遷房屋買賣合同
- 虛擬現實教育中的隱私保護機制研究-洞察闡釋
- 數字技術在跨國公司環境監測中的應用-洞察闡釋
- 2025企業廣告設計制作年度服務合同原件
- 小學五年級勞動教案
- 新能源企業代理記賬與綠色能源認證合同
- 小學三年級語文說課稿15篇
- 出租車公司加盟及區域市場承包合同
- 餐飲店長勞動合同及經營管理責任書
- 醫院清潔消毒與滅菌課件
- 2022年小學生詩詞大賽參考題庫200題(含答案)
- 水泥廠工藝流程圖
- 檢驗檢測服務公司合作戰略方案
- DB34∕T 451-2017 地理標志產品 舒城小蘭花
- 《卓有成效的管理者》Word電子版電子版本
- 螺紋基本尺寸對照表
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 制缽機的設計(機械CAD圖紙)
- 《土木工程生產實習報告》
- 11分泌性中耳炎學習課程
評論
0/150
提交評論