操作系统面试真题总结(三)

news2024/9/21 23:42:31

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

什么是进程?

在操作系统中,进程是指正在执行的程序实例。

它是计算机系统中的基本执行单位,拥有独立的内存空间和系统资源。

  • 每个进程都有自己的指令序列、数据和执行环境。

进程的创建是通过操作系统调度和管理的,当一个程序被执行时,操作系统会为其创建一个独立的进程。

  • 每个进程都有一个唯一的进程标识符(PID),用于在系统中标识和管理进程。

进程的主要特征包括:

  • 独立性:
    • 每个进程都有独立的内存空间和系统资源,不会受其他进程的影响。
  • 执行状态:
    • 进程可以处于运行、就绪、阻塞等不同的执行状态,根据进程调度算法决定执行顺序。
  • 上下文切换:
    • 由于操作系统需要在不同进程之间进行切换,进程可以通过上下文切换保存和恢复自己的执行环境。
  • 通信与同步:
    • 进程可以通过进程间通信机制实现信息的交换和共享资源,也可以通过同步机制实现协调和合作。

进程有哪些常见状态?

进程可以处于以下五种状态:

运行状态(Running):

  • 正在CPU上执行指令的进程处于运行状态。

等待状态(Waiting):

  • 也称作阻塞状态。
    • 当进程需要某些资源以继续运行(例如,等待用户输入或等待文件读取)时,它将转入等待状态。
      • 直到所需资源可用时,才会被重新放入可运行队列。

就绪状态(Ready):

  • 当进程已经准备好在CPU上运行,但由于其他进程正在CPU上运行,而暂时无法运行,此时就处于就绪状态。
    • 就绪状态的进程会被放在一个队列中,等待CPU资源。

创建状态(New):

  • 当进程刚被创建但还未被调度到运行时,它处于创建状态。

终止状态(Terminated):

  • 一个进程完成了它的全部工作,或者被其他进程杀死,或者出现异常终止时,它就处于终止状态。
    • 此时,操作系统将回收进程占用的资源并销毁该进程。

这些状态之间的转变会根据CPU调度,资源申请等情况来进行。

什么是僵尸进程?

僵尸进程(Zombie Process)指的是一个已经结束执行的子进程

  • 但其父进程尚未调用wait()waitpid()函数来获取子进程的终止状态信息。
    • 在这种情况下,子进程的进程控制块(PCB)仍然存在系统中,但没有正常退出,因此处于僵尸状态。

僵尸进程的主要原因是进程在结束执行后,父进程并没有及时处理子进程的终止状态信息。

通常,父进程会通过调用wait()waitpid()函数来等待子进程的退出,并获取其终止状态。

  • 若父进程没有这样做,子进程就会成为僵尸进程。

僵尸进程不会占用系统资源(如CPU、内存等)

  • 它们只占用一个进程ID(PID)和一些系统资源(如进程表项、部分内存等)。

  • 但如果系统中存在大量僵尸进程,可能会耗尽可用的资源。

虽然僵尸进程本身无害,但过多的僵尸进程可能是不可取的。

  • 为了避免僵尸进程的积累,父进程应适时调用wait()waitpid()来获取终止状态信息
    • 并通过kill()或终止自身来回收僵尸进程。
    • 在某些情况下,可以使用信号处理程序,如SIGCHLD信号来自动处理子进程的退出状态。

总之,僵尸进程是指在父进程没有及时回收子进程终止状态时,子进程成为已经结束但仍占用系统资源的状态。

  • 及时处理子进程的终止状态,是保持系统健康运行的重要措施。

如何僵尸进程太多,会出现什么问题?

当系统中存在太多的僵尸进程时,可能会导致以下问题:

资源浪费:

  • 僵尸进程会占用系统的一些资源(如PID、内存等)
  • 当僵尸进程过多时,会导致系统的资源浪费,降低系统的运行效率。

进程管理困难:

  • 僵尸进程会使得进程管理变得复杂。
    • 在进程终止后,其父进程需要调用wait()函数或者相关的系统调用来回收其资源
    • 如果父进程没有正确处理僵尸进程,会导致僵尸进程无法完全终止并释放资源。

进程满载:

  • 在某些情况下,如果系统产生大量的僵尸进程,可能会导致系统的进程表被填满,无法再创建新的进程来运行其他任务。

内存泄漏:

  • 僵尸进程的资源无法被回收释放,可能会导致内存泄漏问题,最终导致系统的性能降低或崩溃。

因此,及时处理僵尸进程是非常重要的,可以采取合适的方法来清理僵尸进程

  • 如使用适当的系统调用来回收资源,或者通过编写合适的代码来处理僵尸进程。

如何处理过多的僵尸进程?

处理过多僵尸进程的几种方法:

修复父进程:

  • 确保父进程正确处理子进程的终止状态,使用wait()waitpid()等系统调用来回收僵尸进程的资源。
    • 父进程在fork子进程后,应该在适当的时候使用这些系统调用来检查子进程的终止状态,并进行处理。

手动杀死僵尸进程:

  • 可以使用kill命令结合僵尸进程的PID来手动杀死僵尸进程。
  • 使用命令ps aux | grep Z来查找僵尸进程的PID,然后使用kill PID命令来杀死该进程。
  • 但这只是临时性的处理方式,仍然需要修复父进程来避免僵尸进程的产生。

编写垃圾回收程序:

  • 可以编写一个定期运行的垃圾回收程序来扫描系统中的僵尸进程,并回收它们的资源。
    • 这个程序可以使用系统调用waitpid()来检查并回收僵尸进程的资源。

修改子进程创建方式:

  • 通过修改子进程的创建方式,可以避免产生僵尸进程。
    • 例如,使用fork()后紧接着调用exec()_exit()来替换原始的进程映像
      • 并在父进程中忽略SIGCHLD信号,这样子进程终止时不会成为僵尸进程。

调整系统资源限制:

  • 适当调整系统的资源限制,如进程表大小、最大进程数等限制,以防止系统中过多的僵尸进程积累。

不同的方法可以根据实际情况进行选择和组合,以有效地处理过多的僵尸进程。

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

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

相关文章

8月31复盘日记

8月31复盘日记 前言今日感恩今日记录今日感悟今日名言 前言 昨天因为回到宿舍比较晚,所以来不及进行记录。   昨天早上五点多就醒了,可能是睡眠质量特别好,基本一倒头就是深度睡眠。所以我直接就起床去健身房运动,练了臀和核心&…

FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数

遗留的问题 3、FastAPI4、MySQL85、SQLModel,和FastAPI框架是同一个作者,两者结合比较好用,但是学习成本较高,使用难度稍大6、Vue37、Tailwindcss8、Ant Design Vue,UI组件库9、数据同步:有一个API&#x…

基于卷积神经网络的磨削平板类零件擦伤检测

基于卷积神经网络的磨削平板类零件擦伤检测 前言正文 前言 还记得读研那会儿刚学习完了卷积神经网络,初步学会了最基础的分类问题,当时也有点python基础,同时对TensorFlow也有点入门了。正好我的课题中有一类缺陷比较难以用传统方法识别判断&…

Vue60 插槽

插槽 作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于 父组件 > 子组件 。 分类&#xff1a;默认插槽、具名插槽、作用域插槽 使用方式&#xff1a; 默认插槽&#xff1a; 父组件中&#xff1a;<Cat…

聊聊 OceanBase 资源管理

OceanBase 是分布式多租户架构数据库&#xff0c;其分布式集群从资源角度看可以分成集群、Zone、OB Server、资源池和租户等几个层次。 今天我们从集群和资源两个层次梳理 OceanBase 资源管理相关的概念。 OceanBase 集群管理 OceanBase 集群包含若干个Zone&#xff0c;一个Z…

CRE6511KL 原边SOP7电源芯片

CRE6511KL 是一款内置高压 BJT 功率开关管,5W多模式原边控制的开关电源芯片。CRE6511KL较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6511KL 提供了极为全面和性能优异的智能化保护功能&#xff0c;包括逐周期过流保护、软启动、芯片过温保护、输出过…

Hot Chips 2024:博通(Broadcom)展示AI计算ASIC的光学连接

引言 在2024年的Hot Chips会议上&#xff0c;博通展示了其最新的AI计算专用集成电路&#xff08;ASIC&#xff09;&#xff0c;这款ASIC集成了光学连接技术。这一展示不仅体现了博通在定制AI加速器领域的领先地位&#xff0c;也预示着未来数据中心网络技术的一个重要发展方向。…

Ubuntu上qt使用SSH样式表

SSH样式表 如果学习过web的同学都知道&#xff0c;我们在学习HTML的时候会用到样式表&#xff0c;我们使用它来更改我们的颜色、大小、背景等等。上到后面&#xff0c;老师会说&#xff1a;我们如果在HTML文件中编辑太多的样式&#xff0c;就会让代码看起来非常的繁琐&#xf…

Obsidian个人知识库搭建流程

Obsidian的安装 Obsidian官网 个人博客搭建 xlog【使用xlog搭建个人博客Step by Step】 知乎【使用xlog搭建个人博客Step by Step】

实习的一点回顾Gradle

1 项目目录下执行 ./gradlew build&#xff0c;用.gradlew自动构建 首先有一个gradlew&#xff08;linux&#xff09;或者gradlew.bat&#xff08;win&#xff09;是用来检查java配置&#xff0c;环境配置之类的东西 然后去启动gradle/wrapper/gradle-wrapper.jar去检测本地gra…

【Google Play版】bilibili 3.19.2最新国际版(如何鉴别是否官方?)

相信玩 B 站的小伙伴也不少&#xff0c;国内版确实太臃肿了&#xff0c;已经“变质”了。 这是主界面&#xff0c;我没有做任何设置&#xff0c;刚装好就是这样&#xff1a; 摘自 Play 最新的评论&#xff1a; “3.19非常好&#xff0c;解决了我之前两个痛点。一是首页的自动…

基于PCA-SVM的人脸识别系统(MATLAB GUI)

matlab人脸识别系统(GUI),PCASVM方法 源码详细注释以及适配于本系统的5k字的理论资料&#xff08;方便学习&#xff09; GUI里的人脸识别算法&#xff1a;PCA-SVM 功能&#xff1a;利用ORL数据库&#xff0c;进行训练&#xff0c;测试&#xff0c;并可对单张图片进行识别 两个界…

ArrayList的详细使用教程

ArrayList实现了List接口&#xff0c;是顺序容器&#xff0c;即元素存放的数据与放进去的顺序相同&#xff0c;允许放入null元素&#xff0c;底层通过数组实现。除该类未实现同步外&#xff0c;其余跟Vector大致相同。每个ArrayList都有一个容量(capacity)&#xff0c;表示底层…

vscode写markdown(引入html及css语法)

vscode写markdown 下载插件插入代码markdown中引入html和css语法导出pdf 下载插件 Markdown All in OneMarkdown Preview EnhancedPaste Image 插入代码 afdfafamarkdown中引入html和css语法 呵呵 用ctrlshiftp 搜索"Markdown Preview Enhanced:Customize CSS"在…

个人旅游网(2)——功能详解——用户登录注册

文章目录 一、用户登录1.1、接口详解1.1.1、isLogged (判断用户是否登录)1.1.2、find-by-telephone&#xff08;输入手机号时校验手机号是否注册&#xff09;1.1.3、send-message&#xff08;发送验证码&#xff09;1.1.4、login-by-telephone&#xff08;登录按钮&#xff09;…

Guarded Suspension 保护性暂定模式 以及嵌套死锁问题

多线程交互时&#xff0c;满足条件才去执行&#xff0c;否则阻塞一直到满足条件。当然可以用wait/notify实现。 本文用JUC包下的reentrantlock和其条件变量来完成。 文章目录 首先定义Predicate 和GuardAction&#xff1b;然后定义Blocker如何使用完整代码如下嵌套死锁问题 首…

PWMI模式测频率占空比

开启时钟 GPIO 时基单元 输入捕获初始化部分 配置两个IC通道同时捕获同一个引脚的模式 //快捷将电路配置成PWMI标准的标准结构&#xff0c;只支持通道1、2不支持3、4 //只需要传入一个通道的函数&#xff0c;此函数同时会把另一个通道配置为相反的配置&#xff0c;实现PWMI…

python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转存关于OSI的七层模型和TCP/IP四层模型

一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存 做一个简单的事&#xff1a;使用python读取一个txt文件&#xff0c;里面存储着N行用户id&#xff0c;需要一行行读取后再读取另一个存储用户昵称的txt文件&#xff0c;判断昵称是否有重复&am…

已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值为90的元素时,检索成功需比较的次数是( )。A.1

已知一个有序表为&#xff08;13&#xff0c;18&#xff0c;24&#xff0c;35&#xff0c;47&#xff0c;50&#xff0c;62&#xff0c;83&#xff0c;90&#xff0c;115&#xff0c;134&#xff09;&#xff0c;当二分检索值为90的元素时&#xff0c;检索成功需比较的次数是&a…

【Python系列】text二进制方式写入文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…