Skip to content

进程状态

  • 运行状态(Running);

  • 就绪状态(Ready):可运行,在排队;

  • 阻塞状态(Block):等待某个事件的发生,在运行中途中断了;

  • 挂起状态: 静止阻塞和静止就绪

静止阻塞 -> 静止就绪 -> 活动就绪

创建状态(new):进程正在被创建时的状态; 结束状态(Exit):进程正在从系统中消失时的状态;

进程特性:

  • 并发性、独立性、异步性、动态性(生命周期)

进程 与 程序 的区别

  • 程序只是静态的实体,是一组指令的集合,而进程则是动态的,具有从创建到销毁的生命周期,存储在内存中;
  • 程序无并发性一说;
  • 资源上,程序无资源分配一说;进程可以分配IO等资源(硬件、软件等等资源)
  • 上下文
  • 通信与同步

线程:线程是进程当中的一条执行流程

优点:并发、共享资源;

进程拥有独立的资源,比如打开的文件,比如内存;线程只独享必不可少的资源,如寄存器和栈;

线程则是cpu调度的单位,同样有就绪阻塞执行三种状态,同样有转换关系

进程调度:线程是调度的基本单位,这里的进程调度指的是调度只有单个“主线程”的进程

抢占调度:从运行到等待,从运行到终止 非抢占调度:从运行到就绪,从等待到就绪

调度算法:

  • 先来先服务(First Come First Severd, FCFS)算法

  • 最短作业优先(Shortest Job First, SJF)调度算法 短作业多了,会使得长作业积压,一直不执行

  • 高响应比优先 (Highest Response Ratio Next, HRRN)调度算法

  • 多级反馈队列(Multilevel Feedback Queue)调度算法 •「多级」表示有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短。 •「反馈」表示如果有新的进程加入优先级高的队列时,立刻停止当前正在运行的进程,转而去运行优先 级高的队列;

  • 时间片轮转(Round Robin, RR)调度算法 分时系统使用这个算法:

每个进程都会分配一个时间片,该进程只被允许在这个时间片内运行; 时间片如果先用完,会停止进程 如果进程

进程同步

防止因为并发而导致的数据不一致问题

常用方案:

  • 信号量 P/V 需手动管理,易出现死锁或优先级反转。
  • 互斥锁(Mutex) 仅解决互斥,无法直接处理同步问题(如顺序执行)。
  • 条件变量(Condition Variable)
  • Java中的管程,其中底层是条件变量
  • 消息传递(Message Passing) 原理:进程通过发送/接收消息(如管道、Socket)间接通信,避免共享内存。 优点:天然隔离共享数据,避免竞态条件。 缺点:通信开销较大,适合分布式系统。
go
ch := make(chan int)
go func() { ch <- 42 }()  // 发送消息
value := <-ch            // 接收消息

临界资源(Critical Resource)

指在多道程序系统中,那些一次只允许一个进程使用的资源。 临界资源在本质上是不可共享的,因为它们需要被互斥访问。

本站访客数 人次 本站总访问量