数据库之操作系统——笔记

进程

进程的基本概念以及状态变化

  • 进程三态图
    在这里插入图片描述
    就绪状态:进程已得到运行所需资源,只等待CPU的调度便可运行;
    运行状态:进程已得到运行所需资源,并且得到了CPU的调度;
    等待状态(阻塞状态):不具备运行条件、等待时机的状态。
    就绪状态和等待状态的区别:就绪状态只是等待CPU,等待状态是等CPU以外的其他资源,如打印机。
  • 五态图
    在这里插入图片描述

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

进程死锁

如果一个进程再等待一个不可能发生的事,则进程就死锁了。如果一个或多个进程产生死锁,就会造成系统死锁。如果一个或多个进程产生死锁,就会造成系统死锁。
假设进程A、B、C。这三个进程都需要5个系统资源,则系统最少绝对不会发生死锁的系统资源数为(5-1)+(5-1)+(5-1)+1=13

死锁产生的必要条件

  1. 互斥条件,即每个资源一次只能被一个进程使用。
  2. 保持和等待条件,当进程已拥有某些资源,但申请其他资源时被阻塞
  3. 不剥夺条件
  4. 环路等待条件

解决死锁的策略

  1. 死锁的预防,用户申请资源时请申请所需的全部资源,这就破坏了保持和等待的条件;将资源分层,得到上一层资源后才能够申请下一层资源,从而破坏环路等待条件。缺点:预防会降低系统效率。
  2. 死锁的避免,即进程在每次申请资源时判断此操作是否安全。如**“银行家算法”**。缺点:这种算法会增加系统开销。
  3. 死锁的检测*,判断系统是否处于死锁状态,如果是则执行死锁解除策略。
  4. 死锁的解除*,将资源强行分配给别的进程,与检测配合使用。

银行家算法

我们假设有进程P1,P2,…Pn
则安全序列要求满足:Pi(1<=i<=n)需要资源<=剩余资源 + 分配给Pj(1 <= j < i)资源
每设计加入一个进程都要用上面式子检测一下,是否有安全序列。

进程同步,信号量,前驱图,PV原语

前驱图

前驱图为有向无循环图,用于描述进程之间执行的前后关系。图中每个结点用于描述一个程序段或进程,乃至一条语句。结点间的有向边则用于表示两个结点之间存在的偏序或前驱关系。
P i P j P_{i}\rightarrow P_{j}
Pi是Pj的直接前驱,Pj是Pi的直接后驱,只有前驱没有后驱的是终止结点,只有后驱没有前驱的是初始结点。

PV操作

参考地址
是为了解决互斥同步问题。
P操作:
for(i=s;i>=0;i–)
{
继续执行本进程
}
挂起本进程或等待本进程

V操作:
for(i=s;i<=0;i++)
{
唤醒s队列中的等待进程,继续执行程序
}
不唤醒s队列中的等待进程
临界资源,是指进程间互斥共享资源,如打印机。
临界区,每个进程中访问临界资源的那段代码称为临界区。
信号量,用于标识共享资源是否在被使用,在被使用用0标识,未被使用用1标识。
例子:生产者->市场->消费者
生产者初值为S1=1,市场有一个空位
消费者初值为S2=0,市场无资源

存储

作业管理*

目录和spooling*

猜你喜欢

转载自blog.csdn.net/weixin_43128028/article/details/84493989
今日推荐