日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux系统调用及其效率

發布時間:2025/4/14 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统调用及其效率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作系統相關概念:

操作系統---管理計算機硬件與軟件資源的軟件,是用戶與系統操作交互的接口,為在它上面運行的程序提供服務。

操作系統內核 ----操作系統的核心。負責管理系統的進程、內核、設備驅動程序。文件和網絡系統,一套內核不是一套完整的操作系統,如Linux。

Linux操作系統---基于Linux內核的操作系統,通常由Linux內核、Shell、文件系統和應用程序。常見的有RetHat 、Fedora 、Centos 、Ubuntu和Andriod。

?

Linux的運行空間:

Linux的運行空間 = 內核空間 + 用戶空間

內核空間 ---存放的是整個內核代碼和所有內核模塊,以及內核所維護的數據。

用戶空間---用戶程序的代碼和數據。

?

?

什么是系統調用?

操作系統提供給用戶程序調用的系統服務(硬件設備)的一組特殊的接口。

系統調用可以被看成是一個內核與用戶空間程序交互的接口——他好比一個信使,把用戶進程的請求傳達給內核,

待內核將請求處理完畢后,再將處理的結果送回給用戶空間。

?

?

系統調用的必要性:

1)把用戶從底層的硬件編程中解放出來

  與具體的硬件完全隔離,用戶不需要面向具體的硬件編碼,降低了開發的發雜性和難度。

2)極大的提高了系統的安全性與穩定性

  將用戶進程隔離,實現內核“保護”,用戶進程不允許訪問數據,也無法使用內核函數,用戶訪問內核的路徑是事先定義好的,

? ? ? ?只能從規定位置進入內核,而不準肆意跳入內核,有了這樣限于內核的統一訪問方式才能保證內核的安全無誤。

3)使用戶程序具有可移植性

  不同平臺,不同硬件。略略略。

?

-------------------------------------------------------------

系統調用的實現:

簡單的來講,系統調用實現所依靠的是軟件中斷。那么何為軟件中斷?

  軟件中斷——他是通過軟件指令觸發的中斷,Linux系統內核響應軟件中斷,從用戶態切換到內核態執相應的系統調用。中斷

指計算機運行過程中,出現某些意外情況需要主機干預時,機器能夠自動停止處理正在運行的程序并轉入處理新情況的程序,處理完

畢后,有轉回被暫停的程序繼續執行。

?

系統調用控制程序執行軟件中斷的過程如下:

  1)在進程的內核態堆棧中保存大多數寄存器的內容(即保存恢復進程到用戶態執行所需要的上下文)

  2)根據用戶態傳遞的系統調用號,確定系統調用的執行程序

  3)調用相應的執行程序來處理系統調用

  4)從系統調用返回(恢復用戶空間的程序運行)

?

前面提到了系統調用號,系統調用號是什么呢?

系統調用號——每一個系統調用被賦予一個系統調用號,與具體的系統調用相關聯。

?系統調用表——內核維護系統調用表,保存系統調用函數的起始地址,系統調用號對應系統在系統調用中的偏移量。

?

執行系統調用的方法:

一)glibc庫函數——glibc是Linux下使用的開源標準C庫,他是GUN發布的libc,即運行時庫。

  1)每個特定的系統調用對應至少一個glibc封裝的庫函數

  2)多個API有可能只對應同一個系統調用

  3)返回值-1在多數情況下表示內核不能滿足進程的請求

  4)Libc中定義的errno變量包含特定的出錯碼

  GLIB庫函數實例

  

?

二)syscall調用——glibc提供的syscall函數直接調用。

函數原型:long int syscall(long int sysno, ...)

傳參說明:sysno是系統調用號,唯一標識系統調用號,詳見sys/syscall.h

     ...為剩余可變長的參數,為系統調用所帶的參數,根據系統調用的不同,可帶0~5個不等的參數,

     如果超過特定系統調用所能帶的參數,多余的參數被忽略。

返回值:該函數返回值為特定系統調用的返回值,在系統調用成功之后你可以將返回值轉化為特定的類型,

     如果系統調用失敗則返回-1,錯誤代碼存放在errno中。

  Syscall調用實例

  

?

Glibc調用與Syscall調用的對比

?

?

-----------------------如何高效的執行Linux系統調用---------------------------

?

系統調用會影響效率?

頻繁使用底層的系統調用會影響程序的執行效率!why? ——罪魁禍首—用戶態和內核態的切換。

  1)保存用戶進程現場

  2)合法性檢查(如內存)

  3)參數傳遞

  4)恢復現場

  

如何避免系統調用時的效率問題?

  1)多調用GLIBC庫,如果GLIBC庫中能找到,就毫不猶豫的使用它。

  2)盡可能少調用系統接口,能一次搞定的避免多次。

?

轉載于:https://www.cnblogs.com/wangkeqin/p/9201703.html

總結

以上是生活随笔為你收集整理的Linux系统调用及其效率的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。