第2章 进程和进程调度

第2章 进程和进程调度

ID:37505491

大小:957.98 KB

页数:46页

时间:2019-05-24

第2章 进程和进程调度_第1页
第2章 进程和进程调度_第2页
第2章 进程和进程调度_第3页
第2章 进程和进程调度_第4页
第2章 进程和进程调度_第5页
资源描述:

《第2章 进程和进程调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二章进程和进程调度本章知识要点了解Linux进程的组成、状态、运行级别、空间及上下文了解Linux进程控制块(PCB)task_struct的主要成员变量的作用掌握Linux的进程调度方式、调度策略和调度依据掌握Linux进程的创建过程2011/5/23Linux操作系统分析1§2.1Linux进程概述Linux是一个多任务多用户操作系统,一个任务(task)就是一个进程(process)。每一个进程都具有一定的功能和权限,它们都运行在各自独立的虚拟地址空间。在Linux中,进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。2011/5/23Linux操作系统

2、分析2Linux进程的组成存放在磁盘上的可执行文件的代码和数据的集合称为可执行映象(ExecutableImage)。当一个程序装入系统中运行时,它就形成了一个进程。进程是由正文段(text)、用户数据段(usersegment)和系统数据段(systemsegment)组成的一个动态实体。正文段中存放着进程要执行的指令代码,具有只读的属性用户数据段是进程在运行过程中处理数据的集合,它们是进程直接进行操作的所有数据,以及进程使用的进程堆栈系统数据段存放着进程的控制信息,其中包括进程控制块PCB。进程拥有自己独立的虚拟空间2011/5/23Linux操作系统分析3§2.2进程的任务

3、结构体(PCB)Linux的进程控制块(PCB)是task_struct结构体其中包含了一个进程的所有信息,是系统对进程进行管理和控制的有效手段,是系统实现进程调度的主要依据进程的task_struct是进程存在的惟一标志。当一个进程被创建时,系统就为该进程建立一个task_struct任务结构体。当进程运行结束时,系统撤消该进程的任务结构体。2011/5/23Linux操作系统分析4task_struct结构2011/5/23Linux操作系统分析5进程的运行状态定义#defineTASK_RUNNING0#defineTASK_INTERRUPTIBLE1#defineTASK

4、_UNINTERRUPTIBLE2#defineTASK_STOPPED4#defineTASK_TRACED8#defineEXIT_ZOMBIE16#defineEXIT_DEAD322011/5/23Linux操作系统分析6进程状态间的转换2011/5/23Linux操作系统分析7PCB与内核堆栈2011/5/23Linux操作系统分析8进程PCB的组织形式进程队列Linkstogetherallexistingprocessdescriptors2011/5/23Linux操作系统分析9可运行队列2011/5/23Linux操作系统分析10prio_array_t2011/5/2

5、3Linux操作系统分析11进程的族亲关系Task_struct设置的成员*p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptrreal_parent、parent2011/5/23Linux操作系统分析12父子关系链父亲通过小儿子找到其它儿子2011/5/23Linux操作系统分析13PIDhashtableandchainedlists2011/5/23Linux操作系统分析14等待队列struct__wait_queue{unsignedintflags;structtask_struct*task;wait_queue_func_tfunc;//

6、指向唤醒等函数structlist_headtask_list;};2011/5/23Linux操作系统分析15§2.3进程的创建、执行与消亡系统创建的第一个进程是init进程。系统中所有的进程都是由当前进程使用do_fork()函数创建的。子进程有自己独立的PCB和内核堆栈,其他资源可与父进程全部共享子进程创建后如运行其他程序需要execve()调入两步走的好处client/serverpipe2011/5/23Linux操作系统分析16系统调用fork()的特点子进程继承父进程的所有资源(PCB和内核堆栈除外),并共享父进程的虚存空间写时拷贝(copyonwrite):

7、子进程在创建后共享父进程的虚存内存空间,只是在两个进程中某一个进程需要向虚拟内存写入数据时才拷贝相应部分的虚拟内存。子进程在创建后执行的是父进程的程序代码。父进程执行fork()返值是子进程的PID值,子进程执行fork()的返值是0。2011/5/23Linux操作系统分析17父进程的去向与子进程独立,继续运行先于子进程结束,exit()后于子进程结束,收到子进程结束的信号进入睡眠wait4(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。