任务介绍
本任务旨在带领具有科研意愿且对计算机系统结构领域感兴趣的本科生参与科研训练,体验从调研学习、实验探究到优化创新的整个科研流程。
以下我们提供一些在操作系统和存储系统领域具有一定挑战性的任务。如果你是入门新手,请参阅此任务。
以下任务每一项都对应着一个细分研究领域。在系统领域,我们鼓励你先通过实验去对领域进行探究,并在此过程中逐步发掘如何对系统进行优化,因此在任务初期,我们不会为你提供一个明确的优化方向。
任务内容
基于 Linux 内核进行实验与开发(以下任选其一):
- 进程调度算法实验: 进程管理是操作系统的一个主要组成部分,进程调度算法是其核心,决定了计算任务应当何时被安排在哪一个CPU上执行。本任务需要你对 Linux 的进程调度算法进行调研,阅读其源码,并对其进行实验以测试其性能。
- 文件系统研究: 文件系统是操作系统对底层块/字符设备(磁盘等)的抽象,提供了与设备的统一交互方式。本任务需要你了解 Linux 中文件系统的基本原理,掌握从系统调用到数据落盘的整个流程。进一步地,阅读 Linux 下的 PageCache 与 VFS 部分的源码,通过实验测试 Ext-4 文件系统中锁的性能。
- io_uring 实验: io_uring 是 Linux 系统中的一个新型 AIO (异步 IO)框架。本任务需要你调研了解异步 IO 与 io_uring 的概念,掌握利用队列进行无锁编程的原理和方法,阅读 io_uring 源码,对其进行实验以测试其性能
- 用户态设备操纵实验: VFIO 技术允许我们从用户空间而非内核态访问设备。本任务需要你了解中断、DMA、VFIO 与 IOMMU 等技术,利用 VFIO 从用户态直接控制磁盘(块设备),通过实验对比用户态直接访问设备与陷入内核态访问设备的性能差异
- NUMA 实验: NUMA (Non-Uniform Memory Access) 是一种多处理机下的内存系统设计,一个常见的例子是多 CPU 服务器。本任务需要你通过实验探究不同 NUMA 节点上内存与 PCIe 设备访问的性能差异
要求
希望报名同学满足以下条件:
- 拥有一定的英语读写能力
- 熟练使用 C 语言,并最好能够掌握一门其他编程语言
- 了解 Linux 基本操作,具有一定动手能力
- 对计算机系统结构与操作系统感兴趣,具有自我驱动力,热衷于主动学习了解相关知识
- 具有良好的沟通能力与合作意识
- 了解操作系统原理,阅读过操作系统或开源框架源码,或对其进行过开发者优先
你能获得什么?
- 先进的实验器材与环境:实验室拥有 i7/32G/2060 台式机 10 余台;配备 Xeon/Tesla T4 的机架式服务器 2 台;配备 Xeon 的双路塔式工作站 2 台。计算资源将根据具体实验情况进行安排
- 志同道合的队友:相信选择参与科研训练的同学都是具有科研理想与工作热情的计算机爱好者,在这里你可以与志同道合的同学一起碰撞出思维的火花
- 老师与学长的指导:实验室教师 3 人,在读博士 2 人,在读硕士 5 人,均在系统结构与人工智能等热门领域有所研究和建树
- 科研奖励与实践证明:如果你在工作过程中表现良好,实验室将会为你提供科研奖励并开具实践证明;表现优异者,可依据工作内容参与由实验室老师与科研一线学长指导的大学生创新创业、开放性创新实验等科研项目,并发表学术论文
报名方式
请按照以下模板发送邮件到[email protected](链接已包含模板):
- 主题: 姓名+网站招募+本科生科研训练:操作系统实验
- 内容: 姓名、学院、年级+个人简历;简历内容中请写明个人概况(姓名、联系方式等)、各科成绩(成绩系统截图即可)、兴趣点、各方面能力水平(参考本文要求部分)等信息