操作系统-进程与线程

操作系统合集

操作系统-计算机系统概述

操作系统-进程与线程

操作系统-内存管理

操作系统-文件系统

操作系统-IO设备

  • 进程与线程

    • 组成

      • PCB(进程存在唯一标识)

        • 内容

          • 进程描述信息

            进程标识符和用户标识符

          • 进程控制和管理信息

            进程状态和进程优先级

          • 资源分配清单

            地址空间

          • 处理机相关信息

            各寄存器的值

        • 组织方式

          • 链接方式

            • 将不同状态的PDB链接成不同队列

          • 索引方式

            • 不同索引表指向不同状态的PDB(就绪索引表,阻塞索引表)

      • 程序段(存放要执行的代码)

      • 数据段(存放程序运行中的各种数据)

    • 特征

      • 动态性

      • 并发性

      • 独立性

      • 异步性

      • 结构性

    • 状态转换

      • 三种状态转换

      • 7种状态

    • 控制

      • 创建

      • 终止

      • 阻塞和唤醒

      • 切换

    • 进程的通信

      • 共享存储

      • 消息传递

        需要发送原语和接收原语

        • 直接通信

        • 间接通信

      • 管道通信

    • 线程与多线程模型

      • 基本概念

      • 线程与进程比较

        • 进程是资源分配的基本单位,线程是调度的基本单位

      • 线程属性

      • 实现方式

        • 用户级线程

          进程切换可直接在用户态进行

        • 内核级线程

          进程切换在核心态进行

        • 组合方式

      • 多线程模型

        • 多对一

          • 优点:线程切换在用户空间完成,系统开销小,效率高

          • 缺点:当一个用户线程阻塞整个进程阻塞,并发度不高,不能并行运行

        • 多对多

          • 优点:

          • 缺点

        • 一对一

          • 优点:

          • 缺点

  • 处理机调度

    • 三级调度

      • 高级调度(作业调度)

        内存与辅存之间的调度,每个作业只调入调出一次。

      • 中级调度(内存调度)

        存储器管理中对换功能,提高内存利用率和系统吞吐量

      • 低级调度(进程调度)

        按照某种算法从就绪队列选取进程运行

      • 联系

        • 作业调度为进程调度做准备

        • 中级调度将暂时不能运行的进程挂起

        • 调度等级越低调用频率越高

        • 进程调度不可缺少

    • 调度目标

      • cpu利用率

      • 系统吞吐量

        单位时间内完成作业的数量 长作业消耗时间长会降低系统吞吐量,短作业消耗时间短会提高系统吞吐量

      • 周转时间

        周转时间=作业完成时间-作业提交时间 带权周转书简=周转时间/运行时间

      • 等待时间

        进程处于等待处理机的时间之和

      • 响应时间

        从用户请求到首次响应时间

    • 调度实现

      • 调度程序(调度器)

        • 排队器

          将就绪进程按一定策略排成队列

        • 分配器

          将进程取出分配cpu

        • 上下文切换器

          处理机切换时会发生两队切换操作

      • 调度时机、切换与过程

        • 不能进行切换和调度过程

          • 在处理中断过程

          • 进程在操作系统内核临界区中(普通临界区是可以的)

          • 需要屏蔽中断的原子操作

        • 应该进行进程切换和调度

          • 非剥夺调度:具有调度条件且当前进程无法继续运行

          • 剥夺调度:中断处理结束或自陷处理,返回被中断进程的用户程序前。

      • 进程调度方式

      • 闲逛进程

        系统中没有就绪进程就会调用闲逛进程并测试中断,没有其它进程就绪时一直运行

      • 两种线程调度

        • 用户级:选择进程给予时间控制,由进程中调度程序决定那个线程运行

        • 内核级:由内核选择特定线程运行,给予一个时间片,超时后挂起。

    • 调度算法

      • 先来先服务FCFS

        • 非抢占式算法,不会存在饥饿

        • 对长作业有利对短作业不利

      • 短作业优先SJF

        • 优点:平均等待时间和周转时间短

        • 缺点:对短作业有利,对长作业不利,会产生饥饿现象

      • 优先级

        • 分为抢占式和不可抢占式

      • 高响应比优先

        • 响应比=(等待时间+服务时间)/服务时间

        • 优点:综合考虑了等待时间和运行时间,不会产生饥饿现象

        • 等待时间相同时服务时间短优先,服务时间相同时,等待时间长优先,

      • 时间片轮转RR

        • 抢占式算法

      • 多级队列

        • 解决单一调度策略的缺点,使用多个队列实现不同调度算法

      • 多级反馈队列

        • 设置多个就绪队列并赋予不同优先级

        • 每个队列运行时间片大小不同

        • 每个队列采用FCFS算法

        • 按队列优先级调度

    • 进程切换

      • 上下文切换

      • 上下文切换的消耗

      • 上下文切换与模式切换

  • 死锁

    • 定义

    • 死锁,饥饿,死循环区别

    • 死锁产生的条件

      • 互斥条件

      • 请求保持条件

      • 循环等待条件

      • 不可剥夺条件

    • 什么时候发生死锁

      • 对系统资源竞争

      • 进程推进顺序非法

      • 信号量使用不当

    • 死锁处理策略

      • 预防死锁

        • 破坏互斥条件

          • 方法:将互斥使用的资源改为允许共享使用,如SPOOLing技术

          • 缺点:不是所有资源都可共享使用,为例安全很多时候无法破坏互斥条件

        • 破坏请求保持条件

          • 方法:采用静态分配方法

          • 缺点:资源利用率低,可能导致某些进程饥饿

        • 破坏循环等待条件

          • 方法:顺序资源分配法,必须按照编号递增顺序请求资源

          • 缺点:

            • 不方便增加设备,否则徐重新分配编号

            • 实际使用资源顺序可能和编号递增顺序不一致,导致资源浪费

            • 必须按照规定申请资源,用户编程麻烦。

        • 破坏不可剥夺条件

          • 方法:

            • 进程请求新资源得不到满足时需要全部释放保持的所有资源,以后重新申请

            • 使用进程优先级采用资源剥夺方式

          • 缺点:

            • 实现复杂

            • 释放资源会使前面工作失效,只适用于易保存和恢复状态的资源

            • 反复请求和释放资源会增减系统开销,降低系统吞吐量

            • 可能会导致进程饥饿

      • 避免死锁

        • 系统安全状态

          • 只要能找到一个安全序列系统就是安全状态,否则为不安全状态

          • 系统处于安全状态就一定不会发送死锁,系统进入不安全状态就可能发生死锁

        • 银行家算法

      • 死锁检测与解除

        • 资源分配图

        • 死锁定理

          • 如果某时刻系统的资源分配图是不可完全简化的,此时系统死锁

        • 死锁解除

          • 资源剥夺法

            • 挂起死锁进程,抢占它的资源

          • 撤销进程法

            • 撤销部分或全部死锁进程

          • 进程回退法

            • 让进程回退到足以避免死锁的地步

          • 如何决定对谁动手?

            • 进程优先级

            • 已执行多长时间

            • 还要多久完成

            • 进程已经使用多少资源

            • 进程是交互式还是批处理

    • 不产生死锁最小资源数量

      • n个进程最多使用m个资源,则最少需要n*(m-1)+1个资源

  • 同步与互斥

    • 进程同步

      • 并发带来的异步性有时需要进程同步才能解决

    • 进程互斥

      • 四个部分

        • 进入区

          • 检查能否进入,进入后上锁

        • 临界区

          • 访问临界资源的代码

        • 退出区

          • 负责解锁

        • 剩余区

          • 其余代码部分

      • 临界资源

        • 必须是共享的数据

      • 遵循原则

        • 空闲让进

          • 临界区空闲时应允许一个进程访问

        • 忙则等待

          • 正访问临界资源的进程等待时允许其它进程抢占处理机,但不能进程该进程临界区

        • 有限等待

        • 让权等待

          • 进不了临界区的进程徐释放处理机,防止忙等

    • 实现临界区互斥方法

      • 软件实现

        • 单标志法

        • 双标志先检查

        • 双标志后检查

        • peterson算法

      • 硬件实现

        • 中断屏蔽算法

        • TestAndSet指令

        • Swap指令

    • 信号量

      • PV操作

        • P操作:wait(S),请求一个单位的该类资源

        • V操作:signal(S),释放一个单位的该类资源

      • 整型信号量

        表示系统中某种资源的数量

        • 对信号量的操作:初始化,P操作,V操作

        • 优点:避免并发和异步问题

        • 缺点:不满足让权等待,会发生忙等

      • 记录型信号量

        • S.value的初值表示某种资源的数目,负数的绝对值表示等待进入临界区的进程数

        • P操作会执行S.value--,当S.value<0时分配完毕,进程进入自我阻塞状态,遵循“让权等待”原则

        • S操作会执行S.value++,当S.value<=0时调用wekeup原语唤醒等待队列第一个进程(阻塞态—>就绪态)

      • 利用信号量实现同步

        • 设置同步信号量S,初始值为0

        • 在“前操作”之后执行V(S)

        • 在“后操作”之后执行P(S)

      • 利用信号量实现互斥

        • 设置互斥信号量mutex,初值为1

        • 在进入区P(mutex)——申请资源

        • 在退出区V(mutex)——释放资源

        • 对不同临界资源设置不同的互斥信号量

      • 利用信号量实现前驱关系

    • 经典同步问题

      • 生产者消费者

      • 哲学家进餐问题

      • 吸烟者问题

    • 管程

      解决信号量机制编码麻烦,易出错问题

      • 组成

        • 共享数据结构

        • 对数据结构初始化的语句

        • 一组访问数据结构的过程(函数)

      • 特征

        • 局部于管程的数据只能被局部于管程的过程访问

        • 进程/线程只能通过管程特定过程(函数)才能访问共享数据

        • 每次只能允许一个进程在管程内部执行某个内部过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值