进程、线程
1、进程、线程区别
进程是以资源分配的基本单位,线程是CPU调度的基本单位。
进程有自己独立的地址空间,线程属于进程,没有独立的地址空间。
进程上下文切换大、线程上下文切换小。
2、进程、线程分类
进程分类:
(1)、按进程特点:
交互式进程:由shell终端启动的进程,常与用户交互。可位于前台和后台。
批处理进程:进程序列,按顺序启动其他进程。不必与用户交互,常位于后台。
守护进程:独立于控制终端、周期性执行某种任务或等待处理某些发生的事件。一直位于后台,系统关闭时才终止。
(2)、按进程状态:
孤儿进程:父进程退出,子进程变成孤儿进程,父进程变为init进程,由init进程收养。守护进程是一种特殊的孤儿进程。
僵尸进程:子进程退出需通知父进程,由父进程释放,此时为僵尸进程,它位于内核中的task_struct并未释放。
线程分类:
用户线程:在用户空间实现的线程,不是由内核管理,由用户态线程库管理
内核线程:内核中实现的线程,由内核管理
轻量级进程LWP:内核中支持用户线程
3、进程、线程通信方式
进程通信方式:共享内存、管道(有名、无名)、消息队列、信号、信号量、socket
线程通信方式:锁机制、信号、信号量
管道:无名通信需要有亲缘关系、有名没有要求
共享内存:两个进程内虚拟地址空间映射到同一块物理地址空间
消息列表:保存在内核中的消息链表
信号量:PV操作
信号:进程通信唯一异步通信方式,Ctrl+C产生SIGINT,表示结束该进程
socket:不同主机之间
4、为什么通信方式不同
进程和线程是计算机中执行任务的两种方式,它们的通信方式之所以不同,是因为它们是不同的执行上下文。
进程是操作系统中分配资源和调度执行的基本单位,每个进程拥有自己独立的内存空间和系统资源。不同的进程之间无法直接访问对方的内存空间,因此进程之间的通信需要借助于操作系统提供的机制,例如管道、消息队列、共享内存、信号量等。
线程是进程中执行任务的最小单位,它共享进程的内存空间和系统资源。因为线程之间可以直接访问共享的内存空间,所以线程之间的通信相对来说比进程之间的通信更加简单。线程之间的通信可以使用共享内存、信号量、互斥锁、条件变量等机制。
因此,进程和线程的通信方式不同是由于它们的执行上下文不同,进程之间需要通过操作系统提供的机制进行通信,而线程之间可以直接访问共享的内存空间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本