进程与线程理解--看不懂我吃奥里给
进程和线程
一、进程(process)
- 概念
进程就好比是一个工厂的车间,一个工厂可能有多个车间,每个车间代表cpu正在处理的任务,某一时刻,cpu总是在进行一个进程
工厂=线程
工人=线程
二、线程(thread)
- 概念
在一个车间内,想要完成某一项工作,必须有很多个工人,并且多个工人协同完成任务,每个工人,都可以理解为linux系统中进程的工作线程。
工人=线程
三、进程线程关系
- 线程共享进程内容资源
- 某一个内存数据可以被多个线程同时用
- 某一块内存数据只能给一个线程使用
- 如果内存正在有线程使用,并且容不下其他线程,需要等待用完(工人上厕所)
- 线程不愿意等待,直接抢夺内存数据,可能会引发混乱,造成数据冲突,崩溃
总结:linux是一个多用户,多任务的操作系统,支持多进程,多线程
多进程(linux操作系统,可以同时多个进程在工作)
多线程(一个进程中多个线程在工作)
单线程(一个进程内,只有一个人在干活,效率很低)
进程的状态转换
-
创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
-
就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行
-
执行状态:进程处于就绪状态被调度后,进程进入执行状态
-
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
-
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
注意:1.进程由运行态→阻塞态是进程做出的主动行为
2.不能由阻塞态直接转换为运行态
3.不能由就绪态转换为阻塞态
进程同步和互斥
- 进程同步
同步也称直接制约关系,它是指为完成某种任务而建立的两个或者多个进程,这些进程因为需要在某些位置上协调他们的工作次序而产生的制约关系。
- 进程互斥
- 我们把一段时间段只允许一个进程使用的资源称为临界资源,许多物理设备(摄像头、打印机)都属于临界资源。此外还有许多变量、数据。内存缓冲区都属于临界资源
互斥称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待,当前访问临界资源的进程访问结束,释放该资源才能去访问临界资源
进程互斥,要遵循的原则
- 1.空闲让进
- 2.忙则等待
- 3.有限等待
- 4.让权等待
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步