大四上 | 计算机综合课设(OS)· 答辩经验帖


课设代码 repo 🤗


被问了如下问题:

  • 我们的 OS 中是否有 idle 进程。
    • 背景:如果所有进程都被 kill 掉了,那么 os 就会陷入死循环。即使再发生需要响应的事情,比如希望再创建个进程 或者异常处理,也没有人去应答。也就是说,如果所有用户进程都被 kill 掉了,我们的 OS 中,是否有人维持系统基本的运转与异常响应。
    • 队友说 linux 启动后有个 0 号进程叫 init,永远活着,会起到这个功能。
    • (老师希望听到的回答:idle 进程是 shell)
  • 异常处理:地址越界怎么处理。
  • 存储管理:线程的共享内存,进程地址空间在内存的映射方式(也就是二级页表的组织方式)。
    • 线程共享内存,框架代码貌似有 bug:线程共享了进程的二级页表,我们是先 kill 进程、再新建【该进程】的线程(迷惑)。进程被 kill 时,相关内存全部被回收,所以新线程无法根据共享页表 找到代码段的实际物理地址。
  • 存储管理:页表大小为 4K,我们想分配一个 5K 空间,零散的 4-1=3K 空间怎么处理。
    • (基于框架代码的回答)就让它零散着。
  • 页表的设计,我们的页表设计中是否有安全性措施。
    • ① 虚拟地址 vs 物理地址,进程地址空间的隔离。
    • ② 内存的属性 不可读 / 只读 / 可写 / 可执行。
  • 设备管理:银行家算法属于死锁的检测 / 消除 / 预防(√)。
  • vga 硬件拓展:
    • vga 显示屏的工作流程:首先与驱动交互,得到满屏字符;然后把字符转换成字模,输出。
    • UART 串口跟 VGA 显示器是否有交互。应该是没有,。
  • 为什么要做进程调度的 MLFQ 拓展。
  • 报告的建议:要把亮点单独说出来,反复强调。

其他组被问的内容:

  • 还是 idle 进程。
  • 串口的读写交互逻辑:写直接写,读要存 buffer。
  • 一个综合性问题:异常处理、时间中断、切换进程、清 TLB、context switch 这一套流程。

总的来说,杨老师是一个很 nice 很敬业、也比较尊重学生的老师,答辩体验还不错。

答辩的目的是确保我们真的做了,一般会问 random 的技术细节问题,简单准备一下即可。

可能是提前答辩、时间充裕的缘故,我们答辩了整整一下午,退出会议后头昏脑胀,然后就发烧了

(然后出现了新冠症状,悲)


记于 壬寅年 壬子月 己酉日。



posted @ 2022-12-22 15:00  MoonOut  阅读(175)  评论(0编辑  收藏  举报