Skip to content

Latest commit

 

History

History
335 lines (208 loc) · 19.6 KB

topic-list.md

File metadata and controls

335 lines (208 loc) · 19.6 KB

2021年本科毕设题目介绍

https://github.com/oscourse-tsinghua/undergraduate-topic

xxxx

本题目的目标是,xxxx。

总体目标

  1. xxxx;

1.1 xxxx(xxx)

xxxx。

工作内容
  1. xxx。
相关工作

1. 异步操作系统设计和实现

本题目的目标是,在RISC-V平台上利用Rust语言的异步特征,设计和实现异步操作系统,以提高操作系统整体性能。

总体目标

  1. 在内核中引用异步机制,以提高内核的I/O性能;
  2. 在内核态和用户态引入协程机制,以提高处理机调度的性能;
  3. 引入异步系统调用机制,以提高系统调用的访问性能。

1.1 基于Rust语言的异步特征重写rCore操作系统内核

基于async-nostd,利用Rust语言的Future特征重写rCore操作系统内核中与外设交互相关的模块。

工作内容
  1. 通过完成rCore实验,熟悉Rust和rCore;
  2. 基于RustSBI完成串口通信的异步重写;
  3. 将Flash等块设备的驱动模块的异步重写;
  4. 对比测试异步重写前后的应用程序性能变化;

1.2 rCore的进程、线程和协程调度

在内核线程中引入协程概念,以同时支持内核线程和协程,进而统一进程、线程和协程的调度。

工作内容
  1. 在内核中引入协程支持,同时支持线程切换和协和协程切换;
  2. 了解协程的调度机制,分析协程相关数据结构;
  3. 尝试统一进程、线程和协程的调度;
  4. 利用协程机制优化内核中的文件系统模块;
  5. 对比测试引入协程前后的应用程序性能变化;
1.2.1 rCore的进程、线程和协程调度(张露元)

在线程中引入协程概念,以同时支持线程和协程的统一调度,进而统一进程、线程和协程的调度。

  1. 学习Rust语言:rust语言有协程的支持,可以把异步函数执行视为基本的调度单位(协程),然后由编译器生成这些协程的调度代码。
  2. 完成教学操作系统rCore的实验:目的是熟悉rCore的基本结构和核心算法的实现;
  3. 基于对异步操作系统设计方案的了解,在用户态进程中引入协程支持,同时支持用户态线程;

协程是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和堆空间数据结构,多个协程是串行执行的,完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。(协程就像一个函数)

  1. 分析用户态进程中的线程和协程的相关数据结构;

可能要实现就绪协程的队列和就绪线程的队列,然后实现协程切换和线程切换的统一。

  1. 尝试在用户态统一线程和协程的调度;(基本目标)

协程的调度分为三种情况:

  • 同一线程内的协程切换:rust语言中,在用户态下同一线程内的协程切换的实现已经存在相应的开源用户态线程库。
  • 同一进程内不同线程中的协程切换:不同线程中的协程切换,就要获取协程所在的线程信息,然后进行现成的切换。
  • 不同进程内的协程切换:不同进程中的协程切换,就要获取协程所在的线程和进程信息,然后进行进程的切换。
  1. 在内核中引入协程支持,同时支持线程切换和协和协程切换;
  2. 了解内核中协程的调度机制,分析协程相关数据结构;
  3. 尝试在内核中统一进程、线程和协程的调度;(可选目标)
  4. 利用协程机制优化内核中的文件系统模块;
  5. 对比测试引入协程前后的应用程序性能变化;(比赛目标)

1.3 rCore异步系统调用实现

利用Linux中的uring机制来重写rCore的系统调用和IPC机制,以提高系统调用和应用进程间IPC的性能。

工作内容
  1. 将uring机制引入rCore,实现文件系统的异步系统调用接口;
  2. 对比测试引入异步系统调用前后的应用程序访问文件系统的性能变化;
  3. 基于异步系统调用实现异步管道机制;
  4. 对比测试引入异步管道机制前后的应用程序访问文件系统的性能变化;
  5. 尝试定义规范的异步系统调用接口和异步IPC接口;

2. 鸿蒙操作系统中开源部分的RISC-V移植

本题目的目标是,将HarmonyOS中面向IoT的鸿蒙Liteos-a移植到RISC-V平台上,并支持ARM平台和RISC-V平台上的鸿蒙Liteos-a就虚拟设备互联。

总体目标

  1. 完成鸿蒙Liteos-a的ARM版本到RISC-V版本移植;
  2. 将鸿蒙Liteos-a系统中的应用态的分布式软总线移植到RISC-V平台上,并支持鸿蒙Liteos-a的虚拟设备互联;

2.1 鸿蒙Liteos-a的RISC-V移植

将ARM平台上鸿蒙Liteos-a移植到RISC-V平台上。

工作内容
  1. 在qemu模拟器上编译鸿蒙Liteos-a的ARM版本,并形成一个编译和测试帮助文档;
  2. 在qemu模拟器上进行鸿蒙Liteos-a的RISC-V移植;
  3. 在K210开发板上进行鸿蒙Liteos-a的RISC-V移植。

2.2 分布式软总线的RISC-V移植

将鸿蒙操作系统中的应用态的分布式软总线移植到RISC-V平台上,并支持鸿蒙Liteos-a的虚拟设备互联。

工作内容
  1. 在qemu模拟器上编译分布式软总线的ARM版本,并形成一个编译和测试帮助文档;
  2. 在qemu模拟器上进行分布式软总线的RISC-V移植;
  3. 在K210开发板上进行分布式软总线的RISC-V移植;
  4. 尝试同时包括ARM和RISC-V开发板的分布式软总线应用的互联。

3. 基于rust语言和RISC-V平台的操作系统设计和改进

本题目的目标是,在RISC-V平台上开发基于rust语言的教学操作系统开始,研究操作系统内核技术,并在教学操作系统中进行验证性实现。可能的选题包括新硬件环境上的教学操作系统移植、新增或改进操作系统内核功能、设计操作系统内核分析工具等。

总体目标

  1. 基于中科院计算所的PARD,在rCore内实现内存访问带宽的资源监测和隔离;
  2. 针对rust语言,设计操作系统内核的分析工具,自动化地查找内核错误;
  3. 扩展RISC-V和rCore,以改进操作系统的性能;

3.1 RISC-V平台基于Rust语言的计算机系统综合实验设计和完善

在FPGA平台上移植和适配已有的RISC-V CPU实现,完善基于Rust语言的小型教学操作系统rcore,并形成实验帮助文档。

工作内容
  1. 在FPGA开发板小脚丫CYC10上移植和适配支持MMU的RISC-V CPU,支持Flash和SDRAM,提供较完善的硬件功能测试集。
  2. 在FPGA开发板上重现和完善基于Rust语言的小型教学操作系统rcore,支持完整的操作系统实验。
  3. 基于已有的组成原理和操作系统实验帮助,撰写计算机系统综合实验指导文档。
相关工作
  1. 范志鹏-基于Rust语言和RISC-V平台的计算机系统实验设计和改进

3.2 用Chisel语言FPGA开发板实现RISC-V CPU

在FPGA平台上用用Chisel语言实现RISC-V CPU,并集成到计算机系统综合实验中。

工作内容
  1. 在FPGA开发板⼩脚丫CYC10上⽤Chisel语⾔RISC-V CPU,实现功能包括:RV32IC的指令集(指令编码长度为16比特,32位地址空间与整数指令,支持32个通用整数寄存器)、扩展指令集M(整数乘法和除法指令)、支持RISC-V定义的中断和异常、⽀持MMU;
  2. 替换计算机系统综合实验中的使用verilog语⾔编写的具有相同功能的CPU,并测试其功能正确性;
  3. 对⽐verlog和chisel的实现的性能和开销特征;
  4. 撰写chisel CPU的实现帮助⽂档。
相关工作
  1. 贺清-用Chisel语言实现RISC-V处理器

3.3 在labeled risc-v上设计和实现rcore的虚拟化扩展

在labeled risc-v上移植rcore,并扩展rcore的实现,以支持多个rcore实例的支持。

工作内容

  1. 重现FPGA开发板上labeled risc-v和多个Linux映像的运行,完善相关帮助文档;
  2. 在FPGA开发板上的labeled risc-v CPU上移植教学操作系统rcore,并形成帮助文档;
  3. 扩展rcore的实现,支持rcore映像与Linux映像的并发运行,并形成帮助文档;
相关工作
  1. 甄淇深-在labeled risc-v上设计和实现rcore的虚拟化扩展

3.4 在labeled risc-v上设计和实现rcore的进程间的内存访问带宽控制

在labeled risc-v上移植rcore,并扩展rcore的实现,以支持rcore内多进程间的内存访问带宽控制。

工作内容
  1. 重现FPGA开发板上labeled risc-v和多个Linux映像的运行,完善相关帮助文档;
  2. 在FPGA开发板上的labeled risc-v CPU上移植教学操作系统rcore,并形成帮助文档;
  3. 扩展rcore的资源管理,实现进程间的内存访问带宽分配。

3.5 RISC-V的用户态中断扩展

在FPGA平台上用Chisel语言实现RISC-V CPU,实现RISC-V的用户态中断扩展,移植rCore到自己的实现上,并在rCore中扩展用户态中断支持,以支持高效的信号处理机制。

工作内容
  1. 参考已有相关工作,在小脚丫FPGA开发板10CL016上实现最新的RV32IA规范特权级支持
  2. 实现RISC-V的N扩展(用户态中断)的硬件;(基本要求)
  3. 参考已有相关工作,把自己的RISC-V SoC实现上适配教学操作系统rCore
  4. 在rCore中扩展基于用户态中断的信号机制;(较高目标)
  5. 设计测试用例展现用户态中断的特征。
相关工作
  1. 甄淇深-在labeled risc-v上设计和实现rcore的虚拟化扩展
  2. 贺清-用Chisel语言实现RISC-V处理器
  3. 范志鹏-基于Rust语言和RISC-V平台的计算机系统实验设计和改进

3.6 用Chisel语言在FPGA开发板实现基于RISC-V CPU的片上系统

本选题的目标是在FPGA平台上,完全用Chisel语言实现基于RISC-V CPU的SOC架构,支持串口和片外Flash等外围接口,并形成实验帮助文档。

工作内容
  1. 在重现已有工作的基础上,与人合作在FPGA开发板小脚丫CYC10上用Chisel语言设计实现一个完整的RISC-V32片上系统,支持AXI总线、SDRAM模块、Uart串口、LED模块、片外flash模块等外围模块,并通过测试用例验证功能正确性;(基本目标)
  2. 撰写Chisel SOC的实现帮助文档(基本目标)
  3. 对比Verilog和Chisel的实现的性能和开销特征;
  4. 实现rCore教学操作系统中的Flash模块驱动;(可选目标)
相关工作
  1. Chisel实现SOC以及操作系统移植帮助文档
  2. 贺清-用CHisel语言实现RISV-V处理器
  3. 蒋周奇:RISV-V CPU上的RustSBI(源代码文档
  4. rCore教学操作系统实验文档第三版

4. Android系统和应用数据的自动备份与恢复

在手机故障后更换过程中的数据迁移是一个费时过程,并且容易出现重要数据丢失。通过周期性的自动数据备份可有效减少数据迁移开销和数据安全风险。已有许多工作可实现特定应用数据的数据备份和恢复,但数据备份的范围还不全面,备份效率也不高。

工作内容

  1. 重现已有的Android应用数据备份和恢复工作;
  2. 扩展常见新应用的数据备份功能,进而实现对所有应用数据的自动备份和恢复;
  3. 扩展对系统配置数据的备份和恢复;
  4. 支持全系统用户数据的自动备份和恢复;
相关工作
  1. 王宇航-Android系统和应用数据的自动备份与恢复

  2. 孙一凡-Android系统和应用数据的自动备份与恢复

5. 基于区块链和手机传感器的车辆位置验证

车载网中车辆位置信息在路由和安全应用中发挥着重要作用。攻击者可以通过位置欺骗达到利己的目的。方便、安全、快速的获取并验证车辆的位置信息是方便人们出行,缓解道路拥堵,减少交通事故的有效途径。智能手机及其传感器的扩展性能够方便快捷的提供和分析位置信息,实现实时性、快速性;通过蓝牙、wifi等距离探测功能,可实现GPS定位外的位置服务;区块链方便多车辆协作和具备防篡改能力,为位置验证提供安全性保证,但将区块链与手机获取位置信息相结合的系统和应用还需进一步研究。

工作内容

  1. 利用手机传感器采集车辆位置信息;
  2. 利用区块链智能合约验证车辆加入、行驶中和退出的位置信息;
  3. 利用区块链进行真实车辆位置和车辆可靠性的存储和汇总;
  4. 向订阅用户提供车辆可靠性服务。

5.1 基于区块链的环境信息获取与分享(吴玥仪)

车辆位置在车载网中非常重要的数据信息。通过方便、快捷、安全地获取并验证车辆位置信息、同时对可能的位置欺骗进行防范,车载网可以建立可靠的数据传输、开发多种安全应用,从而提高人们的出行体验以及整体的交通效率。Geohash是一种高效存储、检索地理位置的空间索引,既可以表示个体车辆位置,也可以构建完整的地图框架;区块链去中心化、匿名性等特点,可以为车辆提供一个便捷、安全的协作途径。本项目希望将两种技术结合,为车载网提供一种计算效率高、保密性强、可防范多种攻击的位置验证系统。

工作内容
  1. 在区块链智能合约中使用Geohash进行位置表示
  • 将车辆位置等地理位置信息以Geohash的数据形式,在区块链中存储和传输
  • 使用基于Geohash的地理信息应用框架作为地理信息展现框架
  • 结合以上两者,
  1. 在智能合约中设计和实现一个基于Geohas上的科学的信誉值计算逻辑
  • 考虑车辆节点位置相邻关系
  • 考虑车辆节点地理区域信息
  • 考虑位置数据异常对信誉值的影响
  1. 在智能合约中实现基于Geohas上的安全、高效的位置验证、道路匹配等计算逻辑,
  2. 在虚拟器环境下进行原型验证系统的部署及测试
  • 评估Geohash位置表示的计算效率
  • 测试智能合约面对攻击的安全性
  1. 在移动设备上进行原型验证系统的部署及测试(可选)
相关工作
  1. 李玮祺-基于区块链和手机传感器的车辆位置验证
  2. 成佳壮对李玮祺结果的重现和改进
  3. 周畅:基于GeoHash的地理信息应用框架设计

5.2 基于区块链的车辆安全行驶信息获取与分享

  1. 利用邻居节点判断车辆位置。将节点可达的邻居节点数量作为判断依据,在大多数邻居可达时,判定节点位置可信;
  2. 利用手机传感器采集行驶状态;
  3. 利用智能合约实现路况和行驶状态分析;
  4. 为自身和其他车辆提供状态和路况告警。
5.2.1 基于区块链的车辆安全行驶信息获取与分享(董斌)
  1. 复现前人的已有工作;
  2. 移植GeohashTile到传统区块链:在区块链上保存基于Geohash的地图数据,并使用基于Geohash的Leaflet前端进行展现;
  3. 尝试把传统区块链替换成移动区块链;
  4. 增添基于合约实现的车辆状态和警告功能(可选) :利用手机传感器所获取的结果,判断当前车辆是否异常(如在道路上反复摆动);如果发生了异常,及通过系统给其他车辆给予示警。
  5. 优化信誉评估方法(可选)
  • 路侧单元

    • 通过与路侧旁部署的信号单元进行交互,能够更加精准的确定车辆位置信息,但由于路侧单元目前应用不是特别广泛,加大了开发和验证的难度
  • 邻居验证

    • 通过与相邻车辆交互来验证车辆位置信息,这也对车辆信息保密性提供了要求,在区块链上对车辆位置进行判断,然后根据车辆周围的车辆点进行联合判断,达到一个比较好的效果。

6. 基于FPGA的车载网路由算法测试

车载自组织网络是一种能够广泛应用在智能交通邻域的新兴技术,它通过无中心的网络结构可以实现交通安全数据的实时传播与响应。在这一技术中,无线通信模块的性能是一个关键问题。在复杂的道路环境下,通讯性能会很大程度上受到环境的影响。 目前的实验平台已有支持两种信道:5.9GHz和433MHz,两种信道都可以在FPGA上控制收发过程。工作内容是在FPGA上实现一个自动网关,根据数据包的大小、内容、优先级等信息自动判断由哪个模块进行发送。 实验平台为Xilinx公司的Zynq模块。

工作内容

  1. 熟悉Zynq实验平台的使用,熟悉已有的433MHz车载网通讯模块驱动代码接口部分(verilog语言);
  2. 将433M信道的驱动移植到zynq平台上(核心代码不需要动,只需要改接口);
  3. 熟悉5.9G模块硬件部分收发驱动的流程(verilog语言);
  4. 修改Linux内核中数据包发送的接口,要求明白层次间的调用关系以及80211数据包解析以及收发过程(难)。
  5. 在FPGA上对GeoSVR路由算法进行测试分析。

7. 基于状态差异分析的错误定位方法设计与实验(王聚海)

针对FPGA程序的错误定位问题,自动的定位辅助工具是一个有效的解决方法;基于状态差异分析的程序对比,有利于差异分析的自动化。本题目的目标是,设计一种状态差异分析框架,能够比较两种不同环境下的算法实现的中间状态,在尽可能早地发现差异,为可能的错误定位提供辅助。

工作内容

  1. 重现已有的参考实现:NEMU模拟器和信息保存、Verilator仿真器和信息保存、两个环境中的操作系统软件运行;形成帮助文档;(基本目标)
  2. 测试环境监测和控制:环境初始化、运行和恢复运行、暂停、状态获取、状态修改(基本目标);尝试对qemu的运行进行监测和控制(较高目标);
  3. 在FPGA上监测和控制:在FPGA上写监测和控制模块来获取信息和控制运行;(比较的维度:内存数据;波形;丰富的触发条件;运行过程的控制)
  4. 差异比较和差异定位:差异比较的时间和范围调整算法设计;
  5. 把方法应用到其他同学的工作上,形成应用实例;