操作系统(多线程)

本文探讨了操作系统中的实时系统与分时系统的差异,强调了实时系统的及时性、独立性、可靠性和交互性。接着深入讲解了多线程编程,包括死锁的概念和避免策略,Java线程的不同状态,以及Sleep()和Wait()的区别。此外,还讨论了synchronized与ReentrantLock的区别,volatile的原理和作用,以及并发编程的原子性、可见性和有序性三大特性。最后,提到了ThreadLocal的使用和线程池的配置与重要参数。
摘要由CSDN通过智能技术生成

操作系统

实时系统和分时系统的不同

  1. 多路性。实时系统与分时系统一样具有多路性,分时系统按分时原则为多个终端用户服务;而实时系统,其多路性则主要表现在经常对多路的现场信息进行采集及对多个对象或多个执行机构进行控制。
  2. 独立性。实时系统与分时系统一样具有独立性。每个终端用户在向实时系统提出服务请求时,是彼此独立的操作,互不干扰;而且在实时系统中信息的采集和对对象的控制也是彼此互不干扰的。
  3. 及时性。实时系统对实时性的要求与分时系统类似,都是以人能接受的等待时间来确定;但实时系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、百毫秒直至毫秒级,甚至有的要低于100μs。
  4. 交互性。实时系统具有交互性,但这里人与系统的交换,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理服务、资源共享等服务。
  5. 可靠性。分时系统要求系统可靠,相比之下,实时系统则要求系统高度可靠。因为任何差错都可能带来巨大的经济损失,甚至无法预料的灾难后果。因此,在实时系统中,采取了多级容错措施来保证系统的安全及数据的安全。

死锁

https://blog.csdn.net/jgm20475/article/details/81297819


两次fork(),孤儿线程,僵尸线程的解决

https://blog.csdn.net/keyeagle/article/details/6679934

多线程

JAVA线程的6种状态

在这里插入图片描述

产生死锁的条件

  1. 互斥条件:该资源任意一个时刻只由一个线程占用。
  2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:线程已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
  4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

如何避免死锁

  1. 破坏互斥条件 :这个条件我们没有办法破坏,因为我们用锁本来就是想让他们互斥的(临界资源需要互斥访问&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值