精华内容
下载资源
问答
  • 不安全状态与死锁

    千次阅读 2018-11-28 21:48:19
    1.关于不安全状态与死锁状态的不同之处:  1>:正如申老师所言,当进程处于不安全状态的时候,可能会由于操作系统在期间杀死一些进程等意外情况下而使不安全状态避免向死锁状态的转化。  2>:在我看来...

    1.关于不安全状态与死锁状态的不同之处:
      1>:正如申老师所言,当进程处于不安全状态的时候,可能会由于操作系统在期间杀死一些进程等意外情况下而使不安全状态避免向死锁状态的转化。
      2>:在我看来,1中的思想可能有点牵强,毕竟在大多数情况下进程都是可以正常结束的,而且书中银行家算法也是在所有的进程正常运行对前提上进行操作的。书中产生死锁的四个必要条件之不可抢占条件中写到。进程已获得的资源在进程未使用完之前不可被抢占,只能在进程使用完时由自己释放。注意:在这里是说进程使用完时自己释放,并不是进程结束时释放。所以,当进程组处于不安全状态时,是指找不到这样的一个安全序列,使得进程能按某种推进顺序,为每一个进程分配其所需资源,直至满足每一个进程对资源的最大需求,使得每一个进程都可以顺利完成。我们需要注意的是,这种假设是在这一刻完成的,即在推进过程的这一刻,进程必须满足它所需要的所有资源,而且也只有进程结束之后才将其所拥有的所有资源释放,我想这也是书中为什么说是“满足其最大需求”。实际上,可能在程序运行的过程中,在其下次申请资源之前,就可能释放其所拥有的部分资源,从而使系统处于安全状态,只有在最坏条件下(所有的进程都霸占其此时所拥有的资源并且去申请新的资源)才能导致死锁。

    展开全文
  • 操作系统中不安全状态为何并非一定转为死锁?

    万次阅读 多人点赞 2020-01-31 12:26:41
    在学习避免死锁、银行家算法时,对于安全状态一定不会产生死锁,不安全状态也并非必然转为死锁,不止你是否会疑惑为何处于不安全状态下,不是必然会发生死锁?

    ​ 这个问题出自与避免死锁中的安全状态和非安全状态,在讨论之前,先来解释下安全状态和非安全状态。

    1.系统安全状态

    ​ 所谓安全状态,是指系统能够按某种进程推进顺序(P1,P2,…,Pn)为每个进程分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利的执行完成。其中进程的推进顺序(P1,P2,…,Pn)被称为安全序列。如果系统中能找到这样一个安全序列,则称系统处于安全状态。

    ​ 如果系统中无法找到一个安全序列,则称系统处于不安全状态

    ​ 我们通过一个例子来说明安全性。假定系统中有三个进程P1、P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:

    资源分配图

    ​ 对于上题,我们可以知道T0时刻系统是安全的,因为这是存在一个安全序列(P2,P1,P3)。

    ​ 如果不按照安全序列分配资源,则系统可能会有安全状态进入不安全状态。例如在T0时刻后T1时刻,P3又请求一台磁带机,如果此时分配资源给进程P3,此时的资源分配如下表所示:

    资源分配图

    ​ 我们可以看到,在T1时刻,无法找到一个安全序列,因此在T1时刻系统处于不安全状态。

    2.不安全状态和死锁的关系

    ​ 由上述描述,我们可以得出一个结论,只要系统处于安全状态,系统便不会进入死锁状态;但是另一句话:当系统处于不安全状态时,并非所有不安全状态都必然转换为死锁,就有点懵了。

    安全状态与不安全状态图

    ​ 对于系统处于不安全状态,为什么不是一定会转为死锁状态?按照死锁的发生的四个必要条件:互斥条件、请求和保持条件、不可抢占条件、循环等待条件,只要其中的一个条件不满足就不会发生死锁,这也是预防死锁的理论依据。如果系统中已经设置了预防死锁的策略,那么死锁就不会产生,也就不需要避免死锁算法了,因此,设置了避免死锁策略(或者说是银行家算法)的OS,应当不会破坏四个必要条件中的任一个,这样所施加的限制条件较弱,以期望获得更好的系统性能。

    ​ 由上面的描述,我就在想,如果系统处于安全状态,因为临界资源的不可抢占性,高优先级进程也无法剥夺已经分配出去的进程,那么系统是怎么样才可以让如何推进都无法顺利执行完毕的“死局”得到“一线生机”呢?

    ​ 经过自己的思考(通过结论推过程----’囧‘),和翻看了网上的许多讨论后,觉得以下几点是比较靠谱的:

    ​ 可能一:进程在执行过程中,可能会提前终止。当进程处于不安全状态的时候,因为OS当前资源紧缺或者进程执行过程发生异常,导致某些进程没有继续申请资源而被终止(被kill或异常终止),这样被终止的进程就会释放资源,让OS避开这次死锁。

    ​ 可能二:进程在正常运行过程中,可能会提前释放部分资源。这一点,可能有些同学会疑惑,是不是破坏了请求和保持条件?其实并没有破坏了请求和保持条件,因为破坏请求和保持条件,需要OS必须保证做到:当一个进程在申请资源时,不得持有任何不可抢占资源,所以进程释放掉自己持有的部分资源是没有破坏请求和保持条件的。

    ​ 可能三:进程实际需要的最大资源小于声明的最大需求资源。在安全性检查算法中,使用的数据结构是需求矩阵Need和当前资源数Available,Need由最大需求矩阵Max减去已经分配的Allocation求得,Max是进程事先对自身所需资源的一个最坏情况下的预估(因为要满足运行,必定是>=实际需要的),但是在实际执行的情况中,可能进程实际上用不到这么多的资源,所以有可能就是这相差的资源数可以保证系统并非必然转换为死锁。

    ​ 可能四:进程申请的资源为可消耗性资源。这一点可能许多同学会懵,怎么还跑出了这么一个可消耗性资源的事,我们在资源分类的时候就讲过,资源分为可重用性资源和可消耗性资源,对于可消耗性资源,是可以在进程运行过程中产生的(比如消息),因此对于某些阻塞的进程,虽然当前资源不足,但有可能在有限的时间内可以申请到得以运行完成的资源(可消耗性资源,由别的进程执行过程中产生),因此可以释放掉自己持有的资源,让其他进程因此也可以执行完毕。

    ​ 以上四点是我个人总结的几点原因,个人感觉每种可能都对,查看外文文档,解释偏向于可能三,不过博主自己觉得一、二、四也是对的,毕竟答案不唯一,理论上可行就可以是答案。

    3.总结

    ​ 以上所有观点都是自己的个人观点,如果有哪位大佬有不同的看法或者还有可能五、六、七,都欢迎评论区留言讨论,还请不吝赐教。


    ​ 又到了分隔线以下,本文到此就结束了,本文内容全部都是由博主自己进行整理并结合自身的理解进行总结,如果有什么错误,还请批评指正。

    ​ 本文纯属探讨理论上的可能,另,原创不易,如果能解答你的疑惑,还请点赞支持。

    ​ 如有兴趣,还可以查看我的其他几篇博客,都是OS的干货,喜欢的话还请点赞、评论加关注^_^。

    操作系统武功修炼心法

    展开全文
  • Java实现 LeetCode 802 找到最终的安全状态 (DFS)

    千次阅读 多人点赞 2020-05-08 12:37:48
    802. 找到最终的安全状态 在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。 现在, 如果我们最后能走到终点,那么我们的起始节点是...

    802. 找到最终的安全状态

    在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。

    现在, 如果我们最后能走到终点,那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K, 无论选择从哪里开始行走, 我们走了不到 K 步后必能停止在一个终点。

    哪些节点最终是安全的? 结果返回一个有序的数组。

    该有向图有 N 个节点,标签为 0, 1, …, N-1, 其中 N 是 graph 的节点数. 图以以下的形式给出: graph[i] 是节点 j 的一个列表,满足 (i, j) 是图的一条有向边。

    示例:
    输入:graph = [[1,2],[2,3],[5],[0],[5],[],[]]
    输出:[2,4,5,6]
    这里是上图的示意图。

    Illustration of graph

    提示:

    graph 节点数不超过 10000.
    图的边数不会超过 32000.
    每个 graph[i] 被排序为不同的整数列表, 在区间 [0, graph.length - 1] 中选取。

    class Solution {
       public List<Integer> eventualSafeNodes(int[][] graph) {
            int len = graph.length;
            List<Integer> ans = new ArrayList<>(len);
            int[] counter = new int[len];
            for (int i=0; i<len; i++) {
                if (dfs(graph, counter, i))
                    ans.add(i);
            }
            return ans;
        }
        
        private boolean dfs(int[][] graph, int[] counter, int curr) {
            if (counter[curr] > 0)
                return counter[curr] == 2;
            
            counter[curr] = 1;
            for (int child : graph[curr]) {
                if (counter[child] == 2) continue;
                if (counter[child]==1 || !dfs(graph, counter, child))
                    return false;
            }
            counter[curr] = 2;
            return true;
        }
    }
    
    展开全文
  • ios 11系统出来后,需要适配一下tableview,如果tableview的界面没有导航栏,并且想要tableview的内容状态栏重复的话,就需要考虑到iOS11的安全区域问题了。这些是上网搜到的一位大神博客,找到了解决办法,非常...

    ios 11系统出来后,需要适配一下tableview,如果tableview的界面没有导航栏,并且想要tableview的内容和状态栏重复的话,就需要考虑到iOS11的安全区域问题了。这些是上网搜到的一位大神博客,找到了解决办法,非常感谢大神。把方法分享给大家,希望能解决问题。
    解决办法

    //如果iOS的系统是11.0,会有这样一个宏定义“#define __IPHONE_11_0  110000”;如果系统版本低于11.0则没有这个宏定义
    #ifdef __IPHONE_11_0   
    if ([tableView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) {
        tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    }
    #endif

    出现这种情况的原因
    ios 11中automaticallyAdjustsScrollViewInsets属性被废弃,进而影响了tableview的内容高度。
    iOS11中新提出了安全区域的问题,如果没有控件内容和不可视区域重复的话,会自动下移到可视区域。

    大神原文链接:http://www.jianshu.com/p/efbc8619d56b

    展开全文
  • 使用FileZilla,FTP登录出现错误: FileZilla状态: 不安全的服务器,支持 FTP over TLS。 331 Password required for userxxx 可尝试使用SFTP登录
  • 什么是系统安全状态

    万次阅读 2017-02-24 15:28:50
    指系统能按某种顺序如(P1,P2,...,Pn),来为每个进程分配所需要的资源,直至最大需求,使每个进程都可以顺序完成。若系统存在这样一个安全序列,则称系统处于不安全状态
  • 对Java线程安全不安全的理解

    万次阅读 多人点赞 2017-03-01 16:44:37
    当我们查看JDK API的时候,总会发现一些类说明写着,线程安全或者线程不安全,比如说StringBuilder中,有这么一句,“将StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。...
  • 规则说明: ...线程安全的表现: 一个线程对该类的访问不会影响其他线程的访问结果。 无状态类示例: package net.jcip.examples; import java.math.BigInteger; import javax.servlet.*; import net.jci
  • 其次,众所周知数据平衡对分类模型的影响很大,而内容安全场景恰恰存在非常严重的数据平衡问题。本文主要讨论文本分类在内容安全应用中遇到的数据平衡问题以及常用的解决办法。 数据平衡问..
  • 内容安全策略(CSP)详解

    万次阅读 多人点赞 2018-04-18 10:27:12
    内容安全策略(CSP),其核心思想十分简单:网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的与什么是需要被禁止的。其被誉为专门为解决XSS攻击而生的神器。
  • 线程池有哪些状态

    千次阅读 2019-05-16 14:26:36
    线程池有哪些状态? 线程池的5种状态:RUNNING、SHUTDOWN、STOP、TIDYING、TERMINATED。 见 ThreadPoolExecutor 源码 // runState is stored in the high-order bits private static final int RUNNING = -1 &...
  • 修复 iPhone X H5 底部安全区域定位按钮下内容穿透 BUG 今日,开发了一个 h5 项目,其中有部分页面使用了底部按钮,采用的是相对于浏览器窗口定位的样式制作的。 但是在 iPhone X 上面,出现了在按钮下方,居然有...
  • Linux:死锁避免之系统安全状态

    千次阅读 2018-04-23 21:22:06
    想要有顺序地学习Linux,入口在这里哦: Linux:目录索引 ... 死锁避免方法之一:判断系统安全状态 ...若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,让进程等待。 安全状态 所谓安...
  • 线程有哪些状态

    千次阅读 2019-05-14 12:16:58
    线程有哪些状态? 新建(NEW):新建线程对象,未调用 start 方法 可运行(RUNNABLE):线程对象创建后,被调用 start 方法。此状态的线程位于可运行线程池中,等待获取 CPU 的使用权 运行中(RUNNING):线程获取了 ...
  • 网络安全的基本内容

    万次阅读 2018-02-26 12:10:11
    一、网络攻击1.对网络的攻击大致可以分为...2.服务类攻击(Application Dependent Attrack)是指对为网络提供某种服务的服务器发起攻击,造成该服务器的“拒绝服务”,使网络工作正常。拒绝服务类攻击(Denial-of...
  • 802. 找到最终的安全状态

    千次阅读 2019-06-15 00:47:54
    在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们...哪些节点最终是安全的? 结果返回一个有序的数组。 该有向图有 N 个节点,标签为 0,...
  • java 线程安全不安全

    万次阅读 2016-07-24 11:30:41
    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程能进行访问直到该线程读取完,其他线程才可使用。不会出现数据一致或者数据污染。(Vector,HashTab;le) 线程...
  • }else{//用户选择了记住登录状态 $user=getUserInfo($_COOKIE['username'],$_COOKIE['password']);//去取用户的个人资料 if(empty($user)){//用户名密码不对没到取到信息,转到登录页面 header("location:login....
  • Java线程安全不安全

    万次阅读 2019-06-05 10:12:54
    Java非线程安全与线程安全 ArrayList和Vector的区别在哪里? HashMap和HashTable区别在哪里?...线程安全不安全的原因是什么?怎么实现线程安全?线程安全和非线程安全有什么区别?分别在什么情况下使用?...
  • 部署服务的时候要关闭不安全端口,防止被黑客利用。 1.设置IP安全策略 点击“开始”菜单/设置/控制面板/管理工具,双击打开“本地安全策略”,选中“IP 安全策略,在本地计算机”在右边窗格的空白位置右击鼠标,弹出...
  • 线程安全,有状态,无状态的对象

    万次阅读 2012-12-14 14:55:49
    Struts2中的Action因为会有User、BizEntity这样的实例对象,是有状态信息 的,在多线程环境下是不安全的,所以Struts2默认的实现是Prototype模式。在Spring中,Struts2的Action中,scope 要配成prototype作用域。 ...
  • 创建后状态不能被修改的对象叫作不可变对象。不可变对象天生就是线程安全的。它们的常量(变量)是在构造函数中创建的,既然它们的状态无法被修改,那么这些常量永远不会被改变——不可变对象永远是线程安全的。 不...
  • 银行家算法判断状态是否安全

    千次阅读 2020-06-20 12:57:04
    process allocation need avaiable p0 0 0 3 2 0 0 1 2 1 6 2 2 p1 1 0 0 0 1 7 5 0 p2 1 3 5 4 2 3 5 6 p3 0 3 3 2 ...p3--p1--p2--p4,当然了,唯一,只要在选择进程时满足finish可用即可。
  • 1.前后端分离后,前端登录状态保持一般采用webstorage或是cookie来保存token或用户信息的方式来维持登录状态。如果webstorage或是cookie中没有token,则前端认为是没有登录,拦截到登录页面。vue中利用路由的before...
  • 最新的详细测试 https://www.cnblogs.com/shangxiaofei/p/10465031.html ... String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,158,006
精华内容 463,202
关键字:

安全不安全状态哪些内容