前一段时间面了一些试,这里总结一下关于操作系统的面经,我简历上写了一个操作系统相关的项目,所以面试的问题可能与平常的八股面试题等等有一些差异,更加偏向具体细节和实现。这里就面试遇到的操作系统相关问题以及我自己的想法整理一下,可以参考参考,有什么问题也还请批评指正。
这个是实际问到我的问题
自己引申出来的问题
黑色普通文字是我的“回答”或者与面试官闲聊的内容
启动
实模式、保护模式
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+创业副业顶尖课程,涵盖多个领域。
点击查看详情
评论(0)