码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-04-14 13:44:49      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

张潇月+ 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

一、进程调度与进程调度的时机分析

1.不同类型的进程有不同的调度需要

第一种分类:I/O-bound、CPU-bound;第二种分类:批处理过程、实时进程、交互式进程;

2.什么是调度策略?

是一组规则,他们决定什么时候以怎样的方式选择一个新的进程运行。

3.liunx进程的优先级

用特定的算法计算出进程的优先级,用一个值表示,这个值表示把进程如何适当的分配给CPU

Linux进程中的优先级是动态的,调度程序会根据进程的行为周期性的调整进程的优先级

较长时间未非配到CPU,优先级上升;在CPU上运行了很长时间,优先级下降。

4.schedule函数(负责实现调度)

进程调度的时机:

中断处理过程、直接调用schedule函数或返回用户态的根据need_resched标记调用schedule

内核线程可以直接调用schedule函数进行进程切换,可主动可被动

用户态进程无法实现主动调度,仅能通过某个时机进行调度,即中断处理过程中进行调度。

用户态进程只能被动调用。

二、进程上下文切换的代码分析

为了控制进程的执行,内核必须有能力挂起正在CPU上执行的进程,并恢复以前挂起的某个进程的执行,这叫做进程切换、任务切换、上下文切换;

挂起正在CPU上执行的进程,与中断时保存现场是不同的,中断前后是在同一个进程上下文中,只是由用户态转向内核态执行;

进程上下文包含了进程执行需要的所有信息

用户地址空间: 包括程序代码,数据,用户堆栈等

控制信息 :进程描述符,内核堆栈等

硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同)

schedule()函数选择一个新的进程来运行,并调用context_switch进行上下文的切换,这个宏调用switch_to来进行关键上下文切换

先是选择进程

技术分享

进程上下文切换

技术分享

关键

技术分享

next_ip一般是$1f,对于新创建的子进程是ret_from_fork

jmp是寄存器传递参数的

三、Linux系统的一般执行过程分析

1.最一般的情况:

技术分享

关键点:中断和中断返回有一个CPU上下文的切换,进程调度过程中有进程上下文的切换。

2.特殊情况:

技术分享

next_ip=ret_from_fork

3.内核与舞女

dancing girl vs. taxi girl

哪一个进程招手就可以陷入到内核态,内核态里面走一程之后返回到用户态,再需要到中断就进入到内核态,没人了就空转。内核就相当于舞女,进程就相当于客人。内核是各种中断处理过程中和内核线程的集合。

四、Linux操作系统架构和系统执行过程概览

操作系统的基本概念

技术分享

操作系统内核架构

技术分享

最简单也是最复杂的操作——执行ls命令

技术分享

从CPU和内存的角度看Linux系统的执行

技术分享

技术分享

 

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

标签:

原文地址:http://www.cnblogs.com/20135131zxy/p/5390502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!