什么是进程?和线程区别?

Posted

tags:

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

1、本质不同

进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元。

2、数量不同

同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。



3、过程不同

进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。

4、属性不同

线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志。

1、功能不同

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2、工作原理不同

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

3、作用不同

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

进程的特征:

1、动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

2、并发性:任何进程都可以同其他进程一起并发执行

3、独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

4、异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

5、结构特征:进程由程序、数据和进程控制块三部分组成。

多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

参考技术A 进程是操作系统层面的,线程是软件层面的。我这么讲不理解,举个例子。国家是世界范围的,省市州是国家内部的。进程就像国家形式的存在,线程就像省市州的存在。
我们说的多进程与多线程究竟哪些区别,严格来说不是一回事。进程你打开任务管理器能看到部分(应用程序),多进程不会互相干扰的,但是会占用系统内存,操作系统是允许多进程的,当一个进程假死,其他的在内存充足的情况下不会受影响,独立完成自己的工作,exe就属于这种。
多线程是个什么意思,一个进程内部,完成某个事件,可以用N个方法一起去做,可以并列也可以排成队,当不出现跨线程安全问题的时候,线程不会阻塞,也能互不干扰完成某个事情,这就叫线程。简单举例,我酷狗音乐内部下载一个大文件,他跟其他操作有关系吗?你下载你的嘛,我继续找下一个点下载,如果有关系就要停下所有工作,看着这个下载完才能进行下一步,所以这里就用到了多线程下载。
你别看他们同名不同姓,明确的说,不是一回事。问这问题你就像是在问李嘉诚与聊城是兄弟吗?早餐跟米饭哪个好吃?人生与人参哪个更有味道?......
参考技术B 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 首先,进程和进程如同列车和车厢,没有可比性,但是他们有一定的相关性:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。资源分配给进程,同一进程的所有线程共享该进程的所有资源。虚拟机分给线程,即真正在虚拟机上运行的是线程。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。如果非要比较进程与线程的区别,可以从以下几个方面来看:调度,线程作为调度和分配的基本单位,进程作为拥有资源的基本单位,并发性,不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行,拥有资源,进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. 参考技术C .
线程的基本概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的...
2.
进程与线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据空间,每个线程有独立的运行...
参考技术D 进程是执行中的一段程序,而一个进程中执行中的每个任务为一个线程;一个线程只可以属于一个进程,但一个进程能包含多个线程。

以上是关于什么是进程?和线程区别?的主要内容,如果未能解决你的问题,请参考以下文章

多进程和多线程有啥区别?

什么是并发和并行?什么是进程和线程?进程和线程的区别

多线程和多进程模式有啥区别

进程和线程有什么区别

进程和线程的区别是什么?

子进程和线程的区别