系統呼叫與庫函式

2021-10-08 11:23:57 字數 576 閱讀 6896

大部分的i/o軟體放在作業系統內部,但仍有一小部分在使用者層,其中包括與使用者程式鏈結在一起的庫函式,以及完全執行在核心之外的假離線系統

一方面,為使各個程序有條不紊地使用i/o裝置,且能保護裝置的安全性,不允許在使用者態的應用程式去直接呼叫在核心態的os。但另一方面,應用程式在執行時,又必須取得os提供的服務。

所以,os在使用者層引用了乙個中介過程——系統呼叫:應用程式可以通過它間接呼叫os中的i/o過程,對i/o裝置進行操作

當應用程式需要執行某種i/o操作時,在應用程式中必須使用相應的系統呼叫,當os捕獲到應用程式中的系統呼叫後,便將cpu的狀態由使用者態轉換到核心態,然後轉向作業系統中相應過程,由該過程實現i/o操作。執行後,系統又從核心態返回到使用者態。

事實上,由作業系統向使用者提供的所有功能,使用者程序都必須通過系統呼叫來獲取。——系統呼叫,是應用程式獲得os所有服務的唯一途徑

使用者程式通過呼叫對應的庫函式使用系統呼叫,這些庫函式與呼叫程式連線在一起。

系統呼叫與庫函式呼叫

linux下對檔案操作有兩種方式 系統呼叫 system call 和庫函式呼叫 library functions 系統呼叫實際上就是指最底層的乙個呼叫,在linux程式設計裡面就是底層呼叫的意思。面向的是硬體。而庫函式呼叫則面向的是應用開發的,相當於應用程式的api,採用這樣的方式有很多種原因,...

庫函式與系統呼叫

系統呼叫 通常shell是通過系統呼叫將底層硬體功能向上層應用程式提供,linux的系統呼叫約有300多個 因為系統呼叫不考慮平台差異性,由核心直接提供,因此移植性較差。庫函式庫函式是由使用者或組織自己開發的,具有一定功能的函式集合 例如,如果使用者要讓音效卡發生,可能要呼叫好多個系統呼叫,而且系統...

系統呼叫與庫函式呼叫的區別

1 系統呼叫和庫函式的關係 系統呼叫通過軟中斷int 0x80從使用者態進入核心態。函式庫中的某些函式呼叫了系統呼叫。函式庫中的函式可以沒有呼叫系統呼叫,也可以呼叫多個系統呼叫。程式設計人員可以通過函式庫呼叫系統呼叫。高階程式設計也可以直接採用int 0x80進入系統呼叫,而不必通過函式庫作為中介。...