面经自测——死锁/死锁的必要条件/死锁的预防/进程通信的方式

news2025/1/19 14:15:54

前言

在这里插入图片描述

本文是作者专门用来自测Java后端相关面试题的,所有问题都是在牛客、知识星球或网上找到的最近最新的面试题,全文回答都是作者按自己的真实水平仿照真实环境的回答,所以答案不一定真实(但回答一定真诚🤣),其他即将面试的小伙伴可以试试自测一下💪

谈谈死锁,它产生的必要条件,以及如何预防的?

好的,

首先对于死锁,它其实是在多任务环境中,也就是在两个或多个进程的执行过程中,因为争夺资源产生的一种僵局状态,因为已经资源被分配完,所以所有的进程都在等待对方释放资源,但谁都不释放,导致所有的进程都无法继续执行

然后,死锁的发送必须满足四个条件,这四个条件缺一不可,这四个条件分别是:互斥条件、占有和等待条件、不可抢占条件和循环等待条件

一定要解释一下四个条件的定义,这是问题的核心!!!

  • 互斥条件:资源不能被多个进程同时使用,一个资源一次只能由一个进程占用
  • 占有和等待条件:进程至少占有一个资源,并且等待获取其他进程占有的资源
  • 不可抢占条件:资源只能由占有它的进程资源释放,不能被强制夺走
  • 循环等待条件:存在一个进程资源的循环等待链,每个进程都在等待下一个进程所占有的资源

由刚刚的死锁产生的四个必要条件,我们可以知道预防死锁的策略,因为四个条件缺一不可,所以我们只要破坏其中一个条件死锁也就不会发送了

  • 破坏互斥条件:这在实际操作中很难实现,因为很多资源天生就是需要互斥访问的。
  • 破坏占有和等待条件:可以通过要求进程在开始执行前一次性请求所有需要的资源来实现,但这可能导致资源利用率低下。
  • 破坏不可抢占条件:允许资源被抢占,但这在实际操作中可能很复杂,并且可能导致数据不一致。
  • 破坏循环等待条件:通过对所有资源类型进行排序,并要求进程按顺序请求资源,可以避免循环等待。

关于死锁知识点,还有死锁的避免,检测和解除

你知道进程通信的方式嘛?

当然,进程通信是操作系统中的一个非常重要的概念,它允许不同的进程之间交换信息,协同工作。在多任务操作系统中,进程通信时实现资源共享和任务协调的关键机制

简单解释了什么是进程通信后,就开始说进程通信的方式了,因为进程通信的方式有很多,能说几个说几个

  • 管道(Pipes)和命名管道(Named Pipes)
    管道是一种最基本的进程通信方式,它允许具有亲缘关系的进程(比如父子进程)进行通信。管道是单向的,数据只能从一端流向另一端。而命名管道则允许不具有亲缘关系的进程进行通信,它类似于文件,可以通过路径名进行访问。

  • 消息队列(Message Queues)
    消息队列提供了一种从一个进程向另一个进程发送数据的方式,这些数据被存储在队列中,直到接收进程读取它们。消息队列支持异步通信,并且可以跨多个进程和系统进行通信。

  • 信号量(Semaphores)和互斥锁(Mutexes)
    信号量和互斥锁主要用于控制对共享资源的访问。信号量可以用于控制多个进程对共享资源的访问数量,而互斥锁则确保一次只有一个进程可以访问共享资源,从而避免竞态条件。

  • 共享内存(Shared Memory)
    共享内存是一种效率非常高的进程通信方式,它允许两个或多个进程共享一个给定的存储区。由于多个进程可以同时操作同一块内存,因此共享内存是最快的进程通信方式,但也需要额外的同步措施来避免数据不一致。

  • 套接字(Sockets)
    套接字是一种更为通用的进程通信机制,它不仅支持本机进程间的通信,还支持跨网络的进程通信。套接字可以基于TCP/IP协议提供可靠的通信服务,也可以基于UDP提供不可靠的快速通信。

  • 信号(Signals)
    信号是一种比较复杂的进程通信方式,它用于通知进程某个事件已经发生。信号可以用于处理异步事件,比如中断和终端输入。

结尾话语
每种进程通信方式都有其特定的用途和限制。在实际应用中,选择合适的进程通信方式还是要取决于具体的应用需求,比如通信的进程是否具有亲缘关系、是否需要同步、是否跨网络通信等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2255974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过电路指纹攻击发现洋葱服务

文章信息 论文题目:Discovering onion services through circuit fingerprinting attacks 期刊(会议): High-Confidence Computing 时间:2023 级别:CCF C 文章链接:https://www.sciencedir…

[每周一更]-(第126期):MQ解耦场景

消息队列(MQ)解耦是一种软件架构设计模式,主要通过中间件将系统中的生产者和消费者模块分离,减少模块之间的直接依赖,使系统具有更高的扩展性和灵活性。这种模式尤其适用于需要处理复杂业务逻辑、频繁请求或异步处理的…

flinkSql 将流和表的互相转换

流——>表 方式一 方式二 方式一&#xff1a;写sql DataStreamSource<String> source env.socketTextStream("localhost", 8881); // 表名&#xff0c;流&#xff0c;字段名称 tableEnv.createTemporaryView("t_1",source&#xff0c;$("…

linuxCNC(五)HAL驱动的指令介绍

HAL驱动的构成 指令举例详解 从终端进入到HAL命令行&#xff0c;执行halrun&#xff0c;即可进入halcmd命令行 # halrun指令描述oadrt加载comoonent&#xff0c;loadrt threads name1 period1创建新线程loadusr halmeter加载万用表UI界面loadusr halscope加载示波器UI界面sho…

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

之前和很多群友聊天发现对2016的无域和负载均衡满心期待&#xff0c;毕竟可以简单搭建而且可以不适用第三方负载均衡器&#xff0c;SQL自己可以负载了。windows2016已经可以下载使用了&#xff0c;那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 …

vue3+elementPlus封装的数据过滤区

目录结构 源码 index.vue <template><el-form class"mb-5" :rules"rules" :model"queryForm" ref"queryDOM" label-width"80"><el-row :gutter"20"><slot></slot><el-col cla…

iOS如何自定义一个类似UITextView的本文编辑View

对于IOS涉及文本输入常用的两个View是UITextView和UITextField&#xff0c;一个用于复杂文本输入&#xff0c;一个用于简单文本输入&#xff0c;在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发&#xff0c;这两个View就无法满足自…

《黑神话:悟空》闪退,提示D3D12崩溃,游戏崩溃无法启动是什么原因?要怎么解决?

《黑神话&#xff1a;悟空》闪退、D3D12崩溃及游戏无法启动&#xff1a;原因、解决方案与预防措施 作为一名软件开发从业者&#xff0c;我深知电脑游戏运行时可能遇到的各种问题&#xff0c;尤其是像《黑神话&#xff1a;悟空》这样的高品质游戏&#xff0c;其对硬件和系统配置…

JUC:Synchronized和锁升级

1. 面试题 谈谈你对Synchronized的理解Sychronized的锁升级你聊聊Synchronized实现原理&#xff0c;monitor对象什么时候生成的&#xff1f;知道monitor的monitorenter和monitorexit这两个是怎么保证同步的嘛&#xff1f;或者说这两个操作计算机底层是如何执行的偏向锁和轻量级…

SAP SD学习笔记19 - 形式发票(Proforma Invoice)

上面几章讲了投诉处理。 SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖&#xff0c;投诉处理流程的总结-CSDN博客 本章继续学习SD 模块的其他内容。 本章讲了形式发票&#xff08;Proforma Invoice&#xff09;的概要及系统操作。 形式发票是在出库确认之前&#xff0c;有…

M005 PHP+MYSQL+web编程课程网站的设计与实现 源码 配置 文档

web编程课程网站 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着互联网的飞速发展&#xff0c;各行各业的信息化进程逐步加快。商业信息化、政务信息化、教育信息、服务信息化等等已遍布全国各地。信息化的服务平台能更加高效的为用户提供各种服务…

【力扣】13.罗马数字转整数

问题描述 思路解析 对于这种限制字符的问题&#xff0c;使用Map来对键值存储 对其进行判断&#xff0c;如果前面的数小于后面的数&#xff0c;那么结果相减 否则&#xff0c;正常相加。 代码 class Solution {Map<Character,Integer> mapnew HashMap<Character,In…

docker安装ddns-go(外网连接局域网)

docker先下载镜像&#xff0c;目前最新版是v6.7.6 也可以csdn资源下载 再导入dockers https://download.csdn.net/download/u014756339/90096748 docker load -i ddns-go.tar 启动 docker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/…

洛谷P4913 【深基16.例3】二叉树深度(c嘎嘎)

题目链接&#xff1a;P4913 【深基16.例3】二叉树深度 - 洛谷 | 计算机科学教育新生态 题目难度&#xff1a;普及 解题思路&#xff1a;本题要求树的深度&#xff0c;即求左右子树高度的最大值&#xff0c;首先我们用结构体存树左右节点&#xff0c;然后分别递归地去左右子树的…

Android -- [SelfView] 自定义多行歌词滚动显示器

Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明&#xff1b;* 2. 外部可控制进度变化&#xff1b;* 3. 支持屏幕拖动调节进度&#xff08;回调给外部&#xff09;&#xff1b;效果 歌词文件&#xff08;.lrc&#xff09; 一. 使用…

DNS/域名

概述 每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。客户(client)和服务器…

淘宝直播间智能化升级:基于LLM的学习与分析

自营直播应用技术团队负责的业务中&#xff0c;淘宝买菜的直播业务起步较晚&#xff0c;业务发展压力较大&#xff0c;业务上也就有了期望能够对一些二方的标杆直播间进行学习&#xff0c;并将其优点应用到自己直播间的需求。 最初 - 人海战术&#xff0c;学习PK 业务侧最直接的…

数学拯救世界(一)———寻“数”记

一、 很久很久以前&#xff0c;在一个只认识整数和小数的国度&#xff0c;有一个很残暴的国王提了一个要求&#xff1a;要是不能表示出把一段1米的绳子三等分后的大小&#xff0c;就要把所有的大臣杀掉。 1➗3 0.333&#xff0c;怎么办呀&#xff1f;怎么办呀&#xff1f; 袁q…

夏普MX-4608N复印机维修模式进入方法及载体初始化方法

夏普MX-4608N复印机载体型号&#xff08;图&#xff09;&#xff1a; 型 号&#xff1a;载体&#xff08;黑色&#xff09;MX-561CV 净含量&#xff1a;395克 下面图片中分别有载体、刮板、鼓芯、上纸盒搓纸轮一套&#xff0c;均原装正品&#xff1b; 保养周期将至的时候建…

FPGA Xilinx维特比译码器实现卷积码译码

FPGA Xilinx维特比译码器实现卷积码译码 文章目录 FPGA Xilinx维特比译码器实现卷积码译码1 Xilinx维特比译码器实现2 完整代码3 仿真结果 MATLAB &#xff08;n,k,m&#xff09;卷积码原理及仿真代码&#xff08;你值得拥有&#xff09;_matlab仿真后代码-CSDN博客 MATLAB 仿真…