12月26号 操作系统复习笔记

进程状态及其转换

  1. 不同系统设置的进程状态数目不同
  2. 至少具有三种基本状态

就绪状态:已得到除CPU以外的资源
运行状态:占用CPU
等待(阻塞)状态:正在等待某一事件发生 根据原因可以设置多个阻塞队列

Linux进程树型体系
系统启动时,由操作系统创建一部分承担系统资源分配和管理工作的系统进程。

引起进程终止的事件
①正常结束:exit
②异常结束:越界错误,保护错,特权指令错、非法错误错、运行超时、等待超时、算术运算错、I/O故障。
③外界干预:系统kill进程,父进程终止,父进程请求。

为什么要引入线程:

这个得先从进程说起。

进程:

  1. 一个可拥有资源的基本单位
  2. 一个可独立调度的基本单位

进程把一组相关的资源组合起来,构成了一个资源平台,不对之进行频繁的切换。

作为调度的基本单位,线程是代码在资源平台上的一条执行流程。

引入进程的目的:多个程序并发执行,改善资源利用率,提高系统吞吐量。

引入线程的目的:减少程序并发执行的时空开销。

线程的基本概念
A thread is a single execution sequence that represents a separately schedulble task.
进程当中的一条执行流程,CPU调度的基本单位。

引入线程的好处

  1. 创建一个新线程花费时间少
  2. 两个进程的切换花费时间少
  3. 在多处理器系统上,支持真正的并行处理(paralleism)
  4. 便于共享数据

线程的实现
用户线程:解决上下文切换的问题

内核线程:发挥处理器的并发优势

线程与进程的比较
1.进程=线程+资源平台
2.晋城市资源分配的基本单位

进城拥有一个完整的虚拟地址空间,县城没有自己的地址空间。

线程没有独立资源,共享隶属进程资源。

系统开销:进程的创建,切换和撤销的开销远大于线程。

资源共享所引起的制约
临界区:不允许多个并发进程交叉执行的一段程序
并发进程的制约关系
间接制约(进程互斥)——共享引起的在临界区内不逊于并发进程交叉执行的现象。
举个栗子:A、B进程共同竞争打印机

直接制约(进程同步)——共享对方的私有资源所引起的制约
进程间的合作: 输入计算进程、计算进程、打印进程

互斥加锁

  1. 加锁法的问题:不能完全保证“只允许一个进程进入临界区”。
  2. 循环测试锁消耗较多的CPU计算时间。
  3. 某些情况下出现不公平现象。

信号量和PV原语
信号量(Semaphore)
荷兰科学家 E.W.Dijkstra
信号量S是一个整数,与资源对应。

  • s>0: s个资源可用
  • s == 0:无资源可用
  • s<0: |s| 表示s等待队列中的进程个数

P,V原语
访问信号量的原子操作,不可中断。
P(sem)>>>>>>>>>>>>>> sem-1<<<<<<<<<申请一个资源
V(sem)>>>>>>>>>>>>>>>sem+1<<<<<<<<<释放一个资源

私用信号量
私用信号量
进程同步,制约进程与被制约进程之间
初值:0或某个正整数n。表示资源的数目。

公用信号量
互斥信号量
联系一组并发进程,初值为1,每个进程均可施加P,V操作。

soshite
著名的“生产者-消费者问题”
并发的进程的同步,互斥问题的一般化
资源的消费者,至少有一个缓冲区满
生产者想发送数据,至少一个缓冲区为空。

资源的消费者:使用某一类资源的进程
资源的生产者:释放某一类资源的进程

同步:消费者想接收数据,至少一个缓冲区满
生产者想发送数据,至少一个缓冲区为空。

互斥:每个缓冲区是临界资源。

进程同步与互斥的关系:互斥进程共享资源的使用权,竞争没有固定的必然联系。

同步进程间有一种必然的联系

死锁问题 死锁概述、死锁避免、死锁的检测和解除

死锁的概述
“死锁” (deadlock):事情无法进展下去的情形

死锁的定义
一组并发进程彼此互相等待对方的资源。
在得到对方的资源之前不释放自己的资源。
若无外力推动,各进程不能继续向前推进的僵死状态。

死锁的原因
并发进程的资源竞争
系统中的资源不足以同时满足并发进程的需要 CPU、内存。

可抢占的资源:一个进程正在使用某资源时,将它拿走而不会对该进程产生不良影响。
不可抢占的资源:一个进程正在使用某资源时,将它拿走,会导致该进程运行失败。例如:光盘刻录机。

死锁主要由不可抢占资源引起
进程推进和释放资源的顺序不当。

死锁的必要条件
互斥条件:涉及的资源是临界性
不可抢占条件:进程占用的资源,不会被强制性拿走,由该进程主动释放。
部分分配:进程在等待一新资源时继续占有已分配的资源
环路等待条件:存在一种进程的循环链,链中的每一个进程已获得资源的同时被下一个进程所请求。

死锁的应对策略——无为而治 鸵鸟政策

死锁预防
动态避免
检测并恢复

死锁的避免——银行家算法
安全状态:自身不存在死锁问题,存在着某种调度顺序,在最坏的情况下(所有进程请求他们最大数目的管理,每一个进程都能顺利结束)

死锁的检测和解除
思索的检测算法
确定是否是存在环路等待条件,资源分配 RAG 死锁定理。
死锁的解除:剥夺资源、进程回退、撤销进程。

资源分配图(RAG)
资源:方框表示 资源个数:方框中的黑圆点表示
进程:
圆圈中加进程名表示

分配边:资源->进程的一条有向边
申请边:资源类的一条有向边

资源图的化简(过于简单。。。略)

进程通信
进程间的信息交换:低级通信 控制信息的交换 只传送一个 或几个字节的信息,控制进程执行的速度,锁,信号量机制、效率低。
按通信内容划分:大批量数据交换
效率高
通信实现细节对用户透明,直接利用操作系统所提供的命令。


进程的通信方式:消息缓冲通信

进程的通信方式——消息
信息单位:消息
方式:
直接通信(消息缓冲机制):本地进程
间接通信(信箱):网络上的异地进程之间

实现:一组通信命令(原语)
特点:缓冲区或邮箱存放被传送消息
发送与接受之间无直接联系关系


进程的通信方式——共享存储区
基于共享数据结构:软件共享

  1. 生产者——消费者的有界缓冲区
  2. 数据结构的设置及进程间同步由用户完成

基于共享存储区:硬件共享

  1. 系统提供共享存储区
  2. 不要求数据的移动
  3. 特点:高效,速度快、传递大量数据

进程的通信方式——管道
管道通信:UNIX首创,借助文件和文件系统形成,用于本地的写作进程之间。

管道:用于连接一个读进程和一个写进程的pipe文件

逻辑上:管道文件
物理上:文件系统的高速缓冲区组成

消息缓冲:内存缓冲区为基础
管道:以文件系统为基础

处理机管理
衡量调度策略的指标
周转时间、吞吐率、响应时间、设备利用率

处理机调度
分级调度、作业调度、进程调度、调度算法

分级调度
1.提交状态
作业处于从输入设备进入外部存储设备

2.后备状态
作业的全部信息全部输入到输入井,还没被调度前。

3.运行状态
被作业调度程序选中而送入主存中投入运行。

4.完成状态
运行完毕,它所占用的资源尚未被系统全部回收

2018年12月28日00:13:59-----累了 休息会儿

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值