Linux——进程&线程

什么是进程,什么是线程

进程:进程是一个正在运行的程序,在操作系统角度讲,进程就是一个pcb,是操作系统对一个正在运行的程序的描述,通过这个描述实现对程序的调度管理,它在linux中是一个task_struct结构体。pcb是进程控制块:标识符、状态、优先级、程序计数器(及即将被执行的下一条指令地址)、上下文。
线程:线程就是进程中的一条执行流,是cpu调度的基本单元,这个执行流在linux下是通过pcb实现的,共享了进程的大部分资源,相比进程更加轻量化,所以线程也被称为轻量级进程。

进程和线程的区别

  1. 进程是资源分配的最小单位,线程是cpu调度的最小单位。
  2. 进程拥有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源
  3. 一个进程崩溃,不会对其他进程产生影响;一个线程崩溃会让同同一进程内的其他线程也死掉
  4. 进程在创建、切换和销毁开销比线程大
  5. 进程间通信比较复杂,而同一进程的线程由于共享代码段和数据段,所以通信比较荣容易

线程独有:线程ID(用来区分每个线程)、程序计数器(即将被执行下一条指令的地址)、寄存器的值(线程执行所保存的上下文环境)、堆(防止栈混乱)、优先级
线程共享:全局变量、虚拟地址空间、堆、文件描述符、信号处理的回调函数

进程间通信方式

管道、共享内存、消息队列、信号量、套接字、信号

  1. 管道是内核中的一块缓冲区,多个进程可以拿到这块缓冲区的操作句柄就可以实现进程间通信,管道分为匿名管道和命名管道。匿名管道只能用于具有亲缘关系的进程间;而命名管道可以由于同一主机上任意进程间通信。
  2. 共享内存的本质就是一块物理内存,多个进程将同一块物理内存映射到自己的虚拟地址空间中,再通过页表映射到物理地址到达进程间通信,他是最快的进程间通信的方式,相较其他通信方式少了两步数据拷贝操作。
  3. 消息队列是内核中的一个优先级队列,多个进程通信访问同一个队列,在队列中添加或者获取节点来实现进程间通信。
  4. 信号量的本质就是内核中的一个计数器,主要实现进程间的同步和互斥,对资源进行计数,有两种操作,分别是在访问资源之前进行的p操作还有长生资源后的v操作。
  5. 套接字主要用于网络上同一主机或者不同主机上的进程间通信,可以将两端分为客户端和服务端,两端只要知道五元组就可以进行通信
  6. 信号是处理异步事件的方式,可以用于通知进程某个事件的发生。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值