當前位置:編程學習大全網 - 編程軟體 - 系統調用和庫函數與API的區別

系統調用和庫函數與API的區別

API其實就是壹個函數的定義,比如常用的函數如read()、malloc()、free()、abs()等。這些函數解釋了如何獲得給定的服務;子系統調用是通過軟中斷對內核的明確請求。API可以是與系統調用相同的形式。例如,read()函數的調用形式與read()系統調用的形式相同。然而,事實並非如此。這表現在兩個方面。壹個是幾個不同API的內部實現可能調用同壹個系統調用。例如,linux的libc庫實現了內存分配和釋放函數malloc()、calloc()和free()。這些功能的實現都調用了brk()系統調用;壹方面,壹個API的實現會調用幾個系統調用。有些API甚至不需要任何系統調用,因為不需要內核服務,比如abs()函數計算整數的絕對值。從編程的角度來看,API和系統調用沒有區別。兩者都側重於函數名、參數類型和返回代碼的含義。但從設計者的角度來看,就不壹樣了,因為系統調用是在內核中實現的,用戶態函數是在函數庫中實現的。總之,系統調用就是內核提供給用戶的接口!
  • 上一篇:如何解決聯想筆記本bios設置uefi變灰色
  • 下一篇:如何制定商業策略-讀知乎騰訊產品經理通識課之所得-12
  • copyright 2024編程學習大全網