美文网首页学习
Linux内核——系统运行过程

Linux内核——系统运行过程

作者: 懒无趣 | 来源:发表于2020-12-30 23:12 被阅读0次

系统一般执行过程

  1. 正运行在用户态的X进程
  2. X进程发生中断(可能产生了系统调用、异常等)
    • 保存CS:EIPSS:ESPeflags寄存器到X进程内核堆栈
    • 加载CS:EIP到中断处理函数入口,加载SS:ESP到X进程内核堆栈
    • 以上两点是int 0x80系统指令完成的
  3. 中断处理函数中一段汇编指令SAVE_ALL,将X进程用户态硬件上下文信息全部保存起来到内核堆栈,此时进程X运行在内核态
  4. 当系统调用函数执行完成,在中断返回之前中断处理函数会固定调用schedule()函数,使用switch_to()函数进行进程上下文的切换,此时CS:EIP寄存器切换至Y进程的指令地址(next->thread.ip,即:1f,在之前的文章进程切换中有说明)
  5. 切换至Y进程的内核态中,由于此前进程Y被调度出去,保持了1f地址到(prev->thread.ip),那么Y进程从这里开始执行,恢复内核堆栈信息,其中内核堆栈保存了函数调用过程,继续执行schedule()函数调用后的代码,RESOTRE_ALL() 和 iret(对于上面第2、3点),iret后将Y的CS:EIPSS:ESP等硬件上下文都恢复到用户态之后继续执行用户态代码段代码。

进程中断 和 进程上下文切换区别

进程中断

进程中断是某一个进程的CPU硬件上下文的切换,将CS:EIPSS:ESP等寄存器切换到内核函数地址和内核堆栈地址等,从此至终(从用户态->内核态->用户态,若没有发生进程调度)都是同一个进程在运行,即PCB进程控制块在内核中等同一个,只是部分CPU硬件上下文有变化

进程上下文切换

进程上下文切换是两个进程之间等切换,它包括内存寄存器等切换(CR3),两个进程等内核堆栈、EIP寄存器等切换等等。内核进程控制块由prev切换到next(由于内核ESP寄存器切换,get_current_thread 函数返回的就是next进程的进程控制块信息)

相关文章

  • Linux系统启动过程

    Linux系统启动过程、;内核的引导 --> 运行int --> 建立终端 --> 用户登录系统 运行...

  • Linux内核——系统运行过程

    系统一般执行过程 正运行在用户态的X进程 X进程发生中断(可能产生了系统调用、异常等)保存CS:EIP、SS:ES...

  • linux基础笔记

    Linux系统启动过程 Linux系统的启动过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。 ...

  • Linux basic

    Linux 系统启动过程 内核的引导 运行 init 系统初始化 建立终端 用户登录系统 1.内核的引导 当计算机...

  • Linux学习_系统启动

    Linux系统的启动过程分为5个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。 用户登录系统。...

  • Linux启动

    1.Linux系统启动过程: 内核引导->运行init->系统初始化成(/etc/rc.d/rc.sysinit...

  • linux系统启动解析

    Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。运行 init。系统初始...

  • 【Linux学习笔记】Linux开机启动过程

    序言 计算机启动Linux系统的过程分为BIOS程序运行过程、引导加载程序运行过程、Linux系统运行过程。 BI...

  • Android介绍

    一、android系统架构分为四层架构:Linux内核层、系统运行库层、应用框架层、应用层。1.Linux内核层:...

  • Android系统架构总结

    Android系统的四层架构:Linux内核层、系统运行库层、应用框架层以及应用层 1.Linux内核层(Linu...

网友评论

    本文标题:Linux内核——系统运行过程

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