前一段时间面了一些试,这里总结一下关于操作系统的面经,我简历上写了一个操作系统相关的项目,所以面试的问题可能与平常的八股面试题等等有一些差异,更加偏向具体细节和实现。这里就面试遇到的操作系统相关问题以及我自己的想法整理一下,可以参考参考,有什么问题也还请批评指正。

这个是实际问到我的问题

自己引申出来的问题

黑色普通文字是我的“回答”或者与面试官闲聊的内容

启动

实模式、保护模式

MBR

开启分页机制(x86),构建页表;页表地址给 CR3;CR0.PE = 1

BSP 启动 AP 过程(x86,中断控制器为APIC),主要通过 LAPIC 发送 INIT-SIPI-SIPI 消息... 详见 Multiprocessor Specification

OS 第一个 init 进程做了些什么

汇编和 C 交互的一些问题,遵循调用约定,全局变量等在汇编时就要处理好

内存管理

分段分页特点,为什么分页

地址转换过程,段级转换(GDT)、页级转换(查页表)

软链接与硬链接的区别是什么_硬链接和软链接的区别_链接软硬区别是什么

Linux kmalloc 的特点,分配的物理内存连续

IO 管理/中断

软链接与硬链接的区别是什么_链接软硬区别是什么_硬链接和软链接的区别

开关中断的事,一般我们说中断时保存上下文前要关中断,x86 下,关中断就是 EFLAGS 的 IF = 0

系统调用过程

按下一个键到显示在屏幕上,键盘中断 + 显卡、写显存 过程,太多略,详见

DMA 过程,不是很清楚,百度google,我也是搜的。

磁盘寻址,CHS(柱面磁头扇区)、LBA(逻辑块地址),实际上似乎不是想问这个,但面试官当时也没说清楚就下一个问题,emm??????

内核态、用户态的理解,实际上就是特权级,RPL、CPL、DPL 三者之间不同情况下的各种比较变化,特复杂。

用户态到内核态栈的变化,x86 下根据 TR 可以找到 TSS,TSS 里面有内核栈的 CS 和 ESP;RISC-V 下 sscratch 有内核上下文的地址。

文件管理

inode 相当于树形结构的索引、假如设计为哈希索引,如何设计,Cache 缓存,优劣等等讨论

硬链接、软链接区别

目录项缓存,Linux 使用目录项缓存 dentry cache 缓存提高目录项对象的处理效率,我也只知道这个东西,待研究

命令获取某个目录下的文件数量

进程其他

好了,本文就到这里了,有什么问题还请批评指正。

程序员专属卫衣

商品直购链接


创业/副业必备:

本站已持续更新1W+创业副业顶尖课程,涵盖多个领域。

点击查看详情

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。