本科生科研训练:操作系统实验(B Level)

任务介绍

本任务旨在带领具有科研意愿且对计算机系统结构领域感兴趣的本科生参与科研训练,体验从调研学习、实验探究到优化创新的整个科研流程。

以下我们提供一些在操作系统存储系统领域较为容易进行的任务。如果你对你的技术和能力有自信,请参阅此任务

以下任务每一项都对应着一个细分研究领域。在系统领域,我们鼓励你先通过实验去对领域进行探究,并在此过程中逐步发掘如何对系统进行优化,因此在任务初期,我们不会为你提供一个明确的优化方向。

任务内容

请在一下各项内容中
基于 Linux 内核及其发行版进行探究:

  • Linux 文件系统:

    • Linux系统中的常用文件系统有哪些?
    • 在Linux中,进行文件读写使用的是什么编程接口?
      • 这些编程接口的功能及其具体使用方法是什么?
      • 什么是MMAP?
        • MMAP的优劣?
        • MMAP的性能如何?
    • Linux的“一切皆文件”是如何与磁盘等块设备进行联合工作的?
      • 在Linux中,文件是如何存储到块设备的?
      • 在此过程中,Linux提供了什么类型的抽象?
      • 不同的文件系统Linux是如何进行统一的?
      • 常见文件系统如何利用磁盘上的块的?
    • Linux文件系统有哪些针对数据安全性的优化措施?
      • 文件读写的顺序如何实现?
        • 什么是锁?
          • 有哪些类型的锁?
          • 不同种类的锁的性能如何?
        • 什么是消息委派?
          • 如何使用消息委派减少锁的使用?
        • Linux如何保证不出现文件的读写冲突?
      • 什么是事务?
        • 常见文件系统是如何实现事务的?
      • 什么是Snapshot?
        • 常见文件系统是如何实现Snapshot的?
      • 常见的文件系统如何实现权限的管理?
        • Linux如何实现文件的权限管理?
        • 什么是ACL?
        • 什么是磁盘配额?
        • 什么是Audit Subsystem?
          • 针对Linux的文件系统,Audit所做的努力有哪些?
      • 在硬件设备上,为了磁盘的数据安全性的措施有哪些?
        • 什么是NAND Flash Memory?
          • 其特点有哪些?
        • 硬件设备针对磁盘使用寿命所做的优化有哪些?
      • 你还可以想到什么优化措施?
    • Linux文件系统有哪些针对存储性能的优化措施?
      • 什么是LibC库?
        • 常见的LibC库有哪些?
        • LibC针对文件系统读写性能的优化有哪些?
      • 什么是PageCache?
        • Linux的PageCache是如何实现的?
        • Linux系统如何使用PageCache提高性能?
      • 什么是Block Layer?
        • 什么是BIO Layer?
          • 什么是Folio?
        • 什么是Request Layer?
      • 什么是FLash Translation Layer (FTL)?
        • FTL在存储性能上采取的优化?
      • 磁盘硬件针对数据存取性能采取的措施有哪些?
      • 你还可以想到什么优化措施?
    • Linux和块设备硬件如何进行交互?
      • 常见的磁盘硬件可以分为几类?
      • 每种磁盘和计算机的通信方式和协议是什么?
      • 磁盘和计算机之间通信的协议是如何实现的?
      • 在通信协议(软件、硬件)上针对数据完整性和存储性能所做的优化有哪些?
    • 给出一个详细的演示示例,使用手动画图或者其他方式模拟:文件读取(从调用文件接口到磁盘硬件指令通信,上下层),并探究全过程中的分步瓶颈 (Hard难度)
  • Linux 进程调度:

    • 进程调度的算法有哪些?
      • 它们的优劣?
    • 当前Linux系统中使用的进程调度算法的思想是什么?
      • Linux是如何实现该算法的?
      • 在进程调度的过程中涉及的硬件有哪些?
        • 这些硬件如何与Linux协作?

要求

希望报名同学满足以下条件:

  • 拥有一定的英语读写能力(英语B级分级及以上),或者熟练使用翻译软件
  • 熟练使用 C 语言,并最好能够掌握一门其他编程语言
  • 基本了解 Linux 概念,具有一定动手能力
  • 对计算机系统结构与操作系统感兴趣,具有自我驱动力,热衷于主动学习了解相关知识
  • 具有良好的沟通能力与合作意识(经常与我们沟通很重要,双赢)

你能获得什么?

  • 先进的实验器材与环境:实验室拥有 i7/32G/2060 台式机 10 余台;配备 Xeon/Tesla T4 的机架式服务器 2 台;配备 Xeon 的双路塔式工作站 2 台。计算资源将根据具体实验情况进行安排
  • 志同道合的队友:相信选择参与科研训练的同学都是具有科研理想与工作热情的计算机爱好者,在这里你可以与志同道合的同学一起碰撞出思维的火花
  • 老师与学长的指导:实验室教师 3 人,在读博士 2 人,在读硕士 5 人,均在系统结构与人工智能等热门领域有所研究和建树
  • 科研奖励与实践证明:如果你在工作过程中表现良好,实验室将会为你提供科研奖励并开具实践证明;表现优异者,可依据工作内容参与由实验室老师与科研一线学长指导的大学生创新创业、开放性创新实验等科研项目,并发表学术论文

报名方式

请按照以下模板发送邮件到[email protected](链接已包含模板):

  • 主题: 姓名+网站招募+本科生科研训练:操作系统实验
  • 内容: 姓名、学院、年级+个人简历;简历内容中请写明个人概况(姓名、联系方式等)、各科成绩(成绩系统截图即可)、兴趣点、各方面能力水平(参考本文要求部分)等信息