进程调度与进程切换的过程分析

本文详细分析了进程调度的时机与进程切换的过程,包括挂起、恢复进程,上下文切换的关键步骤,以及switch_to函数在其中的作用。还讨论了几种特殊情况,如内核线程之间的切换和创建子进程等,并提供了典型的Linux操作系统结构示意图。
摘要由CSDN通过智能技术生成

一、实验过程

1.打开终端,与前几次实验相同,输入命令cd Linux/menu进入到menu目录下,然后输入命令qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S启动MENUOS ,然后打开gdb,输入命令file ../linux-3.18.6/vmlinux加载符号表,然后如何命令target remote :1234连接MENUOS,并在schedulecontext_switchswitch_to三个函数处设置断点。实验结果如图1所示。

图 1

2. 然后利用gdb的命令c、n、s、l等进行调试,我们可以看到,首先执行了函数schedult(),实验结果如下图所示。


图 2


输入命令c进行继续调试,我们可以看到进程在context_switch()函数处停止,实验结果如图3所示。


图 3
继续进行调试,我们从图4可以看到进程在schedule()处暂停,实验结果如图4所示。


图 4

继续调试。


图 5
利用命令s进行单步调试。


图 6

二、进程的调度时机与进程的切换分析

1. 进程调度的时机有如下可能

1. 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值