您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

Linux——进程线程

进程&线程

  • 什么是进程,什么是线程
  • 进程和线程的区别
  • 进程间通信方式

什么是进程,什么是线程

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

进程和线程的区别

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

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

进程间通信方式

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

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

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进