任务进程线程

Posted arrows

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了任务进程线程相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/qq_22703355/article/details/77175625

https://blog.csdn.net/xujingcheng123/article/details/79925661

 

程序(program)只是一组指令的有序集合;

 

任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。

进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于他自己。

进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格,内存空间、磁盘空间、I/O设备等。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。

 

进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

 

在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。

 

线程(tread)则是某一进程中一路单独运行的程序。既,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局变量,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为他们本身就有某些通信用的共享内存:进程的全局数据。

 

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

 

一个进程和一个线程最显著的区别是:线程有自己的全局数据。线程存在于进程中,因此一个进程的全局变量由所有线程共享。由于线程共享同样的系统区域,操作系统分配给一个进程的资源对该进程的所有线程都是可用的,正如全局数据可供所有线程使用一样。

线程是进程中执行运算的最小单位,亦既执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这就是一个子任务;在产生工资单报表的过程中,用户又可以输入数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求——工资单报表和新输入的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独立处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性。

 

引入线程的好处:

1)易于调度;

2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分;

3)开销少。创建线程比创建进程要快,所需开销很少;

4)利用充分发挥多处理器的功能。通过创建多线程进程(既一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

 

进程和线程的关系:

1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

3)处理机分给线程,既真正在处理机上运行的是线程。

4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步

 

进程包含了正在运行的一个程序的所有状态信息。

线程就是进程当中的一条执行流程。

进程=线程+资源平台(内存地址空间、代码、数据、文件)

 

在VxWorks、uC/OS-II任务就是线程。

大多数的RTOS都采用了基于优先级的可抢占调度算法。

 

以上是关于任务进程线程的主要内容,如果未能解决你的问题,请参考以下文章

多线程实现多任务

Day-12: 进程和线程

多任务-进程与线程的区别

Python之多任务编程进程和线程的对比

进程线程服务和任务的区别以及多线程与超线程的概念

python 进程和线程-进程和线程的比较以及分布式进程