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

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

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

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

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

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时,线程需要等待其他线程释放信号量。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全高效 江西变电站成功应用国家电网无人机巡检

随着电力需求的迅速增长,电网的巡检、维护与保养变得越来越重要。为迎接这一挑战,江西供电公司的一座变电站成功引入了复亚智能国家电网无人机巡检系统,在提升巡检水平、开创新型巡检模式方面做出了重要尝试,为电网设备的高效巡检…

基于Java SSM框架实现宠物医院信息管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现宠物医院信息管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的,而且公开源代码,这一优点吸引了许多世界各地优秀的编程爱好者,也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言…

[linux] 用命令行wget下载google drive的大文件

使用wget命令下载Google drive上的文件_ubuntu上wget下载谷歌云盘文件-CSDN博客 如何用命令行下载Google Drive上的共享文件?-腾讯云开发者社区-腾讯云 举例:https://drive.google.com/drive/folders/1vKj3VvJEKgS_o-uOSmz3I0-GomECpql3 1、在网页上&…

基于JavaWeb的物业管理系统运行部署教程

基于JavaWeb的物业管理系统 一、下载源码二、数据准备三、项目导入idea四、配置Tomcat五、修改数据库密码&运行项目六、测试项目七、问题修复 一、下载源码 源码地址:基于JavaWeb的物业管理系统源码 得到一个压缩包: 解压之后: 删除多…

基于SpringBoot+Vue社区医院服务系统(Java毕业设计)

点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…

自适应中值滤波器的python代码实现-----冈萨雷斯数字图像处理

基本原理: 自适应中值滤波器是一种图像处理技术,用于去除图像中的噪声。其原理是根据像素周围邻域内像素值的特性,动态地选择滤波器的大小和中值滤波的程度。 **邻域选择:**对于每个像素点,选取一个窗口或者邻域&…

【数组Array】力扣-167 两数之和II-输入有序数组

目录 题目描述 解题过程 labuladong题解 题目描述 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &a…

归并排序与自然归并排序

归并排序 归并排序(merge - sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将已有的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,成为二路归并. 核心步骤讲解 归并排序的…

题目:肖恩的乘法表(蓝桥OJ 3404)

题目描述&#xff1a; 解题思路&#xff1a; 本题采用二分中的二分答案。且本题check()用不到开数组&#xff0c;所以不需要开数组&#xff0c;脑海中想象一个数组就好了 题解&#xff1a; #include<bits/stdc.h> using namespace std; using ll long long;ll n, m , k…

Vue之模板语法

模板语法有两大类&#xff1a; 1.插值语法 2.指令语法 让我为大家介绍一下吧&#xff01; 一、插值语法 功能:用于解析标签体内容。 写法: {{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 举个例子&#xff1a; <!DOCTYPE html> &l…

Chrome浏览器中访问http会自动跳转https下,导致请求和文件不能正常访问

网上查了很多解决方案&#xff0c;例如清楚缓存等等其他方法&#xff0c;都不能解决该问题 例如&#xff1a; 地址栏输入&#xff1a; chrome://net-internals/#hsts找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 搞定了…

专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享

个人情况简介 今年考研440&#xff0c;专业课145&#xff0c;数一140&#xff0c;期间一年努力辛苦付出&#xff0c;就不多表了&#xff0c;考研之路虽然艰难&#xff0c;付出很多&#xff0c;当收获的时候&#xff0c;都是值得&#xff0c;考研还是非常公平&#xff0c;希望大…

【LeetCode刷题-树】-- 99.恢复二叉树

99.恢复二叉树 方法&#xff1a; 对二叉搜索树进行中序遍历得到值序列不满足的位置找到对应被错误交换的节点记为x和y交换x和y两个节点 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tre…

C++ 教程 - 01 基础篇

文章目录 C介绍环境配置第一个cpp程序案例练习 变量常量关系运算符逻辑运算符条件运算符位运算符类型转换分支循环程序调用综合案例 C介绍 基于C语言&#xff0c;继承了C的所有语法&#xff1b; 静态类型语言&#xff0c;需要先编译&#xff0c;再执行&#xff1b; 贴近底层硬…

20、关联容器、无序容器

20、关联容器、无序容器 关联容器mapmultimapsetmultiset 无序容器哈希unordered_map 关联容器 map // map的使用 #include <iostream> #include <map> #include <stdexcept> using namespace std;class Student{ public:Student(const string& name&qu…

【计算机网络】TCP socket编程

目录 ​编辑 一、前言 二、概念 1、通信模型&#xff1a; 2、端口&#xff1a; 3、IP地址&#xff1a; 4、协议&#xff1a; 三、简单搭建 1、服务器代码 2、客户端代码 一、前言 Socket&#xff08;套接字&#xff09;是计算机网络中用于实现进程之间通信的一种机制…

Nacos配置管理-微服务配置拉取

yaml已配置内容 目录 一、配置获取步骤 二、统一配置管理步骤 三、Nacos管理配置的步骤总结 一、配置获取步骤 二、统一配置管理步骤 1、引入Nacos的配置管理客户端依赖: <!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud&l…

企业欠税信息API:实现税务管理的智能化与高效化

前言 随着经济的发展和社会的进步&#xff0c;企业欠税问题逐渐凸显&#xff0c;成为制约经济发展的重要因素。为了解决这一问题&#xff0c;企业欠税信息API应运而生。它通过先进的技术手段&#xff0c;提供了一种全新的欠税信息查询方式&#xff0c;帮助企业实现税务管理的智…

免费的AI改写工具推荐,AI改写工具大全

在本文中&#xff0c;我们将专心分享AI改写的方法、工具以及技巧&#xff0c;旨在帮助大家更好地理解和利用写作利器。我们将揭示AI改写的背后原理&#xff0c;探讨目前市场上主流的AI改写工具&#xff0c;并分享一些提高改写效果的使用技巧。 AI改写的背后技术原理 在深入讨…

阶乘后的零

题目链接 阶乘后的零 题目描述 注意点 返回 n! 结果中尾随零的数量 解答思路 阶乘后有多少个0&#xff0c;取决于乘法计算中有多少个2 * 5&#xff08;只有2 * 5的结果是10有尾随0&#xff09;&#xff0c;又因为在阶乘中2的数量一定多于5的数量&#xff0c;所以阶乘后有多…