进程、线程

1、进程、线程区别

进程是以资源分配的基本单位,线程是CPU调度的基本单位。

进程有自己独立的地址空间,线程属于进程,没有独立的地址空间。

进程上下文切换大、线程上下文切换小。

2、进程、线程分类

进程分类:

(1)、按进程特点:

  交互式进程:由shell终端启动的进程,常与用户交互。可位于前台和后台。

  批处理进程:进程序列,按顺序启动其他进程。不必与用户交互,常位于后台。

  守护进程:独立于控制终端、周期性执行某种任务或等待处理某些发生的事件。一直位于后台,系统关闭时才终止。

(2)、按进程状态:

  孤儿进程:父进程退出,子进程变成孤儿进程,父进程变为init进程,由init进程收养。守护进程是一种特殊的孤儿进程。

  僵尸进程:子进程退出需通知父进程,由父进程释放,此时为僵尸进程,它位于内核中的task_struct并未释放。

线程分类:

用户线程:在用户空间实现的线程,不是由内核管理,由用户态线程库管理

内核线程:内核中实现的线程,由内核管理

轻量级进程LWP:内核中支持用户线程

3、进程、线程通信方式

进程通信方式:共享内存、管道(有名、无名)、消息队列、信号、信号量、socket

线程通信方式:锁机制、信号、信号量 

管道:无名通信需要有亲缘关系、有名没有要求

共享内存:两个进程内虚拟地址空间映射到同一块物理地址空间

消息列表:保存在内核中的消息链表

信号量:PV操作

信号:进程通信唯一异步通信方式,Ctrl+C产生SIGINT,表示结束该进程

socket:不同主机之间

4、为什么通信方式不同

进程和线程是计算机中执行任务的两种方式,它们的通信方式之所以不同,是因为它们是不同的执行上下文。

进程是操作系统中分配资源和调度执行的基本单位,每个进程拥有自己独立的内存空间和系统资源。不同的进程之间无法直接访问对方的内存空间,因此进程之间的通信需要借助于操作系统提供的机制,例如管道、消息队列、共享内存、信号量等。

线程是进程中执行任务的最小单位,它共享进程的内存空间和系统资源。因为线程之间可以直接访问共享的内存空间,所以线程之间的通信相对来说比进程之间的通信更加简单。线程之间的通信可以使用共享内存、信号量、互斥锁、条件变量等机制。

因此,进程和线程的通信方式不同是由于它们的执行上下文不同,进程之间需要通过操作系统提供的机制进行通信,而线程之间可以直接访问共享的内存空间。

posted @   feifei102  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示