1、进程和线程的区别进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位 。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源 。
线程与进程的区别:
1、地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
2、进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源;
3、线程是处理器调度的基本单位,但进程不是;
4、二者均可并发执行 。
扩展资料:
线程的引入:
60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展 , 进程出现了很多弊端,
一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销 , 因此需要引入轻型进程;
二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大 。
因此在80年代 , 出现了能独立运行的基本单位——线程(Threads) 。
适用范围:
1、服务器中的文件管理或通信控制;
2、前后台处理;
【进程和线程的区别是什么,进程和线程的区别】3、异步处理 。
进程是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的 。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动 。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体 。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示 。
特征:
1、动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的 。
2、并发性:任何进程都可以同其他进程一起并发执行
3、独立性:进程是一个能独立运行的基本单位 , 同时也是系统分配资源和调度的独立单位;
4、异步性:由于进程间的相互制约 , 使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
5、结构特征:进程由程序、数据和进程控制块三部分组成 。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变 。
参考资料:百度百科-线程百度百科-进程
进程和线程的区别如下:
1、根本区别
进程是操作系统资源分配的基本单位 , 而线程是任务调度和执行的基本单位 。
2、开销方面
进程之间切换开销大,每个进程都有独立的代码和数据空间程序上下文;线程之间切换开销小,线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器PC 。
3、所处环境
在操作系统中能同时运行多个进程程序;而在同一个进程程序中有多个线程同时执行通过CPU调度 , 在每个时间片中只有一个线程执行 。
4、内存分配
系统为每个进程分配不同的内存空间;而对线程而言,除CPU外,系统不会为线程分配内存线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源 。
5、包含关系
线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程 。
2、线程和进程的区别根本区别:进程是资源分配最小单位,线程是程序执行的最小单位 。计算机在执行程序时,会为程序创建相应的进程 , 进行资源分配时 , 是以进程为单位进行相应的分配 。每个进程都有相应的线程 , 在执行程序时,实际上是执行相应的一系列线程 。
地址空间:进程有自己独立的地址空间 , 每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段;线程没有独立的地址空间 , 同一进程的线程共享本进程的地址空间 。
资源拥有:进程之间的资源是独立的;同一进程内的线程共享本进程的资源 。
执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口 。但是线程不能独立执行,必须依存在应用程序中 , 由应用程序提供多个线程执行控制 。
线程是处理机调度的基本单位,但是进程不是 。由于程序执行的过程其实是执行具体的线程,那么处理机处理的也是程序相应的线程,所以处理机调度的基本单位是线程 。
系统开销:进程执行开销大,线程执行开销小 。
3、线程和进程的区别从字面上看 , 协程与线程、进程较为相似,对于拥有其它开发语言基础的同学容易造成困扰 , 以至于第一印象把协程理解成线程 。
线程是操作系统能够进行运算调度的最小单位,分配算力、执行调度以线程为单位 。一条线程指就是一个单一顺序的控制流 。
进程是正在运行的程序的实例,是线程集合的载体,同时也是操作系统分配资源的基本单位 。
线程和进程的关系,打个比方,一个应用程序就是一个进程 。进程启动后,好比建立了一个工厂,线程是这个工厂中的“流水线” 。一个工厂内可以有多个流水线,这些流水线可以并发生产,一条流水线出问题不会影响其它流水线 。所以,进程可以有多个线程,但至少有一个主线程 。
线程间可以并发执行,并共享进程资源(都使用进程的空间) 。线程间有独立的栈区,但共享使用进程的堆区 。
Unity中不支持多线程开发,但是却有并发的需求,使用协程来模拟多线程开发,即可并发(模拟),又可控制同步、防止阻塞 。
协程是Unity机制,不具备系统普遍性,只能在MonoBehaviour下启动 。协程和线程的定义、启动流程类似,但其内部实现原理与线程不同 。
——————这里开始介绍协程—————————–
Unity的协程系统是基于C#的一个简单而强大的接口,简单讲就是可以把一个方法拆分成多次执行的一种接口 。协程通过yiled return返回一个迭代器,记录程序执行的位置,之后进入阻塞状态,直到满足唤醒条件后,才会继续向下执行 。启动多个协程后 , 多个协程之间不会真正的并发,而通过快速轮询模拟并发效果 。
Unity在整个生命周期中构建了一个托管代码执行队列,通过生命周期管理器往这个队列中添加执行方法的委托,然后启动一个托管线程,这个线程中不断的循环获取队列中的方法委托并执行 。
当开启一个迭代器(IEnumerator)后,协同程序便开始执行,在执行到yield return 之前和一般的程序没有任何区别,遇到yield return 之后立即返回 , 并将之后的代码挂起 。之后判断yield return后边的条件是否满足,如果满足,向下继续执行,否则继续等待 。
IEnumerator methodName(Object parameter1,Object parameter2,…){
// to do something
yield return Yield Instruction/other/null;
// to do something else
}
根本区别:进程是操作系统资源分配的基本单位 , 而线程是任务调度和执行的基本单位
在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程 , 同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小 。
所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源) , 线程组之间只能共享资源 。
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程 。
这么告诉你吧 。还没多核处理器的时候 , 人么想办法把一个单核处理器设计成两个或者几个线程来处理数据,你在任务管理器会看到两个或者多个CPU在运行 。进程可以这么理解,某个软件运行的时候需要在内存载入运行其几个部分 , 每个都是进程,而一个进程会条用多个系统或者其本身的文件,比如一个进程需要多个.dll才能运行,丢失某个文件就不会出现这个进程或者,出现错误 。这两个的联系时 , 如果一个CPU有双线程功能,他会同时能处理两条代码,单线程或者单核心单线程的,就只能处理一条代码 。
简单的说,你每启动一个程序,就启动了一个进程 。在Windows 3.x下 , 进程是最小运行单位 。在Windows 95/NT下 , 每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程 。在Windows 95/NT下,线程是最小单位 。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量 , 线程有可能会同时操作一片内存 。
没区别,线程也就是进程 。比如双核四程线,就是四进程运行
4、进程与线程的区别进程与线程的区别有开销不同、所处环境不同、内存分配不同等 。
每个进程都有独立的代码和数据空间(程序上下文) , 程序之间的切换会有较大的开销 。线程可以看做轻量级的进程 , 每个线程都有自己独立的运行栈和程序计数器(PC) , 线程之间切换的开销小 。
在操作系统中能同时运行多个进程(程序) , 而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行) 。
系统在运行的时候会为每个进程分配不同的内存空间 , 对线程而言,除了CPU外系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源 。
进程与线程的关系
进程(process)和线程(thread)是操作系统的基本概念 , 但是它们比较抽象,不容易掌握 。计算机的核心是CPU,它承担了所有的计算任务 。它就像一座工厂,时刻在运行 。假定工厂的电力有限,一次只能供给一个车间使用 。也就是说,一个车间开工的时候,其他车间都必须停工 。背后的含义就是,单个CPU一次只能运行一个任务 。
进程就好比工厂的车间,它代表CPU所能处理的单个任务 。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态 。一个车间里,可以有很多工人 。他们协同完成一个任务,线程就好比车间里的工人 。一个进程可以包括多个线程,车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的 。这象征一个进程的内存空间是共享的 , 每个线程都可以使用这些共享内存 。
5、线程和进程的区别是什么进程与线程的区别?进程与线程的区别
方法
进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体 。
进程一般有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】;进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出 。
由程序段、相关的数据段和PCB三部分构成了进程实体(又称进程印像),一般,我们把进程实体就简称为进程 。
进程的特征:
1.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 。
2.并发性:任何进程都可以同其他进程一起并发执行 。
3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 。
4.异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 。
线程:线程是进程中的一个实体,作为系统调度和分派的基本单位 。Linux下的线程看作轻量级进程 。
线程的性质:
1.线程是进程内的一个相对独立的可执行的单元 。若把进程称为任务的话,那么线程则是应用中的一个子任务的执行 。
2.由于线程是被调度的基本单元,而进程不是调度单元 。所以 , 每个进程在创建时,至少需要同时为该进程创建一个线程 。即进程中至少要有一个或一个以上的线程,否则该进程无法被调度执行 。
3.进程是被分给并拥有资源的基本单元 。同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用他们 。
4.线程是操作系统中基本调度单元 , 因此线程中应包含有调度所需要的必要信息,且在生命周期中有状态的变化 。
5.由于共享资源【包括数据和文件】,所以线程间需要通信和同步机制,且需要时线程可以创建其他线程,但线程间不存在父子关系 。
推荐阅读
- 山药和萝卜能一起吃吗,请问山药能和萝卜一起吃吗
- 西瓜和酸奶可以一起榨汁吗,西瓜汁可以加酸奶吗
- 夏至日出时间,冬至日和夏至日北京日出日落的时间?
- 山药与什么相克,山药不能和什么一起吃
- 蛋不能和什么食物一起吃,在生活中,鸡蛋不能和哪些常见食物一起食用?
- 染发后怎么护理和保养,染发后的营养护理
- 牡蛎和生蚝的区别是什么,牡蛎和生蚝有什么不同
- 开市和开业吉日的区别,黄历中的开市是什么意思?
- 胡萝卜和牛奶能一起吃吗,牛奶跟萝卜可以一起吃吗
- 石英表和机械表的区别是啥,石英表和机械表的区别