- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程管理分析报告
成绩 (2011-2012学年秋季学期)
论文题目: 进程管理分析报告
课程名称: 操作系统课设
任课教师:
班 级:
学 号:
姓 名:
目录
进程管理分析报告 2
一、概念理解 2
1.1什么是进程 2
1.2状态转换图 3
1.3模式转换 3
1.4软中断的实现机理和作用 3
1.5进程调度的基本思想 3
二、 进程的创建与结束分析 4
2.1进程的创建:TASK_RUNNING 4
2.1.1FORK.C注释分析 4
2.2进程的结束:终止current进程 5
三、 进程调度与切换分析 6
3.1进程的调度schedule() 6
3.2进程的切换 7
3.2.1进程在TASK_RUNNING以及TASK_UNINTERRUPTIBLE、TASK_INTERRUPTIBLE之间转换 7
3.2.2进程在TASK_RUNNING-TASK_STOPPED的转换 8
四、 锁机制分析 8
4.1锁机制 8
五、心得体会 9
六、 参考文献 9
进程管理分析报告
一、概念理解
1.1什么是进程
进程执行操作系统的任务。程序是存放在磁盘上的包括一系列机器代码指令和数据的可执行的映像,因此是一个被动的实体。进程可以看作是一个执行中的计算机程序。它是动态的实体,在处理机执行机器代码时不断改变。进程包括处理程序的指令和数据,以及程序计数器、其他CPU的寄存器和包括临时数据(例如:例程参数、返回地址和保存的变量)的堆栈。当前执行的程序,或者说进程,包括微处理器中所有的当前活动。进程是操作系统的最小调度单位。
1.2状态转换图
1.3模式转换
当对处理机进行切换时,会发生两对上下文切换操作。在第一对上下文切换时,操作系统将保存当前进程的上下文,而装入分派程序的上下文,以便分派程序运行;在第二对上下文切换时,将移出分派程序,而把新选进程的CPU现场信息装入到处理机的各个相应寄存器中软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式。
中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能
软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。
1.软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的
2.软中断是由程序调用发生的,而硬中断是由外设引发的
3.硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等待较长时间时间片到,即每个进程所分配的时间片用完后,要跳转到调度程序; 2 占用CPU的当前运行进程提出I/O操作,发起对内核的系统调用时,在系统调用结束后,跳转到调度程序; 3 当前运行进程对所有内核系统调用的结束时都要跳转到调度程序,根据当前的调度信息来决定下一个可以占用CPU的进程.
进程的创建与结束分析
2.1进程的创建:TASK_RUNNING
第一个进程在系统启动时创建,当系统启动的时候它运行在核心态,这时,只有一个进程:初始化进程。和所有其他进程一样,初始进程有一组用堆栈、寄存器等等表示的机器状态。当系统中的其他进程创建和运行的时候这些信息存在初始进程的task_struct数据结构中。
进程由do_fork()函数创建,先申请空间,申请核心堆栈;然后在Task向量表中找到空闲位置;在进行正式初始化以前,将新创建的进程的状态都置为TASK_UNINTERRUPTIBLE,以免初始化过程被打断;开始初始化工作,如初始化进程时钟、信号、时间等数据;继承父进程的资源,如文件、信号量、内存等;完成进程初始化后,由父进程调用wake_up_process()函数将其唤醒,状态变为TASK_RUNNING,挂到就绪队列run queue,返回子进程的pid。
2.1.1FORK.C注释分析
int do_fork(unsigned long clone_flags, unsigned long usp, struct pt_regs *regs)
{
为新进程申请PCB空间;
if (申请不到)
返回错误,退出;
为新进程申请核心堆栈;
if (核心堆栈申请不到)
返回错误,退出;
为新进程在Task向量表中找到空闲位置;
/*复制父进程current PCB中的信息,继承current的资源*/;
p = current;
在进行正式初始化以前,将新创建的进程的状态都置为TASK_UNINTERRUPTIBLE,以免初始化过程被打断,并置一些标志位.
/*为防止信号、定时中断误唤醒未创建完毕的进
文档评论(0)