1. 程式人生 > >系統呼叫與API的區別

系統呼叫與API的區別

1.為什麼使用者程式不能直接訪問系統核心模式提供的服務?

     在linux中,將程式的執行空間分為核心與使用者空間(核心態和使用者態),在邏輯上它們之間是相互隔離的,因此使用者程式不能訪問核心資料,也無法使用核心函式。

2.什麼是系統呼叫?

答:系統呼叫就是一種特殊的介面。通過這個介面,使用者可以訪問核心空間。系統呼叫規定了使用者程序進入核心的具體位置。

       具體步驟:使用者程序-->系統呼叫-->核心-->返回使用者空間。

系統呼叫就是為了解決上述問題而引入的,是提供給使用者的“特殊介面”。

    系統呼叫規定使用者程序進入核心空間的具體位置。

   1.程式執行空間從使用者空間進入核心空間。

   2.處理完後再返回使用者空間。

3.什麼是API

答:api 就是應用程式介面,是一些預定義的函式。跟核心沒有必然的聯絡。API(Application Programming Interface)應用程式介面,是一些預先定義的函式,提供應用程式與開發人員基於某軟體或硬體的以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。

4.兩者的區別。

答:區別:api是函式的定義,規定了這個函式的功能,跟核心無直接關係。而系統呼叫是通過中斷向核心發請求,實現核心提供的某些服務。

      聯絡:一個api可能會需要一個或多個系統呼叫來完成特定功能。通俗點說就是如果這個api需要跟核心打交道就需要系統呼叫,否則不需要。

程式設計師呼叫的是API(API函式),然後通過與系統呼叫共同完成函式的功能。

因此,API是一個提供給應用程式的介面,一組函式,是與程式設計師進行直接互動的。

系統呼叫則不與程式設計師進行互動的,它根據API函式,通過一個軟中斷機制向核心提交請求,以獲取核心服務的介面。

   並不是所有的API函式都一一對應一個系統呼叫,有時,一個API函式會需要幾個系統呼叫來共同完成函式的功能,甚至還有一些API函式不需要呼叫相應的系統呼叫(因此它所完成的不是核心提供的服務)