美文网首页
系统调用

系统调用

作者: 修行者12138 | 来源:发表于2023-04-01 12:48 被阅读0次

    CPU特权级

    为了防止内核被用户进程随意访问,CPU通过特权级实现访问控制,当前特权级决定了哪些CPU指令可以被执行。
    linux CPU特权级分2层: Ring 0和Ring 3,内核运行在最高特权级Ring 0,用户进程运行在最低特权级Ring 3。
    用户进程要执行特权操作,需要从Ring 3转变到Ring 0。

    系统调用

    系统调用是操作系统为了统一管理硬件资源,并为上层应用程序提供良好的环境,使应用程序具有更好的兼容性,在内核代码中封装的接口,比如常见的fork、read、write等。

    系统调用的步骤

    CPU执行用户程序时,处于用户空间,执行内核程序时,处于内核空间。


    image.png

    每次发起系统调用,就会产生用户空间与内核空间的切换,具体步骤如下

    1. 用户进程把系统调用号,存入寄存器
    2. 用户进程把系统调用相关入参存入寄存器
    3. 用户进程执行80中断
    4. CPU接收到中断信息,执行中断处理程序(在这一步骤切换到内核态)
    5. 运行内核程序
    6. 内核程序把返回值存入寄存器
    7. 内核程序恢复用户进程的上下文,用户进程继续执行

    相关文章

      网友评论

          本文标题:系统调用

          本文链接:https://www.haomeiwen.com/subject/saikddtx.html