面试操作系统八股文十问十答第三期

面试操作系统八股文十问十答第三期

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

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

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

1)什么是用户态和内核态?

  • 用户态(User Mode):指操作系统中进程执行时的一种权限级别。在用户态下,进程只能访问受限资源和执行受限指令集,不能直接访问操作系统核心或硬件资源。这种限制是为了保护系统的稳定性和安全性。
  • 内核态(Kernel Mode):是操作系统的最高权限级别。在内核态下,进程可以直接访问操作系统核心功能和所有硬件资源。内核态允许操作系统执行特权指令,控制整个系统的运行状态。

切换用户态和内核态需要通过系统调用(System Call),这是从用户态进入内核态的唯一方式。

2)进程之间的通信方式有哪些?

进程间通信(IPC,Inter-Process Communication)是不同进程之间交换数据和信息的机制。常见的进程间通信方式包括:

  • 管道(Pipe):单向通信管道,用于具有父子关系的进程间通信。
  • 命名管道(Named Pipe):允许无关的进程通过文件系统进行通信。
  • 信号(Signal):用于通知接收进程发生了某种事件。
  • 消息队列(Message Queue):允许进程通过消息传递进行通信,消息具有格式和类型。
  • 共享内存(Shared Memory):多个进程共享同一块内存区域,进程可以直接读写共享内存。
  • 信号量(Semaphore):用于多进程对共享资源的访问控制,可以用来实现进程同步。
  • 套接字(Socket):用于不同计算机或同一计算机上的进程之间进行通信,通常用于网络通信。

3)进程有哪几种状态?

进程在操作系统中可以处于多种不同的状态,常见的进程状态包括:

  • 创建态(Created):进程正在被创建,但尚未开始执行。
  • 就绪态(Ready):进程已经准备好执行,等待分配处理器时间。
  • 运行态(Running):进程正在执行指令,占用处理器资源。
  • 阻塞态(Blocked):进程因等待某事件(如I/O操作完成、信号到达)而暂时停止执行。
  • 终止态(Terminated):进程已经执行完成,即将被操作系统释放和清理。

这些状态在操作系统的进程调度和管理过程中不断转换,通过调度算法控制进程的执行顺序和资源分配,以实现系统的有效管理和优化。

4)什么是软中断、什么是硬中断?

在操作系统和计算机体系结构中,中断是一种机制,用于在程序执行期间暂停当前的任务,转而执行处理器预定义的另一个任务。中断可以分为软中断和硬中断:

  • 软中断(Software Interrupt):由软件(操作系统或程序)生成的中断信号,用于请求操作系统执行特定的服务或程序。软中断可以通过系统调用(例如Unix系统中的int 0x80)或者异常(例如除零异常)的形式触发。软中断通常是非异步的,即在执行中断之前,程序需要显式地指示要进行中断处理。
  • 硬中断(Hardware Interrupt):由硬件设备(如定时器、输入输出设备)发出的中断信号,通知处理器发生了某些事件需要处理。硬中断是异步的,处理器在接收到硬件中断信号后,会立即中断当前任务,保存上下文,然后转去执行中断处理程序。

5)进程的调度算法你知道吗?

进程调度算法是操作系统中用来决定哪些进程在何时执行的一种策略。常见的进程调度算法包括:

  • 先来先服务(First Come, First Served, FCFS):按照进程到达的顺序进行调度,非抢占式。
  • 最短作业优先(Shortest Job Next, SJN):选择执行时间最短的进程优先执行,非抢占式。
  • 最短剩余时间优先(Shortest Remaining Time Next, SRTN):每次选择剩余执行时间最短的进程执行,抢占式。
  • 时间片轮转(Round Robin, RR):每个进程被分配一个时间片,时间片用完后,进程被暂停,被放到就绪队列的尾部,等待下一个时间片,非抢占式。
  • 优先级调度(Priority Scheduling):根据进程的优先级来调度,优先级高的进程优先执行,可能是抢占式或非抢占式。
  • 多级反馈队列调度(Multilevel Feedback Queue, MLFQ):将就绪队列分为多个队列,每个队列有不同的优先级,进程根据其运行情况在不同队列之间移动,结合了时间片轮转和优先级调度的特点。

6)什么是分段、什么是分页?

  • 分段(Segmentation):分段是一种内存管理技术,将逻辑地址空间划分为若干段,每段可以有不同的长度和属性。每个段都有自己的基地址和界限(长度),逻辑地址由段名和段内偏移量组成。分段可以提供更好的程序结构和数据共享机制,但会导致内存碎片问题。
  • 分页(Paging):分页是另一种内存管理技术,将物理内存和逻辑地址空间划分为固定大小的页面(通常为4KB或者更大)。逻辑地址由页号和页内偏移量组成,页号用于查找页表,以获取对应的物理页面框的地址。分页可以有效地管理内存碎片,但增加了页表管理的开销。

总结:

  • 分段适合变长程序段的管理和保护,提高了程序的逻辑结构性和数据共享性。
  • 分页适合管理物理内存的分配和保护,简化了内存碎片问题,但增加了页表管理的复杂度。

7)零拷贝你知道吗?

零拷贝(Zero-copy)是一种优化技术,旨在减少数据在内存和设备之间的复制次数,从而提高数据传输的效率和性能。传统的数据传输方式中,数据通常需要在应用程序的用户空间和操作系统内核空间之间进行多次拷贝(例如从应用程序到内核缓冲区,再到网络设备)。零拷贝技术通过避免这些不必要的数据复制,直接在内核空间或者设备间传输数据,从而减少了数据传输的延迟和CPU资源消耗。常见的零拷贝实现方式包括使用内存映射(mmap)、直接内存访问(DMA)和发送文件描述符等。

8)说下你常用的 Linux 命令?

常用的 Linux 命令包括但不限于:

  • 文件和目录操作: ls(列出目录内容),cd(改变目录),pwd(显示当前工作目录),mkdir(创建目录),cp(复制文件或目录),mv(移动文件或目录),rm(删除文件或目录)等。
  • 文件内容查看和编辑: cat(显示文件内容),less(逐页显示文件内容),headtail(显示文件头部和尾部内容),nanovim(编辑文件)等。
  • 系统信息和状态查看: top(查看系统资源使用情况),ps(显示当前进程状态),df(显示磁盘空间使用情况),du(显示目录空间使用情况),uname(显示系统信息)等。
  • 网络相关: ping(测试网络连接),ifconfigip(显示和配置网络接口信息),netstat(显示网络连接、路由表等),ssh(远程登录)等。
  • 权限和用户管理: chmod(修改文件权限),chown(修改文件拥有者),sudo(以超级用户权限执行命令),useradduserdel(添加和删除用户)等。

9)I/O到底是什么?

I/O(Input/Output,输入/输出)是指计算机与外部设备之间的数据交换过程。在计算机系统中,I/O操作包括从设备(如硬盘、键盘、鼠标、网络接口等)读取数据到计算机内存或者将数据从内存写入到设备。

I/O 可以分为两类:

  • 阻塞式 I/O: 应用程序发起一个 I/O 操作后,如果操作不能立即完成(例如等待数据从硬盘读取或等待网络数据包到达),则应用程序会被阻塞,直到 I/O 操作完成。
  • 非阻塞式 I/O: 应用程序发起一个非阻塞 I/O 操作后,即使操作不能立即完成,应用程序也可以继续执行其他任务,定期检查 I/O 操作是否完成。

10)为什么网络 I/O 会被阻塞?

网络 I/O 可能被阻塞的主要原因包括:

  • 数据传输速度慢: 网络传输受限于带宽、延迟等因素,导致数据不能立即到达或离开网络接口。
  • 接收方缓冲区满: 当接收方缓冲区已满时,网络设备无法接收更多的数据包,发送方的数据传输就会被阻塞。
  • 发送方缓冲区满: 当发送方缓冲区已满时,发送方无法继续发送数据,从而导致发送的网络 I/O 操作被阻塞。
  • 网络拥塞: 网络拥塞时,数据包可能会在网络中排队等待传输,从而增加了数据传输的延迟,导致网络 I/O 操作被阻塞。

解决网络 I/O 阻塞的方法包括使用非阻塞式 I/O、多线程或多进程处理 I/O 操作、使用异步 I/O 模型(如事件驱动的网络编程),以及优化网络传输环境(如增加带宽、减少网络延迟等)。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 1500+ Star,2W+ 访问!

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

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

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

相关文章

RestTemple请求GET接口403

问题描述 使用oss接口获取资源的时候,通过浏览器可以直接下载,在代码中使用RestTemplate的get方式访问的时候,出现403错误 问题排查 因为返回状态码是403,就想着是不是授权问题,因为有的接口是有防抓取规则的&…

中介子方程二十七

XXFXXdXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXrXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXdXXFXXEXyXαXiXXαXiXrXkXtXyXXpXVXXdXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXrXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXdXXVXpXXyXtXkXrXiXαXXiXαXyXEXXFXXEXyXαXiXXαXiXrXkXtXyXXpXVXXdXuXWXπXXWXeXyXeXbX…

使用Python操作PowerPoint演示文稿

哈喽,大家好,我是木头左! Python与PowerPoint的关联 在现代办公环境中,PowerPoint已经成为了展示信息、分享观点的重要工具。然而,有时候可能需要自动化一些重复的任务,比如批量创建PPT、自动填充内容等。这时,Python就派上了用场。Python是一种强大而灵活的编程语言,…

Linux系统mysql数据库备份和还原操作

Linux系统mysql数据库备份和还原操作 1、数据备份命令 (1)备份单个数据库 mysqldump -u username -p test>/home/bak/test20230708.sqlusername:表示数据库用户名称; test:是需要备份的数据库名称; 右…

“中国人对AI的态度最为积极”说明什么?

#AI技术服务 #AI智能应用 #AI合同 #合同AI服务 斯坦福大学的AI指数报告指出:“中国人对AI的态度最为积极……” 这一观点应是基于一系列的观察和研究得出的结果。如果这一观点成立,那么它或许说明了以下几个层面的意义: 首先,政策支持与…

总结之LangChain(二)——LCEL表达式、使用多链

LCEL介绍 LangChain 表达式语言(LCEL)是一种声明式的方法,可以轻松地将多个链条组合在一起。 LCEL 从第一天开始设计就支持将原型投入生产,无需进行代码更改,从最简单的“提示 LLM”链条到最复杂的链条(…

Vue中定义src在img标签使用时加载不出来

Vue中定义src在img使用时加载不出来 问题&#xff1a;路径正确&#xff0c;但是图片加载不出来&#xff0c;如下示例&#xff1a; <!--vue3的语法&#xff0c;vue2类似--> <template><img :src""/> </template> <script setup>imp…

求职刷题力扣DAY29---贪心算法(还挺难的第二题)

DAY 29 1. 455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&am…

华为联运:资源混淆导致的浮标显示异常

问题 显示正常 正常情况&#xff0c;华为联运包登录成功之后会显示浮标&#xff08;悬浮球&#xff09;&#xff0c;拖动浮标会出现拖到此处隐藏字样&#xff0c;如下所示&#xff1a; 显示异常 而在我们的横屏游戏中&#xff0c;遇到拖动到此处隐藏有部分内容被遮挡了&…

Windows系统电脑远程桌面控制本地局域网内树莓派详细教程

文章目录 前言1. 树莓派安装xrdp2. 注册cpolar账号3. 安装cpolar内网穿透4. 创建隧道映射端口5. Windows远程桌面控制树莓派总结 前言 本文主要介绍如何通过cpolar内网穿透&#xff0c;映射3389端口&#xff0c;生成公网TCP端口地址&#xff0c;通过该公网地址来实现公网环境下…

网页基础三剑客

目录 一、网页开发技术 1&#xff0e;HTML 2&#xff0e;CSS 3&#xff0e;JavaScript 二、网页的结构 三、 网页的分类 1&#xff0e;静态网页 2&#xff0e;动态网页 1&#xff0e;jQuery 2&#xff0e;AJAX 3&#xff0e;DHTML 2.3.4 网页数据的格式 1&#xf…

使用深度强化学习预测股票:DQN 、Double DQN和Dueling Double DQN对比和代码示例

深度强化学习可以将深度学习与强化学习相结合&#xff1a;深度学习擅长从原始数据中学习复杂的表示&#xff0c;强化学习则使代理能够通过反复试验在给定环境中学习最佳动作。通过DRL&#xff0c;研究人员和投资者可以开发能够分析历史数据的模型&#xff0c;理解复杂的市场动态…

AD23隐藏、展示铺铜

选中要隐藏的铜皮 --> 右键 --> 执行快捷键Y --> S 即可隐藏铺铜。 执行快捷键T --> G --> E 即可显示铺铜。

收银系统源码推荐,线下线上一体化收银系统

1.收银系统源码开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后台管理网站: HTML5vue2.0element-uicssjs收银端【安卓/PC收银】: Dart3&#xff0c;框架&#xff1a;Flutter 3.11.0-6.0.pre.27商家小程序助手端: uniapp线上商城: uniapp 2.功能介绍 支持测试体验…

汇编程序入门指南

什么是机器语言&#xff1f; 机器语言就是由二进制数字构成的程序&#xff0c;CPU 可以直接对其解释、执行。 汇编语言、C 语言、Java、BASIC 等编程语言编写的程序&#xff0c;也都需要先转换成机器语言才能被执行。机器语言有时也叫作“原生代码”&#xff08;Native Code&…

别让日志拖垮网站速度

网站日志是安全等审计的基础&#xff0c;但是过大的日志却能造成网站速度的缓慢。 对于一般的小型网站而言&#xff0c;网站的日志很小&#xff0c;但是对于大型的网站&#xff0c;日志可能会有几个G甚至十几个G&#xff0c;根据要求&#xff0c;程序的日志不能低于180天&…

C语言函数是如何变成汇编的

为了说明C语言如何被编译成汇编语言&#xff0c;我们可以通过一个简单的C程序&#xff0c;并使用ARM编译器来生成相应的汇编代码。 // simple.c int add(int a, int b) {return a b; }int main() {int result add(5, 3);return result; }使用ARM编译器生成汇编代码 我们使用…

智慧校园导航系统:技术驱动下的校园管理与师生体验革新

随着智慧校园建设的不断推进&#xff0c;校园导航系统作为提升校园管理效率、优化师生出行体验的重要工具&#xff0c;正逐渐成为各大高校的标配。本文将重点介绍维小帮智慧校园导航系统&#xff0c;如何通过创新的设计和功能&#xff0c;解决校园导航中的种种难题&#xff0c;…

视频二维码怎么设置全屏播放?默认全屏效果的添加技巧

视频做成二维码如何全屏展示呢&#xff1f;现在很多人都会将视频生成二维码后&#xff0c;分享二维码给其他人来扫码查看视频内容&#xff0c;设置视频默认全屏播放可以带来展示更好的效果&#xff0c;那么横版和竖版视频扫码自动全屏播放是如何生成的呢&#xff1f; 视频二维…

裂变客户时代:如何打造口碑传播的良性循环?【以Notion为例】

在当今的商业环境中&#xff0c;客户裂变已经成为品牌增长的重要驱动力。裂变客户时代&#xff0c;意味着每一个满意的客户都有可能成为品牌的传播者&#xff0c;帮助品牌吸引更多的新客户。那么&#xff0c;如何在这个时代打造口碑传播的良性循环呢&#xff1f;Notion是怎么做…