作业八:进程调度时机跟踪分析进程调度与进程切换的过程
2016-04-12 20:08
330 查看
作业八:进程的调度时机与进程的切换
一、进程调度的时机
1.分类一:
I/O bound 频繁i/o,等待i/o的时候需要耗费时间; CPU bound 计算密集型 ,不适用于交互式进程。
分类二:
批处理 实时 交互式 ——shell
二、使用gdb跟踪分析schedule()函数
三、switch_to中的汇编代码
中断和中断返回:有一个CPU上下文的切换 进程调度过程中:有一个进程上下文的切换,从一个进程的内核态堆栈切换到另一个进程的内核态堆栈。
movel %[next_sp],%%esp 即为修改堆栈指针,指向next进程的堆栈。 在内核态中,栈顶指针减去8K偏移(两页)便可得到thread_info位置,从而,在切换后current_thread_info内容为切换后的新进程的thread_info内容。
四、总结部分:Linux系统一般执行过程
内核是各种中断处理过程和内核线程的集合
(1)中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule();
(2)内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;
(3)用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度。
中断和中断返回:有一个CPU上下文的切换 进程调度过程中:有一个进程上下文的切换,从一个进程的内核态堆栈切换到另一个进程的内核态堆栈。
注明“郑伟 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:
相关文章推荐
- 关于进程,I/O模型的文章
- Qt中实现无边框的窗体
- 安卓虚拟机无法联网解决
- HttpClient介绍
- BZOJ 1798 [Ahoi2009]Seq 维护序列seq 线段树
- 素数筛选法-1
- 我的Android进阶之旅------>Android APP终极瘦身指南
- Python 邮件发送smtplib
- LeetCode *** 116. Populating Next Right Pointers in Each Node
- 利用日志与secureCRT检查漏洞
- eclipse-mysql-tomcat搭建jspk开发环境
- Linux下搭建tomcat集群全记录(转)
- arm 异常处理结构
- JSON格式解析和libjson使用简介(关于cjson的使用示例)
- LinkedHashMap源码解析
- Android-银联支付
- C++编译库文件
- C++“美化”界面
- TextInputLayout使用以及自定义颜色
- 第六周 项目3-IP地址类