进程与线程、并⾏与并发的理解
进程与线程
1.定义
进程是具有⼀定独⽴功能的程序关于某个数据集合上的⼀次运⾏活动,进程是系统进⾏资源分配和调度的⼀个独⽴单位.
线程是进程的⼀个实体,是CPU调度和分派的基本单位,它是⽐进程更⼩的能独⽴运⾏的基本单位.线程⾃⼰基本上不拥有系统资源,只拥有⼀点在运⾏中必不可少的资源(如程序计数器,⼀组寄存器和栈),但是它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以包含多个进程2.关系
⼀个线程可以创建和撤销另⼀个线程;同⼀个进程中的多个线程之间可以并发执⾏.
相对进程⽽⾔,线程是⼀个更加接近于执⾏体的概念,它可以与同进程中的其他线程共享数据,因此线程可以读写同样的数据结构和变量,便于线程之间的通信,但拥有⾃⼰的栈空间,拥有独⽴的执⾏序列。
3.区别
进程和线程的主要差别在于它们是不同的操作系统资源管理⽅式。进程有独⽴的地址空间,⼀个进程崩溃后,在保护模式下不会对其它进程产⽣影响,⽽线程只是⼀个进程中的不同执⾏路径。线程有⾃⼰的堆栈和局部变量,但线程之间没有单独的地址空间,⼀个线程死掉就等于整个进程死掉,所以多进程的程序要⽐多线程的程序健壮,但在进程切换时,耗费资源较⼤,效率要差⼀些。但对于⼀些要求同时进⾏并且⼜要共享某些变量的并发操作,只能⽤线程,不能⽤进程。
1) 简⽽⾔之,⼀个程序⾄少有⼀个进程,⼀个进程⾄少有⼀个线程.
2) 线程的划分尺度⼩于进程,使得多线程程序的并发性⾼。
3) 另外,进程在执⾏过程中拥有独⽴的内存单元,⽽多个线程共享内存,从⽽极⼤地提⾼了程序的运⾏效率。
4) 线程在执⾏过程中与进程还是有区别的。每个独⽴的线程有⼀个程序运⾏的⼊⼝、顺序执⾏序列和程序的出⼝。但是线程不能够独⽴执⾏,必须依存在应⽤程序中,由应⽤程序提供多个线程执⾏控制。
5) 从逻辑⾓度来看,多线程的意义在于⼀个应⽤程序中,有多个执⾏部分可以同时执⾏。但操作系统
并没有将多个线程看做多个独⽴的应⽤,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
4.优缺点
线程和进程在使⽤上各有优缺点:线程执⾏开销⼩,但不利于资源的管理和保护;⽽进程正相反。同时,线程适合于在SMP机器上运⾏,⽽进程则可以跨机器迁移。
5、多线程应⽤
例如并发读取两个⽂件,⽂件读取完毕后cpu才开始处理,完成⽂件读取前cpu⼀直空闲。如果调整操作顺序,cpu的利⽤率会提⾼,程序执⾏时间也会缩短,在读取B⽂件时候cpu可以处理⽂件A,通常情况,cpu在等待IO时,可以执⾏命令。IO可以是⽂件IO、⽹络IO、输⼊输出IO等。这种情况经常会发⽣,因为IO速度⽐cpu的处理速度慢很多。(前提保证,执⾏顺序不会影响最后结果,结果⼤于性能,例如⼀次付款,执⾏顺序会影响结果就不适合多线程并⾏执⾏),多线程是为了更充分的利⽤cpu资源,再例如服务器在⼀个端⼝监听⽤户请求,服务器处理完⽤户的请求后继续监听其他的⽤请求,这样带来的问题是,服务器在处理⽤户的请求过程中,其他的请求是⽆法监听和接收的。为解决这个问题,可以采⽤多线程的⽅式,每个⽤户请求的处理都交给⼀个线程去做。这样,服务器在处理⽤户请求时可以继续监听端⼝上其他⽤户请求。
并⾏与并发
1、并⾏指在同⼀时间点同时执⾏,并发是指在同⼀时间⽚段同时执⾏,上⾯已将解释进程与线程,此时就可理解,进程之间相互独⽴,可实现并⾏,但线程不可以,多线程只能并发执⾏,实际还是顺执⾏,只是在同⼀时间⽚段,假似同时执⾏,cpu可以按时间切⽚执⾏,单核cpu同⼀个时刻只⽀持⼀个线程执⾏任务,多线程并发事实上就是多个线程排队申请调⽤cpu,cpu处理任务速度⾮常快,所以看上去多个线程任务说并发处理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论