首页 > 知识点讲解
       进程、线程和任务
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 处理器管理 > 分区、进程、线程、任务的概念 > 
被考次数:27次     被考频率:高频率     总体答错率:52%     知识难度系数:     
相关知识点:38个      
        在多道系统当中,允许多个程序同时存在,各个程序之间是并发执行的,它们共享系统的资源。CPU需要在各个运行的程序之间来回地切换,不断地从一个程序切换到另一个程序,这样一来,仅仅依靠静态的“程序”这个概念,要想正确地描述这些多道的并发活动过程就变得非常的困难,因此引入“进程”“线程”“任务”等概念。
               进程
               简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
               .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
               .CPU上下文:指程序在运行时,CPU中各种寄存器的当前值,包括:程序计数器,用于记录将要取出的指令的地址;程序状态字,用于记录处理器的运行状态信息;通用寄存器,用于存放数据或地址;段寄存器,用于存放程序中各个段的地址;栈指针寄存器,用于记录栈顶的当前位置。
               .一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。
               进程有动态性、独立性和并发行三个特性。
               (1)动态性。进程是一个正在运行的程序,而程序的运行状态是在不断地变化的。例如,当一个程序在运行的时候,每执行完一条指令,PC寄存器的值就会增加,指向下一条即将执行的指令。而CPU中用来存放数据和地址的那些通用寄存器,它们的值肯定也不断地变化。另外,堆和栈的内容也在不断地变化,每当发生一次函数调用时,就会在栈中分配一块空间,用来存放此次函数调用的参数和局部变量。而当函数调用结束后,这块栈空间就会被释放掉。
               (2)独立性。一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。
               (3)并发性。从宏观上来看,在系统中同时有多个进程存在,它们相互独立地运行。
               下图表示四个进程A、B、C、D在系统中并发地运行。从中可以看出,虽然从宏观上来说,这四个进程都是在系统中运行,但从微观上来看,在任何一个特定的时刻,只有一个进程在CPU上运行。从时间上来看,开始是进程A在运行,然后是进程B在运行,然后是进程C和进程D。接下来又轮到了进程A去运行。因此,在单CPU的情形下,所谓的并发性,指的是宏观上并发运行,而微观上还是顺序运行,各个进程轮流去使用CPU资源。
               
               四个进程在并发运行
               在具体实现上,以CPU中的程序计数器PC为例,真正物理上的PC寄存器只有一个。当四个进程在轮流执行时,PC取值的运动轨迹是先在进程A内部流动,然后再到进程B的内部流动,再到进程C和D。从进程的独立性角度来说,每个进程都有“自己”独立的PC寄存器,即逻辑上的PC寄存器,它们的取值相互独立、互不影响。所谓的逻辑PC,其实就是一个内存变量。例如,在上图中,当进程A要执行的时候,就把A的逻辑PC的值拷贝到物理PC中,然后开始运行。当轮到B运行的时候,先把物理PC的当前值保存到A的逻辑PC中,然后再把B的逻辑PC的值装入到物理PC中,即可运行。这样就实现了各个进程的轮流运行。
               线程
               在20世纪80年代中期,人们提出了更小的能独立运行的基本单位,也就是“线程”。
               所谓线程,就是进程当中的一条执行流程(见下图),这样做的好处是:
               
               资源平台与线程
               .在一个进程当中,或者说在一个资源平台上,可以同时存在多个线程。如下图所示,在这个例子当中,一个进程包含有三个线程。
               
               多线程
               .可以用线程来作为CPU的基本调度单位,使得各个线程之间可以并发地执行。
               .对于同一个进程当中的各个线程来说,由于它们是运行在相同的资源平台上,因此它们可以共享该进程的各种资源,如内存地址空间、代码、数据、文件等等,这就使得线程之间的通信与交流变得非常方便。
               既然线程是代码在进程的资源平台上的一条执行流程,那么是不是进程的所有资源都能够共享呢?答案是否定的。对于同一个进程的各个线程,它们可以共享该进程的大部分资源,但也有一小部分的资源是不能共享的,每个线程都必须拥有各自独立的一份。这些资源包括CPU运行上下文(如程序寄存器、状态寄存器、通用寄存器和栈指针等)和栈。
               任务
               在许多嵌入式操作系统中,并没有使用“进程”或“线程”这两个术语,而是把能够独立运行的实体称为“任务”,那么这里所说的任务到底是进程还是线程呢?对于不同的系统,这个问题有不同的回答。
               VxWorks的“任务”就是线程,类似的系统还有μC/OS-II、Jbed等。当然,也有一些嵌入式操作系统,如一些嵌入式Linux系统,其任务指的是进程。为了方便起见,在本书中将按照惯例统一使用“任务”这个名词术语,并在需要的时候指明其是进程还是线程。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有