Linux編程

functions

庫函數&系統調用

  • 函數庫提供的函數通常是不需要操作系統的服務,函數是在用戶空間內執行的,除非函數涉及到I/O操作等,一般是不會切到核心態的。系統調用是要求操作系統爲用戶提供進程,提供某種服務,通常是涉及系統的硬件資源和一些敏感的軟件資源等。
  • 系統 調用的執行效率大多要比函數高,尤其是處理輸入輸出的函數. 當處理的數據量比較小時,函數庫的函數執行效率可能比較好,因爲函數庫的作法是將要處理的數據 先存入緩衝區內,等到緩衝區裝滿了,再將數據一次寫入或者讀出。這種方式處理小量數據時效率比較高,但是在進行系統調用時,因爲用戶進程從用戶模式進入系 統核心模式,中間涉及了許多額外的任務的切換工作,這些操作稱爲上下文切換,此類的額外工作會影響系統的執行效率。但是數據量比較大時,e.g. 輸入輸出的數據量超過文件系統定義的盡寸時,利用系統調用可獲得較高的效率
  • 從程序的可移植性的角度來看,相對於系統調用,C語言的標準備函數庫(ANSI C)具備較高的可移植性,在不同的系統環境下,只要做很少的修改,通常情況是不需要修改的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章