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

歡迎訪問 生活随笔!

生活随笔

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

windows

系统调用syscall---用户态切换到内核态的唯一途径

發布時間:2024/4/14 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统调用syscall---用户态切换到内核态的唯一途径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、應用程序有時需要內核協助完成一些處理,但是應用程序不可能執行內核代碼(主要是安全性考慮),

? ? ?那么,應用程序需要有一種機制告訴內核,它現在需要內核的幫助,這個機制就是系統調用。

2、系統調用的本質是,應用程序主動觸發軟中斷,這個軟中斷異常立即被系統捕獲到(cpu指令產生異常,觸發異常處理程序),在異常處理程序中發現產生的異常是128號異常,于是執行這個異常的處理程序,這個程序就是系統調用的處理程序,通過指定不同的軟中斷號,異常處理程序跳轉到對應的系統調用的內核態實現程序中執行,于是內核態代替用戶態完成處理。

3、應用程序觸發系統調用的方式,有兩種方法,

? ? ?方法一、通過系統提供的庫函數(如Libc庫)

? ? ?方法二、直接調用系統提供的系統調用函數進行。

?

4、分別舉例如下:

? ??

?

?

5、系統調用的關鍵是:系統調用號的分配。

? ? ? 目前的分配是放在 <asm/unistd.h> 中定義。

6、快速系統調用的概念,在產生一個中斷后,處理器中控制器會進行一系列權限檢查,只有得到核實后,控制單元才設置中斷處理所需要的執行環境,基于軟中斷的128號系統調用也需要作一系列的檢查,才能進入內核態進行系統調用的處理工作。

? ? ? ?由于系統調用的特點,這一系列的權限檢查變得多余,為此intel 在奔騰2處理器中,在傳統的int 128號中斷處理的基礎上,又提供了快速系統調用的匯編指令sysenter/sysexit,核心思想是,產生中斷時,避免權限檢查,直接將處理器置為預定義的級別,同時將系統調用所需的執行環境信息保存在一組型號相關寄存器中,避免了訪問內存,進一步提高進行內核態的速度。

7、自己實現一個系統調用的步驟:分配系統調用號,明確參數、在內核態校驗參數(進程id, 用戶態地址等)、執行權限檢查(例如:capable(CAP_SYS_NICE))、重編內核綁定系統調用。

? ? ?對兩個事務的說明。

? ? ?參數校驗:進程不能傳遞一個非法地址,讓內核帶它去讀取或者寫入,所以,內核必須通過copy_to_user()或者copy_from_user()來進行校驗。

? ? ?權限檢查:進程的權限也就是運行該進程的用戶權限,例如,用戶不能修改其他進程的nice值,而只有root用戶才可以。此時需要使用capable(CAP_SYS_NICE)進行檢查。

? ? ? ? ? ? ? ? ? ? ? 再比如說,普通用戶不能重啟系統,那么就需要校驗 capable(CAP_SYS_BOOT)的返回結果。

轉載于:https://www.cnblogs.com/zhouhaibing/p/7787011.html

總結

以上是生活随笔為你收集整理的系统调用syscall---用户态切换到内核态的唯一途径的全部內容,希望文章能夠幫你解決所遇到的問題。

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