操作系统系统调用执行过程

步骤1:传递系统调用参数

  • 应用程序在用户空间中准备系统调用所需的参数

  • 这些参数通常通过寄存器或栈传递给内核

  • 例如,文件读写调用需要传递文件描述符、缓冲区地址、读取字节数等

步骤2:执行陷入(trap)指令

  • 这是从用户态切换到内核态的关键一步

  • 陷入指令(如x86的int 0x80syscall)会触发一个软中断

  • 发生的重要变化:

    1. CPU模式从用户态切换到内核态

    2. 保存当前程序计数器(返回地址)

    3. 保存处理器状态(寄存器等)

    4. 跳转到预先定义的中断处理程序

步骤3:执行相应的服务程序

  • 操作系统内核根据系统调用号查找对应的服务程序

  • 内核验证参数的有效性和安全性

  • 在内核态执行请求的服务(如文件操作、进程管理等)

  • 这个过程中,内核拥有完全的硬件访问权限

步骤4:返回用户态

  • 服务程序执行完毕后,恢复之前保存的处理器状态

  • 将控制权交还给用户程序

  • CPU模式从内核态切换回用户态

  • 系统调用的结果通过寄存器或特定内存位置返回

相关推荐
鹏北海-RemHusband10 小时前
Go 语言进阶笔记 — 面向 JS/TS 前端开发者
笔记·golang
nnsix12 小时前
Unity QFramework ResKit、UIKit 笔记
笔记
摇滚侠12 小时前
Java 零基础全套教程,反射机制,笔记 187-188
java·开发语言·笔记
【云轩】13 小时前
如何设计一台能模拟电机的电子负载:一个硬件工程师的实战笔记
笔记·嵌入式硬件
可信计算14 小时前
X司民用无人机运行安全与合规培训手册
笔记
李子琪。14 小时前
Web漏洞-CSRF-CSRF防御 实验步骤
经验分享·笔记
小碗羊肉15 小时前
【Agent笔记 | 第四篇】Agentic RAG
笔记
小雨xs16 小时前
Vulnhub靶场DC-9 渗透测试笔记
笔记
whyTeaFo16 小时前
MIT 6.1810: xv6 book Chapter3: Page tables 笔记
笔记
東雪木17 小时前
JVM 与 Java 内存模型 专属复习笔记
java·jvm·笔记·java面试