3.2 进程管理

进程是一个具有独立功能的程序关于数据数据集合的一次可以并发执行的运行活动,是系统进行资源分配和调度的基本单位。相对于程序,进程是动态的概念,而程序是静态概念,是指令的集合。进程具有动态性和并发性,需要一定的资源(CPU时间、内存、文件和IO设备等)来完成其任务。这些资源在创建进程或执行被分别。在大多数操作系统中,进程是进行资源分配和调度的基本单位。

3.2.1 进程的状态

1.三态模型
进程具有三种最基本的状态,分别是运行、就绪和阻塞。

  • 运行状态:是进程占用处理机正在执行其程序的状态,在单机处理机系统中,某个时刻只能有一个进程处于运行状态。在多处理机系统中,可能有多个进程同时处于运行状态。
  • 阻塞状态:也称为等待状态或者睡眠状态,是进程由于等待某个事件的发生而处于暂停执行的状态。
  • 就绪状态 :是进程已分配到除处理机外的所有必要资源,具备了执行的条件,等待处理机调度的状态。
  1. 五态模型
    由于进程的不断创建,系统资源特别是内存资源已不能满足所有的进程运行的要求,这个时候就必须将某些进程挂起,放到磁盘对换区,暂时不参加调度,以均衡负载。

进程挂起的原因可能是系统故障、用户调试程序、检查问题。

  • 活跃就绪 :是指进程在内存并且可被调度的状态。
  • 静止就绪:是指进程被对换到外存时的就绪状态,是不能被直接调度的状态,只有当内存中没有活跃就绪态进程,或者挂起就绪态进程具有更高的优先级,系统才能把挂起就绪态进程调回内存,并转为活跃就绪。
  • 活跃阻塞:是指进程已在内存,一旦所等待的事件发生,便进入活跃就绪态。
  • 静止阻塞 :是指进程对换到外存时的阻塞状态,一旦等待的事件发生,便进入静止就绪状态。

3.2.2 信号量与PV操作

在多道程序系统中,由于系统资源共享与进程合作,使各进程之间可能产生两种形式的制约关系,一种是间接相互制约,一种是直接相互制约。进程同步主要源于进程合作,是进程之间共同完成一项任务时直接发生相互作用的关系,为进程之间的直接制约关系。

1.信号量
信号量是一个二元数组(S,Q),其中S是一个整形变量,初始值为非负数,Q为一个初始状态为空的等待队列。在多道程序系统中,信号量机制是一种有效的实现进程同步与互斥的工具。

信号量的值通常表示系统中某种资源的数目,若它大于0,则表示系统中当前可用资源的爽;若小于0则表示等待使用该资源的进程数目。

PV操作是对信号量进行处理的操作过程,而且信号量只能由PV操作来改变。P操作是对信号量减1,意味着请求系统分配一个单位资源,若系统无可用资源,则进程变为阻塞状态;V操作是对信号量加1,意味着释放一个单位资源,加1后若信号量小于0,则从就绪队列中唤醒一个进程,执行V操作的进程继续执行。

2.实现互斥模型
使用信号量机制实现互斥时,需要为临界资源设置一个互斥信号量S,其初始值通常为1.在每个进程中将临界区代码置于P(S)和V(S)直接。

3.实现同步模型
使用信号量机制实现同步时,需要为进程设置同步信号量,其初始值通常为0.进程需要同步的地方分别插入P(S)和V(S)。

3.死锁问题

当若干个进程竞争使用资源时,如果每个进程都占有了一定资源,又申请使用已被另一个进程占用、且不能抢占的资源,则所有的这些进程纷纷进入阻塞状态,不能继续运行,即系统中两个或两个以上的进程无限期地等待永远不会发生的条件,系统处于一种停滞状态,这种现象称为死锁。
死锁4个必要条件

  • 互斥条件 :任一时刻只允许一个进程使用资源
  • 不剥夺条件 :进程已经占用资源,不会被剥夺
  • 请求和保持条件:进程在请求其余资源时,不主动释放已经占有资源。
  • 环路条件 :环路中每一条边都是进程在请求另一个进程已占有的资源。
    3.1 死锁预防
  • 破坏互斥条件
  • 破坏不剥夺条件
  • 破坏请求与保持条件
  • 破坏环路条件
    3.2死锁避免
    死锁避免是将限制条件弱化,允许死锁存在,但不让他发生,设置一种安全状态,进程按照某种顺序来为其分配资源。

4 线程管理
在现代操作系统中,通常都引进了线程的概念。线程是进程的活动成分,是处理器分配资源的最小单位,它可以共享进程的资源与地址空间,通过线程的活动,进程可以提供多种服务(对系统进程而言)或实行子任务并行(对用户进程而言)。每个进程创建时只有一个线程,根据需要在运行过程中创建更多线程,只有主线程的进程才是传统意义下的进程。
1.线程的实现

线程基本上不拥有系统资源,只拥有在运行中必不可少的资源,如:线程状态、寄存器上下文和栈等,它可以与同属于一个进程的其他线程共享进程所拥有的全部资源。线程的实现方式主要有以下三种:

  • 内核线程。
  • 用户线程
  • 轻权进程

2.与进程的比较
在引入线程的操作系统中,通常一个进程有若干个线程,至少有一个线程。区别提现在以下5点:

  • 调度
  • 并发性
  • 拥有资源
  • 系统开销
  • 通信方面

3.多线程模型

  • 多对一模型
  • 一对一模型
  • 多对多模型
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容