操作系统的进程管理
什么是进程?
进程是系统进行资源分配和调度的基本单位进程,作为程序独立运行的载体保障程序正常执行。进程的存在,使得操作系统资源的利用率大幅提升。
什么是进程控制块(PCB)?
PCB的使得进程是能够独立运行的基本单位,用于描述和控制进程运行的通用数据结构,记录进程当前状态和控制进程运行的全部信息 。linux系统下的PCB是:task_struct
PCB常驻内存,存放在内存专用的PCB专用区域内。

主存中的进程形态包括标识符,状态,优先级,程序计数器,内存指针,上下文数据,IO状态信息,记账信息等。
标识符:标识符唯一标记一个进程,用于区别其他进程。PID
状态:标记进程的进程状态,如:运行态
优先级:任务状态,退出代码,进程信号等
程序计数器:进程即将被执行的下一条指令的地址
内存指针:程序代码、进程数据相关指针
上下文数据:进程执行时处理器存储的数据
io状态信息:被进程IO操作所占用的文件列表
记账信息:使用处理器时间、时钟数总和等
进程和线程

什么是线程?
线程是操作系统进行运行调度的最小单位,包含在进程之中,是进程中实际运行工作的单位。 一个进程可以并发多个线程,每个线程执行不同的任务。同时如上图所示,进程和线程共享进程的资源。
进程的五个状态
包括创建,就绪,执行,阻塞,终止。
就绪状态:当进程分配到除了cpu之外的资源,就差cpu就可以执行时,该状态就叫就绪状态。处于多个就绪状态的进程会排成就绪队列等待执行。
执行状态:进程分配到了cpu正在执行的状态被称为执行状态。在单处理机中,同一个时刻只能有一个进程在执行状态。
阻塞状态:进程因某种原因放弃cpu的状态被称为阻塞状态。如其他设备未就绪。插入阻塞队列等待Io完成

(五状态模型)
创建状态:创建进程时拥有PCB但是其他资源未准备就绪的状态被称为创建状态
linux下进程有三种类型,前台进程,后台进程,守护进程,守护进程是特殊的后台进程,一直运行到系统关闭,一般以d做结尾的就是守护进程daemon,如mysqld,cornd,httpd。
操作系统提供fork函数创建进程
归还状态:进程结束由系统清理或者归还PCB的状态称为终止状态
进程同步问题
我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步,防止并发进程执行造成结果上的混乱,比如生产者-消费者模型,哲学家进餐问题。
临界资源:临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。
同步原则:空闲则进,忙则等待,有限等待(有限时间等待),让权等待(等待时进程让出cpu)
进程间同步的三种方法有消息队列,共享存储,信号量
进程内的多线程共享进程资源,也需要同步
线程同步的四种方法有读写锁,自旋锁,互斥量和条件变量
linux的进程管理
linux下进程有三种类型,前台进程,后台进程,守护进程,守护进程是特殊的后台进程,一直运行到系统关闭,一般以d做结尾的就是守护进程daemon,如mysqld,cornd,httpd。
进程的id(pid)非零正整数,进程的唯一标记。
父子进程关系
进程A调用fork创建进程B,可以通过pstree命令查看。
ID为0的进程为idle进程,是系统创建的第一个进程,ID为1的进程时init进程时0进程的紫禁城,完成系统初始化。
linux系统启动分为五步:内核的引导。运行 init。系统初始化。建立终端 。用户登录系统。
进程的状态标记:

可以通过jobs查看当前在后台运行的进程
◆ fg命令将一个后台命令调换至前台终端继续执行
◆ bg命令将一个后台暂停的命令变成继续执行
◆ ctrl+z将前台工作暂停
nohup可以不挂断的运行命令。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具