一、《深入理解操作系统》培训大纲
1 课程整体介绍
操作系统是计算机相关专业的核心课程之一,更是组成原理、编译原理等基础课程知识向系统汇聚的枢纽性课程,其重要性不言而喻。但聚焦诠释操作系统运行和设计原理的实际教学中,却有一个重要问题往往被忽略,即如何充分运用和挖掘操作系统的内在特征以提升性能和加快工作效率。
随着大模型等大算力智能模型的涌现普及,以性能为关键强调系统整体大局观的系统能力培养已经成为当前我国IT行业战略人才培养的关键问题,更是当前计算机领域教学改革的热点和趋势问题。同时,随着龙芯、飞腾等我国自主知识芯片的迅猛发展,从系统设计、系统运用、系统调优到系统部署,对系统级人才的规模要求日益增长,对人才的层次化差异需求更是日益凸显。
针对传统教学中,操作系统运用实操教学设计薄弱、操作系统整体性能挖掘环节缺失、涉及产业的工程问题零散,系统级工程技术工具和方法涉猎不足,课程设置面对多层次人才培养差异化不足等问题,南开大学的教学团队探索了一条案例驱动,在实践中摸索,层层递进,知识贯穿的教学新思路。以“文件整理”等常见工程性实操问题和“矩阵乘法”等支持高算力算法的性能挖掘问题为线索,随着问题难度的不断升级,引入进程、线程、虚拟内存、IO等操作系统概念,以及cache、指令流水等底层细节,并通过编程实践、观察测量等方法聚像这些抽象的知识,并融入调试工具、版本管理、数据分析等系统开发常用工程技术手段,从而达到“深入理解”的效果。
《深入理解操作系统》一书为计算机类专业教指委的规划教材,底层硬件平台基于龙芯自主指令集LoongArch,相关教学资源正在建设中,预计将于2023年秋季由机械工业出版社出版。
2 授课日程安排
|
时间 |
课程安排 |
|
第一天上午 |
1. 课程简介 2. 操作系统的若干发行版 3. 案例教学一:文件的梳理 1) 脚本编程与正则表达式(操作系统使用) 2) C语言编程与内存管理(虚拟内存、文件系统、IO等) 3) 进程、线程与并行编程管理(进程、线程、IPC等) 4) 分布式系统初探(网络编程、异常处理) |
|
第一天下午 |
上机练习 |
|
第二天上午 |
1. 案例教授二:矩阵乘法多级优化 1) Python实现与解释器 2) C语言实现与编译器(编译、链接的过程 、指令生成等) 3) 面向cache的分块实现(局部性原理的使用) 4) 多线程实现(线程级并行编程) 5) 加速器与新型硬件(SIMD指令、GPU、CUDA等) 2. 总结 |
|
第二天下午 |
上机练习 |
|
第三天上午 |
1. 关于操作系统课程的思考 1) 操作系统与组成原理 、编译原理的课程衔接 2) 操作系统在不同处理器(指令集)上的实现 3) 简单操作系统与工业级操作系统 4) 操作系统与“工程师思维”以及“复杂工程问题” 5) 基于系统能力思想的操作系统课程教学改革和教学模式探讨 2. 与原有《操作系统》课程教学体系的衔接 |
|
第三天下午 |
研讨交流 |
3 授课教师介绍
宫晓利,2011年毕业于南开大学获得博士学位,并于同年留校任教,现为南开大学网络空间安全学院物联网工程系副主任。主要研究方向为嵌入式系统、操作系统、虚拟化技术等。主持或参与国家重点研发计划、国家自然科学基金、天津市自然科学基金课题近10项,在TPDS, ICPP,VEE,CGO, MONET,计算机研究与发展等国内外高水平期刊会议上发表论文20余篇。在操作系统课程的教学改革和探索的过程中获得天津市教学成果特等奖、天津市高校课程思政示范课程、首批国家级一流本科课程(线下)等成果,并获得全国大学生系统能力竞赛优秀指导教师。
张金,教授,博导。毕业于南开大学和华中科技大学。获评教育部宝钢优秀教师奖,天津市课程思政教学名师,天津市工程专业学位优秀指导教师,获天津市教学成果特等奖,5次获天津市科技进步一、二等奖。主讲本科课程获评首批国家级一流本科课程,天津市高校课程思政示范课程、天津市创新创业示范课程,天津市工程专业学位优秀课程。
二、《现代编译实践教学》培训大纲
1. 课程整体介绍
随着面向领域的计算系统、AI大模型技术等出现,新技术趋势对智能时代编译技术的进步和革新提出了大量新需求。反观当前编译课程的教学体系,其知识体系和训练体系相对落后,教学形式单一,导致学生普遍存在学习编译技术的兴趣较低、畏难情绪较高、对高性能优化技能掌握不够等严重问题。由于人才储备严重不足,进而导致作为新技术趋势下应用基础系统软件的编译器进步缓慢,特别的,自主编译技术发展更是困难重重。
为此,中科大编译教学团队根据行业发展趋势和新时代学生的成长需求,积极贯彻新工科建设思想,发挥科研优势,探索了一条“以研促教、自主研发、科教融合、教研相长”的编译教学新思路,历时5年建设了建木(JianMu)——国内首个面向自主指令集的现代编译实践教学新方案。
建木方案围绕龙芯LoognArch64指令集,以自研的兼容工业界LLVM工具的轻量中间表示LightIR为核心,包含了词语法分析、中间代码与汇编代码生成、寄存器分配、优化等7个基础实验、2个高阶实验,覆盖Flex、Bison、Clang、Git、GDB、Docker等数十种新编程工具和系统软件。该方案为集编程、调试、测试、提交、反馈一体化的实践教学解决方案,目前已经部署到希冀公司的云平台。该方案具有如下特性:
1) 模块化:采用先进的前-中-后编译器设计理念,每个模块可以独立设计。这不仅具备了迁移到新的编程语言或新的芯片体系结构的能力,更重要的是降低了学生开发编译器的工程难度与规模。
2) 可组合:实验模块可以自由组合,实验难度逐级提升,能满足顶尖高校、985高校、211优势学校、普通学校等不同层次高校人才培养定位以及不同层次学生培养需求。
3) 定量化:对学生代码量和难度提出具体要求,有利于不同层次学生的工程能力培养。
建木方案面向计算机、软件工程、信息安全等专业,已在中科大计算机系、湖南大学信息工程学院等应用多轮次。依托该方案,中科大《编译原理和技术》课程入选第二批国家级一流本科线下课程。
《现代编译实践教学》一书为计算机类专业教指委的规划教材,底层硬件平台基于龙芯自主指令集LoongArch,相关教学资源正在建设中,预计将于2023年秋季由高等教育出版社出版。
2.授课日程安排
|
时间 |
课程安排 |
|
第一天上午 |
1、 课程简介(编译技术的发展、现代编译器的设计特点) 2、 预备知识学习(智能指针、STL map、git、RTTI) 3、 词法、语法分析的自动生成:Flex和Bison实验教学 4、 中间代码生成:LLVM工具链、LLVM IR,及自研LightIR实验框架 |
|
第一天下午 |
上机练习 |
|
第二天上午 |
1、 目标代码生成:龙芯LA64编程、面向LA64架构的后端的目标代码生成 2、 机器无关的代码优化一:优化pass的植入方法、mem2reg、循环查找等优化pass |
|
第二天下午 |
上机练习 |
|
第三天上午 |
1、 机器无关的代码优化二:高阶优化方法如死代码删除、常量传播、GVN等 2、 面向体系结构的后端代码优化:寄存器分配等 |
|
第三天下午 |
上机练习 |
|
第四天上午 |
研讨交流 |
3.授课教师介绍
李诚,2017年通过人才引进加入中科大计算机学院、国家高性能计算中心(合肥),从事面向人工智能的核心系统软件研究工作,主讲《编译原理和技术》,连续三年在中国科大毕业生教学质量问卷调查中被评选为全校十大最受学生欢迎老师。获得了2023年第四届中国计算机教育大会优秀教学资源和案例建设特等奖(2项)、2022年全国创新教学大赛安徽省二等奖、2022年全国计算机类课程实验教学设计二等奖、2020-2022年连续三年的全国大学生系统能力竞赛编译系统设计赛优秀指导教师奖等。
徐伟,从事软件类学科教学工作。获得2023年第四届中国计算机教育大会计算机教学资源建设特等奖两项;2021年、2022年华为智能基座奖教金;2021年软件工程教学案例与交流竞赛一等奖。指导学生获得2021年、2022年全国大学生计算机系统能力大赛编译系统设计比赛二等奖、三等奖;指导学生获得中国高校计算机大赛全国总决赛团体一等奖、安徽省高校冠军奖等奖项。
三、《龙架构(LoongArch)体系结构导教班》培训大纲
1. 课程整体介绍
以本科生开发“CPU、OS和Compiler”为目标的“系统能力”培养已经成为我国计算机专业建设的热点之一。其中,本科生开发操作系统是“系统能力”培养的关键环节。北京航空航天大学计算机学院教师团队经多年研究与实践,设计实现了一个基于龙芯的小型操作系统,并开发了支持实验代码自动发布、评测的集成环境,在北航多轮次的教学中取得了较好的应用效果。本次培训的北航操作系统实验代码和操作系统实验环境将向国内高校开源。
本课程讲授与动手实践相结合。上午集中讲授,下午动手实验,实验现场配备助教辅导和答疑。参加培训的老师通过实验将了解一个基于龙芯的小型操作系统完整结构,并完成系统内核制作和内存管理。
为确保学习质量,参训教师应具备如下能力:掌握可执行文件格式及生成、内存管理、进程管理、系统调用、文件系统、MIPS汇编语言等知识,掌握gcc、vi、make、git等工具。
2. 授课日程安排
|
时间 |
课程安排 |
|
第一天上午 |
计算机体系结构基础(LoongArch版)理论课 |
|
第一天下午 |
|
|
第二天上午 |
|
|
第二天下午 |
|
|
第三天上午 |
1)实验准备知识复习 2)单周期CPU实验重难点解析 |
|
第三天下午 |
3)实验环境及平台介绍 4)Verilog设计常见错误及调试技巧 |
|
第四天上午 |
5)流水线CPU实验重难点解析 6)流水线CPU实验常用调试技巧 |
|
第四天下午 |
7)CPU中断例外实验重难点解析 8)CPU中断例外实验常见错误 |
|
第五天上午 |
9)AXI总线接口实验重难点解析 10)AXI总线接口实验常见错误 |
|
第五天下午 |
11)TLB MMU实验重难点解析 12)TLB MMU实验常见错误。 |
3. 授课教师介绍
胡伟武,龙芯中科技术股份有限公司董事长,中科院计算所研究员、博士生导师。第十一届全国人大代表,第*八大十**、十九大*党**代表。胡伟武从2001年起作为龙芯总设计师投身于龙芯处理器的研制工作。先后主持完成了龙芯1号、龙芯2号、龙芯3号系列处理器的研制,改写我国信息产业无芯历史。胡伟武作为首席科学家全面主持龙芯中科的技术工作,组织规划龙芯研发线路图,组织领导新产品的研发。曾获“北京市突出贡献中关村奖”、“CCF王选奖”等奖励。
汪文祥,龙芯中科技术股份有限公司处理器核首席架构师、中国科学院大学岗位教授。
四、《操作系统课程设计》培训大纲
1. 课程整体介绍
以本科生开发“CPU、OS和Compiler”为目标的“系统能力”培养已经成为我国计算机专业建设的热点之一。其中,本科生开发操作系统是“系统能力”培养的关键环节。北京航空航天大学计算机学院教师团队经多年研究与实践,设计实现了一个基于龙芯的小型操作系统,并开发了支持实验代码自动发布、评测的集成环境,在北航多轮次的教学中取得了较好的应用效果。本次培训的北航操作系统实验代码和操作系统实验环境将向国内高校开源。
本课程讲授与动手实践相结合。上午集中讲授,下午动手实验,实验现场配备助教辅导和答疑。参加培训的老师通过实验将了解一个基于龙芯的小型操作系统完整结构,并完成系统内核制作和内存管理。
为确保学习质量,参训教师应具备如下能力:掌握可执行文件格式及生成、内存管理、进程管理、系统调用、文件系统、MIPS汇编语言等知识,掌握gcc、vi、make、git等工具。
2. 授课日程安排
|
时间 |
课程安排 |
|
第一天上午 |
计算机体系结构基础(LoongArch版)理论课 |
|
第一天下午 |
|
|
第二天上午 |
|
|
第二天下午 |
|
|
第三天上午 |
教学内容 1)操作系统课程概况与培训内容简介 2)LA32R硬件简介 3)操作系统实验集成环境简介 4)lab1“启动和系统初始化” |
|
第三天下午 |
实验内容 1)lab1“启动和系统初始化”编码实现 2)lab1“启动和系统初始化”课上测试 3)lab1“启动和系统初始化”代码讲解 |
|
第四天上午 |
教学内容 1)lab2“内存管理” 2)lab3“进程管理和中断异常机制” 3)lab4“系统调用” |
|
第四天下午 |
实验内容 1)lab2“内存管理”编码实现 2)lab2“内存管理”课上测试 3)lab2“内存管理”代码讲解 |
|
第五天上午 |
教学内容 1)lab5“文件系统” 2)lab6“命令解释程序” 3)增量式操作系统实验设计与学习行为量化分析方法讨论 |
|
第五天下午 |
实验内容 1)lab3“内存管理”编码实现 2)lab3“内存管理”课上测试 3)lab3“内存管理”代码讲解 |
3. 授课教师介绍
王雷,操作系统课程团队主讲教师,负责课程实验体系的设计,撰写多本教材、发表多篇高水平教学研究论文。
沃天宇,操作系统课程团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平教学研究论文。
孙海龙,操作系统课程团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平论文。
姜博,操作系统课程团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平论文。
原仓周,操作系统课程团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平论文。
牛虹婷,操作系统课程设计团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平论文。
王良,操作系统课程设计团队主讲教师,负责课程实验体系的设计与教学实施,发表多篇高水平论文。