linux进程和线程
⑴ linux操作系统多进程和多线程的区别
进程:运行中的程序,-->执行过程称之为进程。
线程:线程是轻量级的进程,是进程中的一条执行序列,一个进程至少有一条线程。
多线程优点:①无需跨进程边界;②程序逻辑和控制方式简单;③所有线程可以直接共享内存和变量;④线程方式消耗的总资源比进程少。
多进程优点:①每个进程相互独立,不影响主程序的稳定性,子进程崩溃没关系;②通过增加CPU就可以容易扩充性能;③可以尽量减少线程加锁/解锁的影响,极大提高性能。
多线程缺点:①每条线程与主程序共用地址空间,大小受限;②线程之间的同步和加锁比较麻烦;③一个线程的崩溃可能影响到整个程序的稳定性;④到达一定的线程数之后,即使在增加CPU也无法提高性能。
多进程缺点:①逻辑控制复杂,需要和主程序交互;②需要跨进程边界,如果有大数据传输,不适合;③多进程调度开销比较大。
Linux系统中多进程和多线程的区别是什么?
1、多进程中数据共享复杂、同步简单;而多线程中数据共享简单、同步复杂。
2、多进程占用内存多、切换复杂、速度慢、CPU利用率低;而多线程占用内存少、切换简单、CPU利用率高。
3、多进程的编程简单、调试简单;而多线程的编程复杂、调试复杂。
⑵ linux 下 进程和线程的区别
线程和进程是另一对有意义的概念,主要区别和联系如下:
进程是操作系统进行资源分配的基本单位,拥有完整的进程空间。进行系统资源分配的时候,除了CPU资源之外,不会给线程分配独立的资源,线程所需要的资源需要共享。
线程是进程的一部分,如果没有进行显示的线程分配,可以认为进程是单线程的;如果进程中建立了线程,则可认为系统是多线程的。
多线程和多进程是两种不同的概念。多线程与多进程有不同的资源共享方式。
进程有进程控制块PCB,系统通过PCB对进程进行调度。进程有线程控制块TCP,但TCB所表示的状态比PCB要少的多。
⑶ 什么是进程什么是线程linux系统中的进程有哪些状态如何获取系统中各进程的
进程线程都是操作系统的调度单位,有自己的数据结构。线程是比进程更小的调度单位,进程里可以有多个线程。进程间独占堆栈空间,同一进程内的多个线程可以共享堆空间。
⑷ Linux中进程和线程的区别详解
进程是程序的一次执行过程。
一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序的进程中,由进程提供多个线程执行控制。
⑸ Linux进程与线程的区别和联系
进程中可包含多个线程,最少1个,进程可控制进程内线程的运行暂停及结束,线程可共享进程全局变量,进程与进程是单独个体,相互不能直接访问各自线程及全局变量
⑹ 如何去理解Linux中进程,线程等概念
对于linux来说,则没有很明确的进程、线程概念。首先linux只有进程而没有线程,然而它的进程又可以表现得像windows下的线程。linux利用fork()和exec函数族来操作多线程。fork()函数可以在进程执行的任何阶段被调用,一旦调用,当前进程就被分叉成两个进程——父进程和子进程,两者拥有相同的代码段和暂时相同的数据段(虽然暂时相同,但从分叉开的时刻就是逻辑上的两个数据段了,之所以说是逻辑上的,是因为这里是“写时复制”机制,也就是,除非万不得已有一个进程对数据段进行了写操作,否则系统不去复制数据段,这样达到了负担最小),两者的区别在于fork()函数返回值,对于子进程来说返回为0,对于父进程来说返回的是子进程id,因此可以通过if(fork()==0)…else…来让父子进程执行不同的代码段,从而实现“分叉”。
exec函数族的函数的作用则是启动另一个程序的新进程,然后完全用那个进程来代替自己(代码段被替换,数据段和堆栈被废弃,只保留原有进程id)。这样,如果在fork()之后,在子进程代码段里用exec启动另一个进程,就相当于windows下的CreateThread()的用处了,所以说linux下的进程可以表现得像windows下的线程。
然而linux下的进程不能像windows下线程那样方便地通信,因为他们没有共享数据段、地址空间等。它们之间的通信是通过所谓IPC(InterProcess Communication)来进行的。具体有管道(无名管道用于父子进程间通信,命名管道可以用于任意两个进程间的通信)、共享内存(一个进程向系统申请一块可以被共享的内存,其它进程通过标识符取得这块内存,并将其连接到自己的地址空间中,效果上类似于windows下的多线程间的共享数据段),信号量,套接字。
标签: 进程, 线程
⑺ Linux中进程和线程的对比与区别
线程和进程是另一对有意义的概念,主要区别和联系如下:
进程是操作系统进行资源分配的基本单位,拥有完整的进程空间。进行系统资源分配的时候,除了CPU资源之外,不会给线程分配独立的资源,线程所需要的资源需要共享。
线程是进程的一部分,如果没有进行显示的线程分配,可以认为进程是单线程的;如果进程中建立了线程,则可认为系统是多线程的。
多线程和多进程是两种不同的概念。多线程与多进程有不同的资源共享方式。
进程有进程控制块PCB,系统通过PCB对进程进行调度。进程有线程控制块TCP,但TCB所表示的状态比PCB要少的多。
⑻ Linux中线程和进程的区别
地址空间:进程至少有一个线程,它们共享进程的地址空间,而进程有自己独立的地址空间
资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
线程是处理器调度的基本单位,但进程不是
一个程序至少有一个进程,一个进程至少有一个线程,线程的划分尺度小于进程
⑼ linux里面,进程与线程到底有什么本质的区别
线程:是进程中执行的一条路径,是系统调度的最小单位。
进程:是正在运行的程序,是系统分配资源的最小单位。
线程与进程关系
1.一个进程可以有多个线程,一个线程只能属于一个进程。
2.同一个进程下的所有线程共享该进程下的所有资源。
3.真正在处理机上运行的是线程,不是进程,线程是进程内的一个执行单元,是进程内的可调度实体。
Linux线程与进程区别
进程:
优点:多进程可以同时利用多个CPU,能够同时进行多个操作。
缺点:耗费资源(创建一个进程重新开辟内存空间)。
进程不是越多越好,一般进程个数等于cpu个数。
线程:
优点:共享内存,尤其是进行IO操作(网络、磁盘)的时候(IO操作很少用cpu),可以使用多线程执行并发操作。
缺点:抢占资源。
⑽ linux 进程与线程的区别
当把进程设计成同一时刻能够做不止一件事,那么这些事就可以用线程去处理!即多线程操作,这个时候要注意共享数据的加锁,比如全局变量!