美文网首页
linux 进程 线程

linux 进程 线程

作者: MagicDong | 来源:发表于2018-04-04 11:48 被阅读0次

进程

  1. 进程是表示==资源分配==的基本单位,进程有利于资源的管理和保护
  • 优点: 拥有独立的运行空间
  • 缺点:系统开销大,在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销.

线程

  1. 线程是进程中执行运算的最小单位,亦即执行处理机==调度==的基本单位
  2. 线程机制支持并发程序设计技术,在多处理器上能真正保证并行处理。而在linux实现线程很特别,linux把所有的线程都当作进程实现。linux下线程看起来就像普通进程(只是该进程和其他进程共享资源,如地址空间)
  3. Linux下不管是多线程编程还是多进程编程,最终都是用do_fork实现的多进程编程

线程的好处:

  1. 易于调度
  2. 提高并发性。通过线程可方便有效地实现并发性,进程可创建多个线程来执行同一个程序的不同部分。
  3. 开销少,在进程内创建、终止线程比创建、终止进程要快。同一进程内的线程间切换比进程间的切换要快,尤其是==用户级线程间==的切换。线程之间相互通信无须通过内核(同一进程内的线程共享内存和文件)
  4. 充分发挥多处理器的功能,通过多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使得每个处理器得到充分运行

进程与线程的关系

  • 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程;
  • 独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在
  • 资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源
  • 资源分配给进程,统一进程的所有线程共享该进程的所有资源;
  • 线程在执行过程中,需要协作同步,==不同进程的线程==间要利用消息通信的办法实现同步;
  • 处理机分给线程,即真正在处理机上运行的是线程。
  • 一个说法:
    UNIX/linux环境,采用多线程没必要
    ==占用资源角度==:产生一个多进程时肯定是需要产生的一点内存用来复制进程表项,即一个task_struct结构,但这个结构本身做得相当小巧;对于多进程来说,代码段是肯定不用复制的,因为父进程和各子进程的代码段是相同的;数据段和堆栈段,通过copy-on-write,即写时拷贝技术,当子进程或父进程要改变变量x的值时就会复制该变量。

多线程优点
  • 无需跨进程边界;
  • 程序逻辑和控制方式简单;
  • 所有线程可以直接共享内存和变量等;
  • 线程方式消耗的总资源比进程方式好;
多线程缺点
  • 每个线程与主程序共用地址空间,受限于2GB地址空间;
  • 线程之间的同步和加锁控制比较麻烦;
  • 一个线程的崩溃可能影响到整个程序的稳定性;
  • 线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU

多进程优点
  • 每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
  • 通过增加CPU,就可以容易扩充性能;
  • 可以==尽量减少线程加锁/解锁==的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
  • 每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。
多进程缺点
  • 逻辑控制复杂,需要和主程序交互;
  • 需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算;
  • 多进程调度开销比较大;

内核线程和用户线程

相关文章

  • 进程管理

    进程管理进程和线程图形简单解释进程和线程管理VIM编辑Linux 系统资源信息的获取获取 Linux CPU 信息...

  • 开题

    linux 内核 线程和进程管理

  • 进程/线程

    程序->进程 (无线程)进程是最小的运行单位 (有线程)线程是最小的运行单位,进程是线程的容器 Linux为每个进...

  • 你知道Linux并发与同步嘛?

    典型的UNIX系统都支持一个进程创建多个线程(thread)。 Linux以进程为单位组织操作,Linux中的线程...

  • 2019-06-03 Linux多线程

    Linux 多线程 线程是进程中负责程序执行的执行单元,一个进程至少有一个线程。进程有自己独立的资源,线程共享进程...

  • 线程

    线程的概念 线程:light weight process,轻量级的进程,Linux环境下本质上仍是进程。和进程的...

  • linux中的调度

    linux系统的线程是内核线程,所以linux系统的调度是基于线程而不是基于进程的 为了进行调度,linux系统将...

  • 在Linux上显示正在运行的进程的线程ID

    在Linux上显示正在运行的进程的线程ID 在上Linux,“ ps -T”可以显示正在运行的进程的线程信息: 在...

  • Linux 线程

    Linux支持内核线程,用户进程以及LWP,Linux2.6之后支持线程组概念。 内核线程是内核创建的线程,处理内...

  • Android中进程和线程

    1,Linux中的进程管理1)进程和线程进程是资源分配的最小单位。线程是操作系统调度执行的最小单位。进程和线程是程...

网友评论

      本文标题:linux 进程 线程

      本文链接:https://www.haomeiwen.com/subject/vsdkhftx.html