操作系统(2) -- 进程管理

2.1 进程与线程

  1. 为什么引入进程?

    多道程序环境下,允许多个程序并发执行,为了更好的描述和控制程序的并发执行,实现操作系统的并发性和共享性

  2. 进程:

    1. 进程控制块(process control block,PCB):利用PCB描述进程的基本情况和运行态,进而控制和管理进程。是进程存在的唯一标志。

    2. 程序段,数据段,PCB组成进程实体

    3. 进程:是进程实体的运行过程,是系统进行资源分配(资源指处理机、存储器、其他涩北服务于某个进程的时间)和调度的一个独立单位(未引入线程)

    4. 进程的基本特征:动态性、并发性、独立性、异步性、结构性

    5. 进程的状态与转换

      • 通常有5种,前3种是基本状态:运行态、就绪态、阻塞态(等待态)、创建态、结束态

    6. 进程控制:进程创建,进程终止,进程阻塞与唤醒,进程切换

    7. 进程的组织

      • 进程控制块:进程描述信息,进程控制和管理信息,资源分配清单和处理机相关信息;PCB组织方式有链接方式和索引方式

      • 程序段:能被进程调度程序调到CPU执行的程序代码段,可被多个进程共享

      • 数据段

    8. 进程通信:

      1. 共享存储:进程之间存在一块可直接访问的共享空间,通过对共享空间的读写实现信息交换。操作系统负责为通信进程提供可共享的存储空间和同步互斥工具

      2. 消息传递:以格式化的消息为单位,通过发送消息和接收消息两个原语进行数据交换

        • 直接通信:直接挂在接收进程的消息队列

        • 间接通信:发到某个中间实体(信箱)

      3. 管道通信:用 一个用于连接读进程和写进程的共享文件 实现通信。以字符流形式发送。管道只能半双工通信。且一旦数据被读取,就从管道中抛弃,释放空间。

  3. 线程:

    1. 引入线程的目的

      减小程序在并发执行时所付出的时空开销,提供操作系统的并发性能。

    2. 线程:一个基本的CPU执行单元,程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,与同属于一个进程的其他线程共享进程的资源。

    3. 进程内涵改变:引入线程后,进程作为除CPU外的系统资源的分配单元,线程作为处理机的分配单元

    4. 线程属性:轻型实体,不拥有资源,有唯一标识线程控制块;不同线程可执行相同程序;同进程中不同线程共享进程资源;线程是处理机调度单位,多线程可以并发;

    5. 线程实现方式

      • 用户级线程:线程管理由应用程序完成,通过线程库设计

      • 内核级线程:线程管理由内核完成,应用程序没有线程管理的代码,有一个到内核级线程的编程接口

      • 组合方式

  4. 线程与进程比较

    1. 调度:线程是独立调度的基本单位,线程是拥有资源的基本单位

    2. 拥有资源:线程没有系统资源,进程拥有资源,但线程可以访问进程的资源

    3. 并发性:进程可以并发,线程也可以

    4. 系统开销:线程开销小,进程开销大

    5. 地址空间和其他资源:进程地址空间相互独立,线程没有自己独立的地址空寂,它共享其所属进程的空间

    6. 通信:线程通信需要进程同步和互斥手段,线程可以直接读写进程数据段通信

  5. 单处理系统,发生死锁时全部进程处于阻塞态

  6. 阻塞态转就绪态不会引起另一个进程的状态变化

  7. I/O操作完成之前进程在等待结果,状态为阻塞态;完成后进程等待事件就绪,变成就绪态。

  8. 运行态到阻塞态的状态转换是进程自身决定的

 

2.2 处理机调度

  1. 处理机调度:把处理机分配给某个进程,处理机调度是多道程序操作系统的基础

  2. 调度层次:作业调度、中级调度、进程调度,进程调度是最基本的,不可缺少

  3. 不能进行进程切换的情况:

    1. 处理中断

    2. 进程在操作系统内核程序临界区

    3. 其他需要完全屏蔽中断的原子操作过程中

  4. 进程调度方式:非剥夺,剥夺

  5. 调度的基本准则

    1. CPU利用率

    2. 系统吞吐量:单位时间内CPU完成作业的数量

    3. 周转时间:从作业提交到作业完成所经历的时间;周转时间 = 作业完成时间 - 作业提交时间

    4. 平均周转时间:多个作业周转时间的平均值

    5. 带权周转时间:作业周转时间/作业实际运行时间

    6. 等待时间

    7. 响应时间:从用户提交请求到系统首次产生响应所用的时间

  6. 调度算法

    1. 先来先服务(FCFS):选最先进入队列的作业调入内存,分配资源创建进程放入就绪队列;不可剥夺;算法简单,对长作业有利,对短作业不利,有利于CPU繁忙型作业,不利于I/O繁忙型作业

    2. 短作业优先(SJF):选择运行时间最短的作业;对长作业不利,导致饥饿现象,没有考虑作业的紧迫程度;SJF平均等待时间,平均周转时间最少

    3. 优先级调度:选择优先级最高的作业;分非剥夺式和剥夺式;

    4. 高响应比优先:选择响应比最高的作业运行;响应比 = (1+等待时间/要求服务时间)

    5. 时间片轮转调度:适用分时系统。将就绪进程排序,每个进行运行一个时间片。

    6. 多级反馈队列调度算法:动态调整进程优先级和时间片的大小;设置多个就绪队列,赋予不同优先级,赋予各个队列中进程执行时间片的大小各不相同,优先级越高,时间片越小

  7. 分时操作系统调度:高响应比,时间片轮转,多级反馈队列调度

  8. 实时操作系统调度:优先级调度算法

 

2.3 进程同步

  1. 基本概念:

    1. 临界资源:一次仅允许一个进程使用的资源

    2. 临界区:访问临界资源的那段代码

    3. 同步:直接制约关系,为完成某种任务而建立的两个或多个进程,需要在某些位置上协调工作次序,传递信息所产生的制约关系

    4. 互斥:间接制约关系,一个进程进入临界区,另一个进程必须等待

    5. 同步机制准则:空闲让进,忙则等待,有限等待,让权等待

  2. 实现临界区互斥的基本办法:

    1. 软件实现方法:

      • 单标志法

      • 双标志先检查

      • 双标志后检查

      • Peterson's Algorithm

    2. 硬件实现方法:

      • TestAndSet方法

      • 中断屏蔽方法(关中断)

    3. 信号量:

      • P,V操作,P请求资源,V释放资源

      • 同步信号量初值为0

      • 互斥信号量初值为1

      • 应用:若某个行为要用某种资源,在这个行为前P这种资源;若某行为提供某资源,在这个行为后V这种资源。在互斥问题中,P,V操作要求夹紧使用互斥资源的那个行为,中间不能有其他冗余代码。

    4. 管程:

      1. 定义:一组数据及定义在这组数据上的对这组数组的操作组成的软件模块

      2. 组成:局部于管程的共享数据结构说明;对该数据结构进行操作的一组过程;对局部于管程的共享数据设置初始值额语句

      3. 特性:局部于管程的数据只能被局部于管程内的过程所访问;一个进程只有调用管程内过程才能进入管程访问共享数据;每次运行一个进程在管程内执行某个内部过程

    5. 同步问题:

      • 生产者--消费者问题

      • 读者--写者问题

      • 哲学家进餐问题

      • 吸烟者问题

  3. 硬件方法实现进程同步不能实现让权等待,Peterson算法满足有限等待不满足让权等待。

 

 

2.4 死锁

  1. 死锁的概念:

    1. 死锁:指多个进程因为竞争资源而造成一种僵局,若无外力作用,这些进程都无法向前推进

    2. 产生原因:

      1. 争用系统资源

      2. 进程推进顺序非法

    3. 死锁产生的必要条件,只要一个不满足,死锁就不会发生

      1. 互斥条件

      2. 不剥夺条件

      3. 请求并保持

      4. 循环等待

  2. 死锁的处理策略

    1. 死锁预防:破坏死锁产生的4个必要条件之一即可

    2. 死锁避免

      1. 系统安全状态:允许进程动态申请资源,但系统在进行资源分配之前,先计算此次资源分配的安全性。若此次分配导致系统进入不安全的状态,就让进程等待,否则,分配资源。

      2. 银行家算法:OS为银行家,OS管理的资源为资金,进程向OS请求资源相当于贷款。OS按规则为进程分配资源。当进程首次申请资源,要测试该进程对资源的最大需求量,若可满足,则按当前申请量分配资源,否则推迟分配。当进程执行中继续申请资源,测试当前占用和申请的资源是否超过最大需求量,超过拒绝,未超过测试现有资源是否满足最大需求量,满足则分配申请的资源,否则推迟分配。

    3. 死锁检测及解除

      1. 资源分配图

      2. 死锁定理:S为死锁状态的条件是当且仅当S状态的资源分配图是不可完全简化的。

      3. 死锁解除:

        1. 资源剥夺法

        2. 撤销进程法

        3. 进程回退法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值