美文网首页
进程切换和系统的一般执行过程

进程切换和系统的一般执行过程

作者: virealer | 来源:发表于2016-04-17 22:49 被阅读0次

进程调度的时机

  • 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();
  • 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;
  • 用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度

scheduel()函数分析
首先找到schedule()函数

scheduel
在scheduel()中调用了_scheduel()
_scheduel
略过检查、统计、上锁等操作
直接看最关键部分的代码 switch_to

2824行 从队列中取出下一个可运行的进程
接下来调用context_switch来进行实际的上下文切换。它是理解进程的切换的核心。它又调用switch_to来进行关键上下文切换。
找到switch_to 的代码

switch to

仔细阅读可以发现这和我们之前My_kernel实验中的代码十分相似

接下来用gdb跟踪schedule

bug

跟踪过程中发生了一个意料之外的事情,进去_schedule中时,代码会先跳到context_switch 那里按n后又在__schedule开头处开始执行。

ls

老师提供了一个ls的例子对于理解Linux的一般执行过程很有帮助

相关文章

  • 进程切换和系统的一般执行过程

    进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回...

  • 进程的切换和系统的一般执行过程

    陈松 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163...

  • python多线程

    进程 进程就是一段程序执行的过程。切换不同的进程实际上是进行上下文切换。 进程有三种状态:就绪、运行和阻塞。 就绪...

  • Python fork创建进程

    1、进程 进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。进程是系统进行资源分配和...

  • java学习笔记#9-多线程

    多线程概念 进程:进程是程序(任务)执行的过程进程持有资源和线程 线程线程是系统中的最小执行单元一个进程有多个线程...

  • 7进程控制

    12.1进程切换 实际上为用户提供的系统调用服务,用户在执行它的应用的过程当中,有需求要创建一个新的进程,如何来创...

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

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

  • Python52_线程、进程、协程的简单对比

    进程是资源分配的单位 线程是操作系统调度的单位 进程切换需要的资源很大,效率很低 线程切换需要的资源一般,效率一般...

  • Linux如何将进程绑定CPU核心以提高性能

    在Linux系统中,进程的调度切换是由内核自动完成的,在多核CPU上,进程有可能在不同的CPU核上来回切换执行,这...

  • 线程和进程的区别?

    进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位 进程之间的切换比线程之间切换的开销大。 ...

网友评论

      本文标题:进程切换和系统的一般执行过程

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