【面经】操作系统/Linux

1、计算机的五大单元
  • 电脑的五大单元包括:输入单元、输出单元、控制单元、算数逻辑单元、存储单元五大部分。其中CPU占有控制、算术逻辑单元,存储单元又包含内存与辅助内存;
2、什么是操作系统

操作系统:负责管理协调我们计算机硬件与软件资源工作的一种系统软件计算机安装操作系统,主要就是为了帮助我们屏蔽硬件层的复杂性,给上层的应用软件或用户提供易用的服务。

  • 操作系统=操作系统内核+一堆应用。
  • 操作系统内核:也是代码程序,代码的作用就是(进程管理,内存管理,文件管理,驱动管理等等)。
  •  一堆应用:依附在操作系统用内核上完成某些功能,例如:QQ,微信,飞书等等

3、进程和线程是什么,有什么区别

举个简单例子,我们电脑打开QQ、打开Word,其实就是开了不同的几个进程;而我用 QQ 时,可以一边发消息、一边视频聊天,这就是在进程下开了多个线程处理任务。

区别:

①调度方面:进程可以理解是资源分配的基本单位,而线程则是(CPU调度)任务调度和执行的基本单位。"

内存方面:进程拥有独立的地址空间与资源,同个进程下的线程共享进程的地址空间与资源。

开销方面:线程间切换开销小,进程间切换开销大。线程切换不需要更换页表,而进程切换需要。页表切换就会导致缓存失效,性能就会变低。线程共享进程资源,拥有独立的栈与程序计数器。进程切换要切换上下文环境,创建的时候需要分配系统资源,销毁时要释放系统资源。

其他区别:比如通信、切换、健壮性等方面。一个进程崩溃,不会对其他进程产生影响;一个线程崩溃,会让同一进程内的其他线程也死掉

4、进程是由什么组成的?

进程总的说来包括程序段、数据段、PCB三部分

  1. 程序段就是程序的代码
  2. 数据段就是程序运行时产生的数据(比如全局变量、局部变量等)。
  3. PCB 中包含操作系统对其进行管理的各种信息(如进程标识符 PID,进程当前状态,进程优先级)。process ctrl block(进程控制块)。

5、进程状态有哪些?

就绪/运行/阻塞

  • 就绪:进程已经具备运行条件,但是CPU还没有分配过来;理解为进程已经将运行前的准备工作全部做好了,就等着操作系统调用,占用CPU了,只要操作系统一调用就会变成运行状态。
  • 运行:进程占用CPU,并在CPU上运行;理解为进程正在使用cpu来执行自己的代码
  • 阻塞:进程因等待某件事发生而暂时不能运行;例如:等待IO输入(例如一个函数中写了scanf那么在它就需要用户给他输入参数才能继续往下走),调用某些阻塞接口。
6、虚拟内存

虚拟地址空间是操作系统为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏而引入的。虚拟地址空间是操作系统为一个进程描述的虚拟的、连续的、完整的、线性的地址空间,在linux下是一个mm_struct结构体。好处是保证每个进程在各自虚拟地址空间运行,互相不能干扰对方,采用虚拟地址空间,通过页表映射,可以实现进程中的数据在物理内存上的离散式存储,减少了内存碎片,提高了内存的利用率。

虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),使得进程逻辑上有很大的连续内存地址空间

实际上一部分对应物理内存上的块,还有一部分没加载进内存的对应在外部磁盘,在需要时进行数据交换。这样就可以让程序拥有超过系统物理内存大小可用内存空间

7、操作系统内存管理

它有很多的管理方式,比如块式管理、页式管理、段式、段页式管理。"

简单来说,块式就是讲内存分成一个个块,每个块包含一个进程。同理,段式就是将内存分多个段,按段存储......。

8、页面置换算法

先进先出页面置换算法最近最久未使用页面置换算法时钟(CLOCK)置换算法等等

9、页表是什么?

可以理解成一个映射,存储页面与页框对于关系,通过页表对应逻辑地址与物理地址。

10、上下文环境是什么?

cpu在拿数据的时候并不是直接从内存中拿数据。而是从身边的寄存器中拿数据,这时因为cpu对寄存器的读取速度最快。上下文信息是保存的当前程序在运行时寄存器当中的内容,因为寄存器不是进程所拥有的,当他被切换出去时,运行其他进程时当前寄存器当中的内容有可能就改变了。而上下文信息保存当前寄存器当中的内容之后可以在下次运行时快速的找到上一次运行结束时寄存器当中保存的内容。

11、进程间通信方式

操作系统根据不同的场景提供了不同的方式,管道,共享内存,消息队列和信号量。

  • 管道是内核中的一块缓冲区,分为匿名管道和命名管道。匿名管道只能用于具有亲缘关系的进程间;而命名管道可用于同一主机上任意进程间通信。
  • 共享内存的本质是一块物理内存,多个进程将同一块物理内存映射到自己的虚拟地址空间中,再通过页表映射到物理地址达到进程间通信,它是最快的进程间通信方式,相较其他通信方式少了两步数据拷贝操作。
  • 消息队列是内核中的一个优先级队列,多个进程通过访问同一个队列,在队列当中添加或者获取节点来实现进程间通信。
  • 信号量的本质是内核中的一个计数器,主要实现进程间的同步与互斥,对资源进行计数,有两种操作,分别是在访问资源之前进行的p操作,还有产生资源之后的v操作。
12、僵尸进程和孤儿进程

僵尸进程:子进程先于父进程退出,但是父进程没有进行进程等待,导致无法获取子进程的退出状态信息,使操作系统无法释放子进程的资源,这时候的子进程就是僵尸进程
孤儿进程:父进程先于子进程退出,则子进程称为孤儿进程,此时孤儿进程的父进程成为了1号进程,并且这个孤儿进程运行在后台,并不占据前台终端
如何处理僵尸进程:kill -9命令。子进程退出时向父进程发送SIGCHLD信号,父进程处理SIGCHLD信号,在信号处理函数中调用wait进行处理僵尸进程

Linux常见的指令
  • 路径类(pwd、cd、ls)
  • 文件类(创建:mkdir文件夹touch文件、移动mv、复制cp、修改名字mv、删除rm、打开/编辑gedit/vi、查看cat)
  • 通讯类(ping ip、ipconfig、hostname -I)
  • 权限(chmod XXX)其中111(7)对应rwx。当前用户,用户组,其他用户。
  • 查看(进程ps)

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

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

相关文章

汽车车灯用肖特基二极管,选什么型号好?

肖特基二极管种类繁多,有低压降肖特基二极管、通用型肖特基二极管、快速恢复型肖特基二极管、高功率肖特基二极管、汽车级肖特基二极管等等,其中低压降肖特基二极管和汽车级肖特基二极管是二极管厂家东沃电子的核心优势产品。关于东沃电子推出的低压降肖…

Android 接入MQTT服务器

加入MQTT库 加入库可以直接下载对应的jar包,也可以在build.gradle里导入,然后加载进入。 这里直接在build.gradle加库 dependencies {implementation(libs.appcompat)implementation(libs.material)implementation(libs.activity)implementation(libs…

【k8s】:深入理解k8s中的亲和性(Affinity)及其在集群调度中的应用

【k8s】:深入理解k8s中的亲和性(Affinity)及其在集群调度中的应用 1、什么是亲和性?2、节点亲和性(Node Affinity)2.1 硬性节点亲和性规则(required)2.2 软性节点亲和性规则&#xf…

如何制作二维码电子画册?轻松入门,快速上手!

在当今数字化时代,二维码电子画册成为了企业推广和信息传递的重要工具之一。相比传统纸质画册,二维码电子画册不仅环保节能,而且可以通过扫描二维码轻松获取更多详细信息,为用户提供了更加便捷的阅读体验。 今天就教大家如何制作二…

【Java开发指南 | 第三篇】Java 空行、强制类型转换及基本数据类型

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 Java 空行强制类型转换Java 基本数据类型内置数据类型引用类型 Java 空行 空白行或者有注释的行,Java 编译器都会忽略掉。 强制类型转换 当需要将一个数据类型转换为另一个数据类型时&#xff0c…

浅尝 express + ORM框架 prisma 的结合

一、prisma起步 安装: npm i prisma -g查看初始化帮助信息: prisma init -h查看初始化帮助信息结果: Set up a new Prisma projectUsage$ prisma init [options] Options-h, --help Display this help message --datasource-provider …

Intewell-Hyper II_V2.1.1_工业实时操作系统软件版本发布

Intewell-Hyper II_V2.1.1_工业实时操作系统软件版本发布 Intewell-Hyper II_V2.1.1 版本号:V2.1.1 版本特点 新增V1.3.2分支上SHV构型合并及问题回归 版本或修改说明 增加功能: 1.V1.3.2分支上SHV构型合并及问题回归 2.适配NewPre3102和NewPre3101…

node+vue3的websocket前后端消息推送

nodevue3的websocket前后端消息推送 前期写web项目时,前端获取数据的方式一般是向后端发起数据请求,然后后端向前端发送数据,然后对数据进行渲染,这是最常规的一种数据通讯方式,适用于绝大部分前后端分离的项目 实际…

java的ConcurrentHashMap深入理解

概要 怎么保证线程安全: 在初始化数组时用了cas操作,sizectl作为占位标志(U.compareAndSwapInt(this, SIZECTL, sc, -1);获取数组中的元素是否已经有了,用Volatile修饰数组(保证可见性)&#…

边缘计算网关有哪些优势?-天拓四方

随着信息化、智能化浪潮的持续推进,计算技术正以前所未有的速度发展,而边缘计算网关作为其中的重要一环,以其独特的优势正在逐步改变我们的生活方式和工作模式。本文将详细解析边缘计算网关的优势。 首先,边缘计算网关具有显著的…

【好书推荐6】《Excel函数与公式应用大全for Excel 365 Excel 2021》

【好书推荐6】《Excel函数与公式应用大全for Excel 365 & Excel 2021》 写在最前面《Excel函数与公式应用大全for Excel 365 & Excel 2021》关键点内容简介作者简介前言/序言目录 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光&…

Linux之命令行参数的原理以及实现,环境变量限时增加删除和永久增加删除以及代码获取环境变量

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 一.命令行参数 1.1main函数参数 在我们学习c语言时我们的main函数…

Vue - 5( 16000 字 Vue2 入门级教程)

一:Vue 初阶 1.1 组件自定义事件 在 Vue 中,组件间通过自定义事件进行通信是一种常见的模式。自定义事件允许子组件向父组件发送消息,也可以在组件内部进行事件的绑定、触发和解绑。让我们详细讲解这些知识点。 1.1.1 组件自定义事件 在 …

最前沿・量子退火建模方法(2) : Domain wall encoding讲解和python实现

前言 上篇讲的subQUBO属于方法论,这次讲个通过编码量子比特的方式,同样的约束条件,不同的编码,所需的量子比特数是不同的。有的编码方式,很节省量子比特。比如,这次要讲的Domain wall encoding。 一、Doma…

一文总结:Python的封装、继承和多态

整个程序员的生涯,最重要的一个知识根基就是面向对象的理解和掌握深度。如果你意识到了面向对象开发思想的重要性,请仔细学习这篇文章。 希望对你有帮助! 这篇详细地解释封装、继承和多态,并在最后提供一个综合示例来总结这三个…

PyQt介绍——弹框介绍和使用

PyQt介绍——弹框介绍和使用 一、QMessageBox QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈 QMessageBox类提供了许多常用的弹出式对话框,如提示、警告、错误、询问、关于等对话框。这…

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD...,无法按下任何按键

Hyper-v 新建 Windows 虚拟机卡在“Press any key to boot from CD or DVD…,无法按下任何按键 在显示这个界面之后点击启动,之后立刻狂按F2, 然后就能进去了

​代码混淆的原理是什么?常见代码混淆方法介绍

本文主要想你介绍代码混淆的原理,常见代码混淆方法,欢迎查阅~ 移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者…

淘宝扭蛋机小程序:扭转购物新风尚,开启惊喜连连之旅

随着移动互联网的飞速发展,淘宝作为国内领先的电商平台,始终致力于为用户带来更加新颖、有趣的购物体验。如今,我们隆重推出淘宝扭蛋机小程序,将传统扭蛋机的乐趣与电商购物的便捷完美结合,为用户带来前所未有的惊喜与…

PyTorch构建自然语言处理模型

一、整体流程 二、 详细步骤 1. 准备数据 在构建自然语言处理模型之前,首先需要准备数据。可以使用PyTorch提供的Dataset和DataLoader类来加载和处理数据。 # 导入必要的库 import torch from torch.utils.data import Dataset, DataLoader # 定义自定义Dataset类…