庫函式和系統呼叫的優劣

2021-06-18 08:14:25 字數 731 閱讀 3459

總結:

從程式完成的功能來看,函式庫提供的函式通常是不需要作業系統的服務,函式是在使用者空間內執行的,除非函式涉及到i/o操作等,一般是不會切到核心態的。系統呼叫是要求作業系統為使用者提供程序,提供某種服務,通常是涉及系統的硬體資源和一些敏感的軟體資源等。

函式庫的函式,尤其與輸入輸出相關的函式,大多必須通過linux的系統呼叫來完成。因此我們可以將函式庫的函式當成應用程式設計人員與系統呼叫程式之間的乙個中間層,通過這個中間層,我們可以用一致的介面來安全的呼叫系統呼叫。這樣程式設計師可以只要寫一次**就能夠在不同版本的linux系統間使用積壓種具體實現完全不同的系統呼叫。至於如何實現對不同的系統呼叫的相容性問題,那是函式庫開發者所關心的問題。

從程式執行效率來看,系統呼叫的執行效率大多要比函式高,尤其是處理輸入輸出的函式。當處理的資料量比較小時,函式庫的函式執行效率可能比較好,因為函式庫的作法是將要處理的資料先存入緩衝區內,等到緩衝區裝滿了,再將資料一次寫入或者讀出。這種方式處理小量資料時效率比較高,但是在進行系統呼叫時,因為使用者程序從使用者模式進入系統核心模式,中間涉及了許多額外的任務的切換工作,這些操作稱為上下文切換,此類的額外工作會影響系統的執行效率。但是當要處理的資料量比較大時,例如當輸入輸出的資料量超過檔案系統定義的盡寸時,利用系統呼叫可獲得較高的效率。

從程式的可移植性的角度來看,相對於系統呼叫,c語言的標準備函式庫(ansi c)具備較高的可移植性,在不同的系統環境下,只要做很少的修改,通常情況是不需要修改的。

**:

系統呼叫和庫函式

unix 環境高階程式設計 一書中如此說 所有作業系統都提供多種服務的入口點,由此程式向系統核請求服務。各種版本的unix都 提供經良好定義的有限數目的入口點,經過這些入口點進入系統核,這些入口點被稱之為 系統呼叫 system call 系統呼叫是我們不能更改的一種unix特徵。unix版本7提供...

系統呼叫和庫函式

在計算機中,系統呼叫 英語 system call 又稱為系統呼叫,指執行在使用者空間的程式向作業系統核心請求需要更高許可權執行的服務。系統呼叫提供了使用者程式與作業系統之間的介面。大多數系統互動式操作需求在核心態執行。如裝置io操作或者程序間通訊。庫函式是在系統呼叫上的一層包裝,執行在使用者態 u...

系統呼叫和庫函式

系統呼叫概述 系統呼叫,我們可以理解是作業系統為使用者提供的一系列操作的介面 api 這些介面提供了對系統硬體裝置功能的操作。這麼說可能會比較抽象,舉個例子,我們最熟悉的 hello world 程式會在螢幕上列印出資訊。程式中呼叫了 printf 函式,而庫函式 printf 本質上是呼叫了系統呼...