簡述系統調用的過程,系統調用訪問示例

 2023-10-17 阅读 27 评论 0

摘要:操作系統使用系統調用表將系統調用編號翻譯為特定的系統調用。系統調用表包含有實現每個系統調用的函數的地址。例如,read()?系統調用函數名為sys_read。read()系統調用編號是 3,所以sys_read()?位于系統調用表的第四個條目中(因為系統調用起始編號為0&#

操作系統使用系統調用表將系統調用編號翻譯為特定的系統調用。系統調用表包含有實現每個系統調用的函數的地址。例如,read()?系統調用函數名為sys_read。read()系統調用編號是 3,所以sys_read()?位于系統調用表的第四個條目中(因為系統調用起始編號為0)。從地址?sys_call_table + (3 * word_size)?讀取數據,得到sys_read()的地址。

找到正確的系統調用地址后,它將控制權轉交給那個系統調用。我們來看定義sys_read()的位置,即fs/read_write.c文件。這個函數會找到關聯到 fd 編號(傳遞給 read() 函數的)的文件結構體。那個結構體包含指向用來讀取特定類型文件數據的函數的指針。進行一些檢查后,它調用與文件相關的 read() 函數,來真正從文件中讀取數據并返回。與文件相關的函數是在其他地方定義的 —— 比如套接字代碼、文件系統代碼,或者設備驅動程序代碼。這是特定內核子系統最終與內核其他部分協作的一個方面。

讀取函數結束后,從sys_read()返回,它將控制權切換給?ret_from_sys。它會去檢查那些在切換回用戶空間之前需要完成的任務。如果沒有需要做的事情,那么就恢復用戶進程的狀態,并將控制權交還給用戶程序。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/141963.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息