日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统调用概念

發布時間:2023/11/30 windows 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统调用概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“操作系統”通常包含以下兩種含義:

1、表示完整的軟件包,包括用來管理計算機資源的核心層軟件,以及附帶的所有標準軟件工具,諸如命令行解釋器、圖形用戶界面、文件操作工具和文本編輯器等;

2、狹義上的操作系統是指管理和分配計算機資源(如CPU、RAM和設備)的核心層軟件。

內核負責管理分配計算機資源,作為計算機和用戶之間的溝通橋梁而存在。因此就有內核態和用戶態的概念。執行硬件指令可以在兩種狀態間轉換。與之對應,可以將虛擬內存分為內核空間和用戶空間。在用戶態運行時,CPU只能訪問用戶空間;在內核態運行時,CPU可以訪問內核空間和用戶空間。

系統調用是受控的內核入口,借助這一機制,進程可以請求內核以自己的名義去執行某些動作。以應用程序編程接口的形式(API),內核提供了一系列服務。這些服務包括創建新錦程、執行I/O、為進程間通信創建管道等。

需要注意:

1、系統調用將處理器從用戶態切換到內核態,以便CPU訪問受保護的內核空間;

2、系統調用的組成是固定的,每個系統調用都由一個唯一的數字來標識;

3、每個系統調用都提供一套參數,來規范用戶空間與內核空間之間的信息傳遞;

從編程角度來看,系統調用很像C語言函數調用。下面是一個系統調用事件的發生順序:

1、應用程序通過調用C語言的外殼函數(wrapper)發起系統調用;

2、對系統調用中斷處理例程來說,外殼函數必須保證所有的系統調用參數可用。參數是通過堆棧傳遞到外殼函數的,但內核希望這些參數置入特定的寄存器。因此,外殼函數將上述參數復制到寄存器;

3、由于所有的系統調用進入內核的方式相同,內核需要設法區分每個系統調用。因此外殼函數會將系統調用編號復制到一個特殊的CPU寄存器中;

4、外殼函數執行一條中斷機器指令(int 0x80),引發處理器從用戶態切換到內核態,并執行系統中斷0x80的中斷矢量所指向的代碼;

5、為響應0x80中斷,內核會調用system_call()例程,來處理中斷,具體如下:
(1)在內核棧中保存寄存器值;

(2)審核系統調用編號的有效性;

(3)以系統調用編號對存放所有調用服務例程的列表(內核變量sys_call_table)進行索引,發現并調用相應的系統調用服務例程。若系統調用服務例程帶有參數,那么將首先檢查參數的有效性。隨后該服務例程會執行必要的任務,這可能會涉及對特定參數中指定地址處的值進行修改,以及在用戶內存和內核內存間傳遞數據。最后該服務例程會將結果狀態返回給system_call()例程;

(4)從內核態回復寄存器的值,并將系統調用返回值置于堆棧中;

(5)返回外殼函數,同時將處理器切換到用戶態;

6、若系統調用服務例程的返回值表明調用出錯,外殼函數會使用該值來設置全局變量errno。然后外殼函數會返回調用函數,并返回一個整數型值,以表明系統調用是否成功。

下圖以系統調用execve()為例,展示了上述事件的發生序列:


總結

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

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