系统操作软件包括哪些(操作系统软件主要有哪些),本文通过数据整理汇集了系统操作软件包括哪些(操作系统软件主要有哪些)相关信息,下面一起看看。

多进程多线程的并发执行虽然提高了系统资源的利用率和系统的性能,但也带来了一个新的问题——死锁。

死锁(Deadlock)是指多个进程(线程)在执行过程中由于资源竞争或相互通信而被阻塞的现象(它们互相挂起等待)。没有外力,他们将无法前进。此时,系统处于死锁状态或系统出现死锁。这些总是互相等待的进程称为死锁进程。

举个生活中简单的例子:小明和小红都想买一块橡皮。这块橡皮值一美元,但每个只有五毛钱。小明说:把你的五毛钱给我,我去买块橡皮。小红说:你把你的五毛钱给我,我去买块橡皮。就这样,两个人互相僵持着,谁也不想低头,谁也买不到橡皮擦。

为了保证线程之间的同步和互斥,我们经常需要锁定线程。有时,线程申请锁资源,但他们没有还没有等到发布。当他们再次申请这个锁时,他们最终会等待这个锁的释放。但是这个锁是他们自己持有的,所以他们会一直挂起等待,导致死锁。

有两个线程P1和P2。P1首先申请锁定L1,P2申请锁定L2。此时P1某方向申请锁L2,结果是暂停等待P2释放锁L2,而P2只是想申请锁L1。结果,它被挂起以等待P1释放锁L1,这导致了两个线程之间的死锁。

有三个线程,P1、P2和P3,分别产生数据M1、M2和M3,同时接收其他线程产生的数据M3、M2和M1。如果线程推进的顺序是正确的,即三个线程都产生数据,然后接收数据,那么就没有问题。但是一旦一个线程先接收数据再产生数据,就会因为一开始没有产生数据而造成三个线程之间的死锁。

更多Linux内核视频教程文档可通过后台私信【内核】免费获取。

内核学习网站:

Linux内核源代码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

系统资源不足。进程(线程)以错误的顺序前进。资源分配不当。

当系统的资源充裕时,每个进程都可以申请到想要的资源,所以死锁的概率很低。不同的调度顺序和线程速度也会导致死锁。

互斥条件:一个进程(线程)申请的资源在一段时间内只能被一个进程(线程)使用。请求和等待条件:进程(线程)已经拥有一个资源,但申请了新的资源,所拥有的资源保持不变。不可剥夺条件:当一个进程(线程)没有用完并主动释放资源时,不能被抢占。等待条件:多个进程(线程)之间存在资源循环链。死锁预防:打破死锁的四个条件之一。请注意,互斥条件不能被打破。避免僵局:合理分配资源。检查死锁:使用特殊的死锁机制来检查死锁,然后采取相应的措施。死锁释放:当死锁发生时,采取合理的措施来解决死锁。一般来说,资源是被强行剥夺的。打破互斥条件:将独占资源转化为虚拟的大资源,但大部分资源无法转化,不推荐这种方法。打破请求和保持条件:在进程(线程)运行之前,一次性申请需要申请到位的资源。如果符合要求,就运行。如果没有如果达不到要求,它会等待。就这样,它赢了当您拥有资源时,不会导致您申请新的资源。打破不可剥夺的条件:当你拥有了资源,又想申请新的资源,就要把已经拥有的资源还回来。打破循环等待条件:实现资源的有序分配,即对所有设备进行分类编号,只按升序申请资源。

例如,对于P1流程,使用资源的顺序是R2的R1和P2流程,使用资源的顺序是R1的R2。如果采用动态分配,可能会导致死锁。我们对设备进行分类和编号,因此P1和P2只能按照R1和R2的顺序申请资源。可以打破循环,避免死锁。

最著名的避免死锁的方法是银行家算法,它是由DIJKstra E.W .于1968年提出的。

为什么叫庄家s算法?它因为它it’这有点儿贷款对银行的服务。如果一家银行只有有限的资金为客户提供贷款服务,那么为了保证银行能够有足够的资金运转,它就不得不在贷款之前检查客户是否有能力在规定的时间内偿还贷款。

在研究我们操作系统的资源分配策略时,也会出现类似的问题。如果要把我们系统中有限的资源分配给各个进程,就要事先检查这个进程是否有能力在规定的时限内归还资源。必须保证能在限定时间内归还给其他进程使用。

一般实现方法:

当一个进程对资源的最大需求不超过系统中资源的数量时,该进程可以被接纳。当请求总数不能超过最大需求时,进程可以分阶段请求资源。当系统的现有资源可以在不能满足进程所需资源数量的情况下,对进程的请求可以延迟,但它总能使进程在有限的时间内获得资源。当系统的现有资源能够满足进程所需的资源数量时,需要测试系统的现有资源是否能够满足进程所需的最大资源数量。如果是,将根据当前的应用数量分配资源,否则,将延迟分配。

银行家s算法:首先需要定义状态和安全状态的概念。系统的状态是当前分配给进程的资源。因此,状态包含两个向量,Resource(系统中每个资源的总量)和Available(未分配给进程的每个资源的总量),以及两个矩阵,Claim(代表进程对资源的需求)和分配(代表当前分配给进程的资源)。安全状态意味着至少有一个资源分配序列不会导致死锁。当一个进程请求一组资源时,假设它同意了请求,从而改变了系统的状态,然后确定结果是否仍处于安全状态。如果是,同意这个请求;如果不是,阻塞进程知道系统状态在同意请求后仍然是安全的。

更多系统操作软件包括哪些(操作系统软件主要有哪些)相关信息请关注本站。