精华内容
下载资源
问答
  • 发生死锁的设备最小数

    千次阅读 2016-06-17 08:30:50
    某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备 n 最小为? 分析: 假设3个进程分别为A,B,C,那么需要的最大的情况为:2,3,4此时再多一个资源就可以打破死锁的环境,...

    题目:

    某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备数 n 最小为?

    分析:

    • 假设3个进程分别为A,B,C,那么需要的最大的情况为:2,3,4此时再多一个资源就可以打破死锁的环境,所以为2+3+4+1=10

    详细说:

    极端状态下:
    进程1(3台):申请到2台,无法工作;
    进程2(4台):申请到3台,无法工作;
    进程3(5台):申请到4台,无法工作;
    申请总数:2+3+4=9,此时若只有9台,3个进程持续申请且申请不到,造成死锁。

    所以必须再空出一台

    展开全文
  • 死锁发生的必要条件:1、互斥条件2、请求和保持条件3、资源不剥夺条件4、环路等待条件多线程最佳并发实践;1、 使用本地变量2、使用不可变类3、最小化锁作用域范围 : S = 1/(1-a+a/n) (阿木达尔定律)其中,a为...

    死锁发生的必要条件:

    1、互斥条件

    2、请求和保持条件

    3、资源不剥夺条件

    4、环路等待条件

    多线程的最佳并发实践;

    1、 使用本地变量

    2、使用不可变类

    3、最小化锁的作用域范围 : S = 1/(1-a+a/n)   (阿木达尔定律)

    其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a=0时,最大加速比s=n;当a=1时,最小加速比s=1;当n→∞时,极限加速比s→ 1/a,这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。这一公式已被学术界所接受,并被称做“阿姆达尔定律”(Amdahl law)。

    4、使用线程池的Executor,而不是使用new Thread();

    5、宁可使用同步也不要使用wait()和notify()

    6、使用blockingQueue实现生产者消费者模式

    7、使用并发结合而不是加了锁的同步集合

    8、使用semaphore创建有界的访问

    9、宁可使用同步代码块,也不要使用同步的方法

    10、避免使用静态变量

    hashmap和concurrenthashmap

    hashmap 最终要的两个参数是加载容量和扩容因子。

    当当前使用内存超过加载容量和扩容因子的乘积的时候,就会对hashmap进行扩容,在扩容的过程中并不是线程安全的,在并发调用的时候,可能出现死循环。

    concurrenthashmap1.7版本和1.8版本的区别是1.8引入了红黑树,当链表数量超过8的时候,就会触发红黑树,红黑树的寻址时间是o(logn),而链表的寻址时间是o(n)

    缓存学习:

    命中率 = 命中数/(命中数+未命中数)

    最大元素空间:

    缓存清空策略: FIFO、LFU、LRU、过期时间、随机等

    业务场景和业务需求:  缓存适合读多写少的应用场景

    Guava cache : 继承了concurrenthashmap 的设计思路

    展开全文
  • 某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备 n 最小为? 分析: 看到这种题目,我们首先要知道: 什么是死锁? 如果多个进程同时占有对方需要的资源而同时...

            秋招临近,我在前几天看到一道笔试题:

    题目如下:

           某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备数 n 最小为?

     分析:

    看到这种题目,我们首先要知道:

    什么是死锁?

    如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步,这就是死锁。

    例如:
    存在资源A和B,进程C和D
    进程C享有资源A且资源不使用完毕不释放,进程D享有资源B且不使用完毕不释放。在某一时刻,进程C需要访问资源B,进程D想访问资源B,这个时候C等D释放资源B,D在等C释放A,但是彼此都不放手,造成死锁现象。

    产生死锁的原因

    1. 竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足进程的需要时,会引起诸进程的竞争而产生死锁。
    2. 进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。

    知道了死锁的定义与死锁产生的原因,我们还要知道死锁产生的必要条件:

    死锁的4个必要条件

    1. 资源具有互斥性,资源被进程使用时,其他进程不可以访问,一直等到当前经常访问完毕其他进程才可以访问。
    2. 请求和保持,意思是当一个进程正在访问某一资源时,还想访问其他进程的资源且该资源正在被其他经常使用,而且自己也不想释放自己的资源。
    3. 不可剥夺:意思是资源被进程使用时,只有当该进程访问完毕以后才可以被其他进程访问。
    4. 环路等待:意思进程发生死锁情况以后必然存在 进程–资源环形等待现象。

    我们回到文章开头的题目:

    要使设备不产生死锁,我们可以打破任意一个死锁产生的必要条件就可以。
    比如我们给进程分配资源的时候,一次性给该进程分配完。使它不需要访问其他进程资源,从打破死锁条件里的请求与等待。

    因此,我们考虑

    在极端状态下:
    进程1(3台):申请到2台,无法工作;
    进程2(4台):申请到3台,无法工作;
    进程3(5台):申请到4台,无法工作;
    申请总数:2+3+4=9,此时若只有9台,3个进程持续申请且申请不到,造成死锁。

    所以,在此时我们可以让设备要使用的资源,再多上1台,就可以使三个进程中的某一个顺利执行,从而不发生死锁。

    因此,可确保系统不发生死锁的设备数 n 最小为10.

    最后,要注意的是:在题目中,进程互斥使用的同类设备,所以我们今后都可以以同样的思路去解决类似的问题!

    展开全文
  • 死锁发生的必要条件:1、互斥条件2、请求和保持条件3、资源不剥夺条件4、环路等待条件多线程最佳并发实践;1、 使用本地变量2、使用不可变类3、最小化锁作用域范围 : S = 1/(1-a+a/n) (阿木达尔定律)其中,a为...

    死锁发生的必要条件:

    1、互斥条件

    2、请求和保持条件

    3、资源不剥夺条件

    4、环路等待条件

    多线程的最佳并发实践;

    1、 使用本地变量

    2、使用不可变类

    3、最小化锁的作用域范围 : S = 1/(1-a+a/n)   (阿木达尔定律)

    其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a=0时,最大加速比s=n;当a=1时,最小加速比s=1;当n→∞时,极限加速比s→ 1/a,这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。这一公式已被学术界所接受,并被称做“阿姆达尔定律”(Amdahl law)。

    4、使用线程池的Executor,而不是使用new Thread();

    5、宁可使用同步也不要使用wait()和notify()

    6、使用blockingQueue实现生产者消费者模式

    7、使用并发结合而不是加了锁的同步集合

    8、使用semaphore创建有界的访问

    9、宁可使用同步代码块,也不要使用同步的方法

    10、避免使用静态变量

    hashmap和concurrenthashmap

    hashmap 最终要的两个参数是加载容量和扩容因子。

    当当前使用内存超过加载容量和扩容因子的乘积的时候,就会对hashmap进行扩容,在扩容的过程中并不是线程安全的,在并发调用的时候,可能出现死循环。

    concurrenthashmap1.7版本和1.8版本的区别是1.8引入了红黑树,当链表数量超过8的时候,就会触发红黑树,红黑树的寻址时间是o(logn),而链表的寻址时间是o(n)

    缓存学习:

    命中率 = 命中数/(命中数+未命中数)

    最大元素空间:

    缓存清空策略: FIFO、LFU、LRU、过期时间、随机等

    业务场景和业务需求:  缓存适合读多写少的应用场景

    Guava cache : 继承了concurrenthashmap 的设计思路

    展开全文
  • 死锁发生的必要条件: 1、互斥条件 2、请求和保持条件 3、资源不剥夺条件 4、环路等待条件 多线程最佳并发实践; 1、 使用本地变量 2、使用不可变类 3、最小化锁作用域范围 : S = 1/(1-a+a/n) ...
  • 解析: 注解:每次都需要计算资源剩余数,与每个进程尚需资源个数最小的比较,如果剩余资源数小于该值则会发生死锁
  • 选择题

    2019-04-26 10:04:00
    例:某系统有n台互斥使用的同类设备,3个并发进程需要3,4,5台设备,可确保系统不发生死锁的设备n最小为 (10) 解析:3个进程需要的最大的情况为:2,3,4此时再多一个资源就可以打破死锁的环境,所以为2+3+4+1=10...
  • 操作系统

    2020-11-09 23:09:33
    4.可确保系统不发生死锁的设备数n最小为每个进程要求资源数-1的和,再加一 5 设备管理具有设备独立性的特点,操作系统以系统调用方式来请求某类设备时,使用的是逻辑设备名。 6.[0-9]*匹配任意长度的数字序列 7 [^0-...
  •  进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。  一个程序至少有一个进程,一个进程至少有一个线程。   2、什么是多线程中的上下文切换?  多线程会共同使用一组计算机上的CPU,而线程...
  • 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。 一个程序至少有一个进程,一个进程至少有一个线程。 2、什么是多线程中的上下文切换? 多线程会共同使用一组计算机上的CPU,而线程大于给...
  • 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。 一个程序至少有一个进程,一个进程至少有一个线程。 2、什么是多线程中的上下文切换? 多线程会共同使用一组计算机上的CPU,而线程大于给...
  • 某系统中有3个并发进程,各都需用同类资源4个,则系统不会发生死锁的最小资源是(B;10);如果一个程序为多个进程共享,那么该程序的代码在执行的过程中不能被修改,即是(可重入的);下列(单一连续区)存储管理方式不能适应...
  • 锁定粒度最小发生锁冲突概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 从对数据操作类型(读\写)分 读锁(共享锁):针对同一份...
  • 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 (2)建模简单:通过使用线程可以讲复杂并且异步的工作...
  •  forward是服务器请求资源,服务器直接访问目标地址URL,把那个URL响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送内容是从哪儿来,所以它地址栏中还是原来地址。...
  • 研数值.zip

    2019-05-18 17:20:31
    ●某计算机系统中互斥资源R的可用为8,系统中有3个进程P1、P2 和P3竞争R,且每个进程都需要i个R,该系统可能会发生死锁的最小i值为(9)。 (9)A.1 B.2 C.3 D.4 ●以下关于信息和数据的描述中,错误的是(10)...
  • SQLServer2008查询性能优化 2/2

    热门讨论 2012-03-02 16:26:55
    1.5.3 过多阻塞和死锁 11 1.5.4 不基于数据集操作 11 1.5.5 低质量查询设计 12 1.5.6 低质量数据库设计 12 1.5.7 过多碎片 12 1.5.8 不可重用执行计划 13 1.5.9 低质量执行计划 13 1.5.10 频繁...
  • 1.5.3 过多阻塞和死锁 11 1.5.4 不基于数据集操作 11 1.5.5 低质量查询设计 12 1.5.6 低质量数据库设计 12 1.5.7 过多碎片 12 1.5.8 不可重用执行计划 13 1.5.9 低质量执行计划 13 1.5.10 频繁...
  • PCI.EXPRESS系统体系结构标准教材.pdf

    热门讨论 2013-02-17 16:21:16
    1.2.2 总线性能及其插槽数的比较 1.2.3 pci express总吞吐量 1.2.4 比较每引脚性能 1.3 i/o总线体系结构展望 1.3.1 基于33mhz pci总线系统 1.3.2 基于66mhz pci总线系统 1.3.3 基于66mhz和133mhz pci-x 1.0...
  • 产生死锁的原因是共享资源有限,多个进程对共享资源的竞争,而且操作不当。 (2)产生死锁的四个必要条件是资源互斥使用、保持和等待、非剥夺性、循环等待。 (3)解决死锁的方法 一般有死锁的预防...
  • spring.redis.pool.min-idle=0 # 连接池中的最小空闲连接 spring.redis.timeout=1000 # 连接超时时间(毫秒) 3. 写一个redis配置类 详情请见:...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    面试题118 C++支持参数个不确定函数吗 130 面试题119 什么是内联函数 131 11.2 函数参数传递 132 面试题120 引用形参和非引用形参有什么区别 132 面试题121 使用引用形参有什么问题 133 面试题122 指针形参与...
  • 软件测试规范

    2018-04-23 09:16:12
    软件测试目标 .................................................................................................................................. 2 三.软件测试流程 .......................................
  • java 面试题 总结

    2009-09-16 08:45:34
    forward是服务器请求资源,服务器直接访问目标地址URL,把那个URL响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送内容是从哪儿来,所以它地址栏中还是原来地址。 redirect...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    系统触发器主要是DML事件和系统事件发生时调用触发器,其中DML事件包括CREATE、DROP、ALTER等,系统事件包括LOGON、LOGOFF、STARTUP、SHUTDOWN、SERVERERROR等。 9.简述Oracle数据库角色种类、作用,以及如何...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    值 52 <br>0069 求最大公约数 52 <br>0070 求最小公倍数 53 <br>0071 判断素数算法 53 <br>0072 如何判断一个是否是完数 54 <br>0073 歌德巴赫猜想算法 54 <br>0074 八皇后...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

发生死锁的最小资源数