当前位置: 首页 > news >正文

C/C++ 面试复习笔记(5)

1.用户态和内核态切换的开销来自哪里?如何减少这种开销?

主要开销:

上下文保存与恢复:需保存/恢复寄存器、堆栈等状态(约数百CPU周期)。

CPU 模式切换:从用户态到内核态的权限检查及模式切换。

缓存失效:TLB(页表缓存)和CPU数据缓存可能因内核代码执行而失效。

内核代码执行:内核处理系统调用的逻辑耗时(如文件I/O、网络协议栈)。

优化方法:

批量处理:合并多次系统调用为单次(如readv/writev矢量I/O)。

零拷贝技术:减少数据在内核与用户态间的拷贝(如sendfile())。

用户态驱动:绕过内核直接操作硬件(如DPDK网络包处理)。

异步I/O:使用epoll或io_uring减少阻塞等待。

2.硬链接(Hard Link)和软链接(Symbolic Link)的区别是什么?

3.如何查找系统中所有大于100MB的日志文件(.log)并删除?

find / -type f -name "*.log" -size +100M -exec rm {} \;

解释:

/ :从根目录开始搜索

-type f :仅搜索文件

-size +100M :大小超过 100MB

-exec rm {} \; :对匹配文件执行 rm命令

4.i节点(Inode)中存储了哪些关键信息?为什么i节点不包含文件名?

i 节点存储的关键信息:

文件类型(普通文件、目录、符号链接等)。

文件权限(读、写、执行权限)。

文件所有者(UID)和所属组(GID)。

文件大小(字节数)。

时间戳(创建时间、最后访问时间、最后修改时间)。

指向数据块的指针(直接指针、间接指针等)。

硬链接计数(引用该i节点的目录项数量)。

不包含文件名:文件名存储在目录项(Dentry)中,而非i节点。

这种设计允许多个文件名 (硬链接)指向同一个i节点,实现文件共享。

5.文件表项(File Table Entry)和 V 节点(Vnode)分别存储什么信息?它们的核心区别是什么?

6.什么是文件空洞(File Hole)?它的主要特征是什么?文件空洞在哪些实际场景中被广泛应用?举例说明。

定义: 文件空洞是文件中未被显式写入数据的区域,逻辑上存在(文件大小包含这部分),但物理上不占用磁盘空间。

特征:

逻辑大小 > 物理大小:通过ls -l显示的文件大小大于du命令显示的磁盘占用。

读取时返回零:访问空洞区域时,系统返回零值字节(但实际未存储)。

节省磁盘空间:文件系统仅分配实际写入数据的块,跳过空洞。

实际场景:

虚拟机磁盘映像: 虚拟机(如QEMU的qcow2格式)使用空洞表示未分配空间,避免占用宿主机实际存储。

数据库预分配文件: 数据库(如MySQL)预分配大文件用于存储数据,初期仅使用部分空间,其余为空洞。

日志文件滚动: 应用预先创建大日志文件,逐步写入数据,避免频繁扩容操作。

科学计算数据存储: 存储稀疏矩阵或大量默认值的数据集时,通过空洞节省空间。

相关文章:

  • Vite 插件使用全攻略(含自动导入)
  • Codeforces Round 1029 (Div. 3)
  • QT 仿网易云项目
  • SQL-labs通关(23-38)
  • 自动化过程中,如何定位一闪而过的toast?
  • 精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
  • 什么是VR全景展示?VR全景展示的用途
  • SOC-ESP32S3部分:QA-关于唤醒词更改及配置操作步骤
  • IIC(I2C)通信隔离电路分享
  • SQL Server 手动收缩ldf文件
  • 记录:RK3588 PWM调试
  • 算法:模拟
  • 12.找到字符串中所有字母异位词
  • 镜像里切换为普通用户
  • JDK 17 序列化是怎么回事
  • 【c语言】安全完整性等级
  • 「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
  • Qt Http Server模块功能及架构
  • window 显示驱动开发-如何查询视频处理功能(二)
  • UE5 文本框自动换行
  • 手机网站与微信结合/广州seo好找工作吗
  • 沙井网站建设/网络建站工作室
  • 一个新网站怎么做seo/百度无锡营销中心
  • 如何制作公司网站和网页/论坛优化seo
  • 大宗商品交易平台招商/浙江seo公司
  • 外贸商城网站/长沙网站seo源头厂家