面试操作系统八股文五问五答第一期

news2024/11/29 7:45:04

面试操作系统八股文五问五答第一期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!

⭐点赞⭐收藏⭐不迷路!⭐

1.死锁产生的条件

1.互斥条件,即当资源被一个线程使用(占有)时,别的线程不能使用

2.不可剥夺条件,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放

3.请求和保持条件,即当资源请求者在请求其他的资源的同时保持对原有资源的占有

4.循环等待条件,即存在一个等待循环队列:p1 要 p2 的资源,p2 要 p1 的资源,形成了一个等待环路

四个条件都成立的时候,便形成死锁。死锁情况下打破上述任何一个条件,便可让死锁消失

2.线程的生命周期

java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态:

●NEW: 初始状态,线程被创建出来但没有被调用 start() 。

●RUNNABLE: 运行状态,线程被调用了 start()等待运行的状态。

●BLOCKED:阻塞状态,需要等待锁释放。

●WAITING:等待状态,表示该线程需要等待其他线程做出一些特定动作(通知或中断)。

●TIME_WAITING:超时等待状态,可以在指定的时间后自行返回而不是像 WAITING 那样一直等待。

●TERMINATED:终止状态,表示该线程已经运行完毕。

img

3.查看线程状态的工具

1.使用Thread类的getState()方法

2.使用Java VisualVM Jconsole JMC

都在jdk的bin目录

3.使用命令行工具jstack 进程ID,

4.Linux使用top命令 top -H -p 查看进程内运行的线程情况

5.Linux先使用ps -aux (a显示所有用户的进程,不仅仅是当前用户,u显示用户为主的格式显示进程信息,包括用户,进程ID,CPU使用率,内存使用率,x 显示没有中断的进程,通常用于显示守护进程) 或者使用ps -ef命令,e显示所有进程,不限于当前终端会话,-f完整的格式显示进程信息,包括父进程,用户,UID,TTY,状态。

ps -T -p pid 查看进程PID12345的线程列表

4.用户态和内核态的区别?

用户态(User Mode)和内核态(Kernel Mode)是操作系统中的两种不同的执行权限级别。这两种级别决定了程序的运行环境和可执行的操作。

1用户态:

○用户态是指程序运行在较低的权限级别,不具有直接访问和控制系统底层资源的能力。

○在用户态下运行的程序只能访问用户空间中的资源,如用户进程的堆栈、内存、文件和网络连接等。

○用户态下运行的程序需要通过系统调用(System Call)向操作系统请求执行特权操作,如读写文件、创建进程等。

2内核态:

○内核态是操作系统的最高权限级别,拥有对系统底层资源的完全控制权。

○在内核态下运行的程序可以直接访问和操作底层硬件资源,如磁盘、进程控制块、中断控制器等。

○内核态下的程序可以执行特权指令和访问系统级数据结构,能够完成系统管理和控制的任务,如调度进程、分配内存等。

用户态和内核态之间的切换是通过系统调用和中断(异常)来实现的。当用户态程序需要执行特权操作时,需要通过系统调用将控制权切换到内核态,由操作系统来处理特权操作。而当内核态的任务完成后,通过上下文切换将控制权返回给用户态程序。

总结:用户态和内核态的区别主要在于权限级别和资源访问能力。用户态程序只能运行在受限的环境中,不能直接访问底层资源,而内核态程序拥有完全的系统权限和资源访问能力。

5.为什么用户态和内核态之间的切换会影响到线程的执行效率,真正慢的点在哪里?

用户态和内核态之间的切换会影响线程的执行效率,主要是由于涉及到以下方面的开销和延迟:

1上下文切换开销:当从用户态切换到内核态时,需要保存用户态的上下文信息并加载内核态的上下文信息,这涉及到寄存器状态的保存和恢复,堆栈切换等操作,会引入一定的开销。

2内核调度开销:在切换到内核态之后,操作系统需要进行调度决策来确定下一个要执行的线程或进程,这涉及到查找、选择合适的线程,进行调度算法的计算和决策,可能会消耗较多的运算时间。

3内核资源访问延迟:在内核态中,线程可以访问并操作内核资源,如文件系统、设备驱动程序等。但由于同一时间可能有多个线程或进程同时请求访问某个资源,需要进行锁机制或其他同步机制,以保证资源的安全访问,这可能引入额外的延迟。

4缓存失效:当线程从用户态切换到内核态时,可能会导致CPU缓存中的数据失效,因为内核态和用户态的数据访问权限不同,可能会引起缓存的刷新和重新加载,这也会导致额外的延迟。

真正影响线程执行效率的慢点主要在于上下文切换开销和内核调度开销。这些开销都需要耗费时间和计算资源,因此频繁的上下文切换和内核调度会导致线程的执行效率下降。为了优化线程的执行效率,可以采取一些策略,如减少不必要的上下文切换,优化调度算法,避免过度的内核态访问等。

1操作系统有一个锁的概念,谈谈你对它的理解?

锁是操作系统中用于控制并发访问共享资源的机制。它用于保证在同一时间只有一个线程或进程可以访问被锁定的资源,从而避免数据竞争和不一致性。

锁的实现方式有多种,常见的包括互斥锁(Mutex)、读写锁(ReadWrite Lock)、自旋锁(Spinlock)、信号量(Semaphore)等。

互斥锁(Mutex)是最常见的锁类型,它提供了两个基本操作:上锁(Lock)和解锁(Unlock)。当一个线程需要访问共享资源时,首先尝试去获取锁,如果锁已经被其他线程占用,则线程进入阻塞状态,等待锁被释放;当某个线程完成对共享资源的访问后,会释放锁,从而允许其他线程获取锁并访问资源。

读写锁(ReadWrite Lock)是一种特殊的锁类型,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。这样可以提高读操作的并发性能,但写操作会变得串行化,保证了数据的一致性。

自旋锁(Spinlock)是一种忙等待的锁,当一个线程需要获取锁时,它会循环忙等待,不断尝试获取锁,直到成功获取为止。自旋锁适用于对锁的占用时间较短的情况。

信号量(Semaphore)是一种更为通用的同步机制,除了可以用作锁,还可以用于线程间的信号通知。它基于计数器的概念,当计数器大于0时,线程可以获取信号量,当计数器减至0时,线程需要等待其他线程释放信号量。

锁的作用是保护共享资源的一致性和完整性,避免多个线程同时访问和修改共享资源导致的数据竞争和不确定性。但锁的过度使用或不合理使用可能会引起死锁、饥饿等问题,因此在应用中需要合理设计和使用锁机制。

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

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

相关文章

深入理解HashMap:Java中的键值对存储利器

HashMap是Java中常用的数据结构之一,它提供了一种键值对的存储机制,适用于快速查找和检索。本文将深入探讨HashMap的概念、内部结构、工作原理以及在多线程环境下的一些问题。 1. HashMap的概念 HashMap是Java中的一种数据结构,用于存储键值…

外包干了一个月,技术明显进步。。。。。

先说一下自己的情况,本科生生,19年通过校招进入南京某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了3年的功能测试…

这些Java并发容器,你都了解吗?

文章目录 前言并发容器1.ConcurrentHashMap 并发版 HashMap示例 2.CopyOnWriteArrayList 并发版 ArrayList示例 3.CopyOnWriteArraySet 并发 Set示例 4.ConcurrentLinkedQueue 并发队列 (基于链表)示例 5.ConcurrentLinkedDeque 并发队列 (基于双向链表)示例 6.ConcurrentSkipL…

数学建模算法

算法部分 1. 评价类模型2. TOPSIS3. 线性规划4. 聚类分析5. 预测模型6. 拉伊达准则(对异常值进行剔除)7. 数据拟合8. 图论代码练习1. 模拟圆周率2. 斐波那契数列3. 四只鸭子落在一个圆中概率4. 方程2: y" uy y,初值y(0) 1,y(0) 0 算法讲解 matlab代码大全 1. 评价类模型…

渗透测试学习day8

文章目录 靶机:UnifiedTask1Task2Task3Task4 5-14解题过程Task5Task6Task7Task8Task9Task10Task11Task12Submit user flagSubmit root flag 靶机:Unified Task1 问题:前四个开放端口是哪一个? 22,6789,8080,8443nmap扫一下 T…

智能井盖传感器产品介绍,井盖传感器生产厂家

智能井盖传感器是一种利用先进科技手段实时监测井盖状态的现代化设备,具有高效、可靠的特点,可大大提高城市管理的效率和水平。通过数据分析技术智能井盖传感器能够整理和分析井盖位移的历史数据,为管理人员提供科学决策依据,以更…

2023年山东省职业院校技能大赛信息安全管理与评估第一阶段样题

2023年山东省职业院校技能大赛信息安全管理与评估样题 竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000 分。三个模块内容和分值分别是: \1. 第一阶段:模块一 网络平台搭建与设备安全防护(240 分钟&…

mysql5.7安装详细教程

文章目录 1 引言1.1 现有的数据存储方式有哪些?1.2 以上存储方式存在哪些缺点? 2 数据库2.1 概念2.2 数据库的分类 3 数据库管理系统3.1 概念3.2 常见数据库管理系统 4 MySQL4.1 简介4.2 访问与下载4.3 安装4.3.1 解压缩到非中文目录4.3.2 编写配置文件4…

字节开源的netPoll底层LinkBuffer设计与实现

字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解,对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…

Python实现FA萤火虫优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

zabbix的自动发现机制,代理功能,SNMP监控

1.zabbix自动发现机制 zabbix客户端主动和服务端联系,将自己的地址和端口发送服务端,实现自动添加监控主机 客户端是主动的一方。 缺点:自定义网段中主机数量太多,登记耗时会很久,而且这个自动发现机制不是很稳定 …

SpringMvc入坑系列(一)----maven插件启动tomcat

springboot傻瓜式教程用久了,回过来研究下SSM的工作流程,当然从Spring MVC开始,从傻瓜式入门处理请求和页面交互,再到后面深入源码分析。 本人写了一年多的后端和半年多的前端了。用的都是springbioot和vue,源码一直来…

论文阅读[2023ICME]Edge-FVV: Free Viewpoint Video Streaming by Learning at the Edge

Edge-FVV: Free Viewpoint Video Streaming by Learning at the Edge 会议信息: Published in: 2023 IEEE International Conference on Multimedia and Expo (ICME) 作者: 1 背景 FVV允许观众从多个角度观看视频,但是如果所选视点的视频…

基于单片机出租车计价器控制系统

**单片机设计介绍,基于单片机出租车计价器控制系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的出租车计价器控制系统是一个用于控制和管理出租车费用计算的电子设备。下面是一个简单的系统设计介绍&…

识别低效io引起的free buffer waits

产生事发时间段的awr报告 Top 5 wait events 这里重点关注: 1.free buffer waits 2.enq_HW-contention 3.enq:tx-row lock contention enq:HW-contention属于水位线的争用,已经透过alter table allocate extent,提前分配空间,这里不做讨论 …

数据结构 | 查漏补缺之哈希表、最短路径、二叉树与森林的转换

哈希表是什么? 或者说 设图采用邻接表的存储结构,写对图的删除顶点和删除边的算法步骤 删除边 删除点 最短路径问题 参考博文 迪杰斯特拉(Dijkstra)算法_dijkstra算法-CSDN博客 判断一个有向图是否有环(回路)可以用下列哪些办法…

金鸣表格文字识别大师扫描仪使用技巧

所需硬件:PC(电脑)、扫描仪 所需软件:金鸣表格文字识别大师5.0以上版本(以下简称“本软件”) 实现功能:直接用扫描仪扫描图片并将其转换为可编辑的excel或word. 实现原理:本软件利…

Linux socket编程(12):Unix套接字之socketpair、sendmsg和recvmsg详解

在上一篇文章Unix套接字编程及通信例子中,我们对Unix套接字编程有一个基本的了解。但在Unix套接字编程的领域中,有一组特殊而强大的工具:socketpair、sendmsg 和 recvmsg,它们为实现本地进程间通信提供了便捷的方式。 文章目录 1 …

java学习part39map

159-集合框架-Map不同实现类的对比与HashMap中元素的特点_哔哩哔哩_bilibili 1.Map 2.Entry 个人理解是c的pair,代表一个键值对。Map就是entry的叠加 3.常用方法 4.TreeMap 5.Properties

二叉搜索树——模拟

对于一个无穷的满二叉排序树(如图),节点的编号是1,2,3,…。对于一棵树根为X的子树,沿着左节点一直往下到最后一层,可以获得该子树编号最小的节点;沿着右节点一直往下到最后一层,可以…