张 亮,路红,唐志强
(复旦大学计算机科学技术学院,上海200433)
摘要:针对传统计算机系统类课程群中多门课程知识点重复、有衔接漏洞的问题,按照系统能力培养的观点,结合复旦大学计算机学院系统类课程的教学经验,提出将ACM CS2013规范中相关的知识要点分解到数字逻辑部件、计算机组成原理、操作系统、计算机体系结构的课程中去,旨在指导本科计算机系统类课程的教学。
教育期刊网 http://www.jyqkw.com
关键词 :计算机系统能力培养;课程大纲;ACM CS2013
文章编号:1672-5913(2015)17-0029-06
中图分类号:G642
第一作者简介:张亮,男,教授,研究方向为服务计算、以数据为中心的业务流程管理、数字图书馆,Lzhang@fudan.edu.cn。
1 背景
应用和技术的进步驱动着计算机科学的迅猛发展。当前,计算机呈现出“人与信息世界及物理世界融合”的趋势和网络化、服务化、普适化、智能化的鲜明特征,计算机相关学科的研究重心正由算法和程序向系统层面转移。
ACM/IEEE最新公布的CS2013( Computerscience Curricula 2013)调整和新增的4个知识域( Body of Knowledge,BoK)——系统基础( SF)、并行和分布计算(PD)、基于平台的开发( PBD)、信息保障和安全(IAS) 均涉及系统级内容;国内教育部计算机专业教学指导分委员会已经开始研究计算机专业学生能力培养和实践教学体系,重点探讨如何使学生增强系统能力,具备全局掌控一定规模系统的能力;南京大学、北京大学、北京航空航天大学、浙江大学、国防科技大学等高校进行了多年探索实践,积极效果正在逐步体现。经验表明,以系统观为指导,强化系统类课程群的建设是一种行之有效的措施。
系统类课程群是与计算机系统密切相关的若干课程的统称。以复旦大学计算机科学技术学院的教学实践为例,系统类课程群包括数字逻辑部件、计算机组成原理、操作系统、计算机体系结构、编译5门专业课程及相关配套实验。这些课程从多层次(部件、系统)、多观点(硬件、软件)介绍同一个主体对象——计算机系统的核心知识,对学生理解计算机系统的内部运作机制起到至关重要的作用。
现阶段,独立建设的教学体制造成了多门课程知识点部分重叠、前导课/后继课相互依赖,这一现象已为从事本领域教学管理和教学实践的大部分教师所关注,并成为历次教学研讨会、导教班力图解决的热点问题。
2 核心要点及课程分解
我们以ACM CS2013为规范性蓝本,抽取与系统类课程群关系最为密切的3个知识域( BoK) -Systems Fundamentals(SF,系统基础)、Architecture and Organization(AR,体系结构及组成)、Operating Systems(OS,操作系统)——为研究对象,从系统观的角度探索知识要点配置、共同知识要点在多门课程中的侧重以及多门课程在相关知识体系上的衔接问题。
所谓“系统观”,就是指对计算机系统的深刻理解。具有“系统观”的人才,能够站在系统的高度考虑和解决应用问题,具有系统层面的认知和设计能力,包括对软、硬件功能进行合理划分、对系统不同层次进行抽象和封装、对系统整体性能进行分析和调优、对系统各层面的错误进行调试和修正、对用户程序进行准确的性能评估和优化以及根据不同的应用要求合理构建系统框架等能力。
首先,我们分别列举这3个知识域的各知识要点(其顺序与ACM CS2013相同);然后,为各知识要点分配对应的课程名称,重点关注多门课程在同一个知识要点上的侧重点,探讨横跨多个知识域知识要点间的衔接问题。
为后续讨论方便,我们为每个知识要点赋予了编号,其格式如下:知识域名/知识要点编号一序号。例如,操作系统知识域的并发知识要点下“中断的作用”编号为:OS/3-4。同样,4门系统类课程数字逻辑部件、计算机组成原理、操作系统、计算机体系结构也分别代以记号DL、CP、OS和AR,特殊的侧重则标注在课程名称之后)。
2.1 SF/System Fundamentals(系统基础)
系统基础域分为计算范型、跨层通信、状态及状态机、并行、评估、资源分配及调度、逼近、虚拟化及隔离、通过冗余增强可靠性、量化评估10个部分。
2.1.1 SF/1计算范型
①计算机的基本构造模块和部件(门,触发器,寄存器( DL,CP),互联;数据通路+控制+存储器(CP强调软件,DL仅至单周期,AR多周期,强调硬件)。
②作为计算模型的硬件:基本逻辑构造模块;逻辑表达式,最小化,积之和形式( DL,CP)。
③应用层序列处理:单线程(CP单个进程执行,不涉及切换,OS)。
④简单应用层并行处理:请求层(网络服务/客户一服务器/分布式),每个服务器单线程,多服务器多线程(CP,OS应用)。
⑤流水线的基本概念,重叠处理阶段( AR硬件实现,CP软件实现,OS原理)。
⑥缩放基本概念:变快vs处理更大的问题( CP,OS)。
2.1.2 SF/2跨层通信
①抽象编程,接口,库的使用(CP两级抽象,OS)。
②应用、OS服务、RPC的区别(OS)。
③应用与虚拟机的交互(OS)。
④可靠性(OS,AR,CP冗余,纠错,DL纠错)。
2.1.3 SF/3状态及状态机
①数字和模拟/离散和连续系统( DL)。
②简单逻辑门,逻辑表达式,布尔逻辑简化( DL,CP)。
③时钟,状态,顺序( DL,CP)。
④组合逻辑,时序逻辑,寄存器,存储器( DL,CP)。
⑤状态机的计算机和网络协议样例( CP,DL定义状态机)。
2.1.4 SF/4并行
①串行处理与并行处理(CP介绍概念)。
②并行程序设计与并发程序设计( OS)。
③请求并行与任务并行(OS)。
④客户/服务器模型,Web服务,线程的创建和运行,管道(OS)。
⑤多核结构和同步的硬件支持(AR原语,OS机制)。
2.1.5 SF/5评估
①性能图( AR)。
②负载和代表性基准,以及采集和分析性能图的方法( AR)。
③使用CPI(每条指令的执行周期)公式来理解指令集设计,处理器流水线和内存系统组织的权衡( CP,AR)。
④阿姆达尔定律( AR,CP)。
2.1.6 SF/6资源分配及调度
①资源的种类(例如,处理器分享,内存,磁盘,网络带宽)(OS)。
②调度的种类(例如,先来先服务,优先级调度)(OS)。
③公平调度的有点,抢占式调度(OS)。
2.1.7 SF/7逼近
①光速和计算机(每纳秒一英尺和1G赫兹时钟)(AR)。
②计算机系统中的延迟:内存vs磁盘延迟vs网络存储之间的延迟(CP,OS,AR)。
③处理器和系统的缓存以及时间空间局部性在性能上的影响( CP)。
④数据库、操作系统、分布式系统和计算机体系结构的缓存和缓存一致性( CP,OS)。
⑤处理器存储层次化和平均内存访问时间公式的介绍(CP,OS提问,AR提问)。
2.1.8 SF/8虚拟化及隔离
①保护和可预测性能的基本原理( CP)。
②间接法的级别,以虚拟内存来管理物理存储资源( CP,OS)。
③虚拟内存实现方法和虚拟机实现方法( OS)。
2.1.9 SF/9通过冗余增强可靠性
①软件错误和故障的区别( OS)。
②基于检查和重试的冗余( OS)。
③基于冗余编码的冗余(错误修正码ECC,CRC,FEC)(DL)。
④复制/镜像/多重备份( OS)。
⑤增强容错性和可用性的其他方法( OS)。
2.1.10 SF/10量化评估
①导出量化评价的分析工具( AR)。
②数量级分析(大O记法)(OS)。
③系统快速和慢速路径分析(???)。
④事件及它们对性能的影响(比如指令阻塞,( AR),缓存未命中,页错误)(CP,OS)。
⑤理解分层系统,工作量,平台,表现隐含式,和它们对估值表示的挑战(???)。
⑥微基准测试问题(???)。
2.2 AR/Architecture and Organization(体系结构及组成)
体系结构组成域分为数字逻辑和数字系统、数据的机器级表示、汇编级机器组成、存储系统组织和体系结构、接口和通信、功能性组织、多道处理及候选架构、性能提升等8个部分。
2.2.1 AR/1数字逻辑和数字系统
①计算机体系结构的概述及历史( AR)。
②组合逻辑和时序逻辑/作为基本组合+时序逻辑构造模块的现场可编程门阵列( DL,CP)。
③多重表述/层的解释(硬件只是另一个层)( DL,CP)。
④处理硬件和结构描述的计算机辅助设计工具( DL)。
⑤寄存器传输符号表示/硬件描述语言( Verilog/vHDL)(DL, CP).
⑥物理约束(门延时,扇入,扇出,能量/功耗)( DL)。
2,2.2 AR/2数据的机器级表示
①比特,字节和字( CP,DL)。
②数值数据表示和基数( CP,DL)。
③固定和浮点系统( CP)。
④有符号数和二进制补码表示( CP,DL)。
⑤非数值数据表示(特征码,图形数据)( CP,DL)。
⑥记录和数组表示( CP)。
2.2.3 AR/3汇编级机器组成
①冯·诺依曼机器的基本组成( AR,CP)。
②控制单元;取指,译码,执行( CP,AR)。
③指令集和类型(数据操作,控制器,读/写)(CP,AR强调RISC)。
④汇编/机器语言编程( CP)。
⑤指令格式(CP,AR强调RISC)。
⑥寻址方式( CP)。
⑦子程序调用和返回机构( CP)。
⑧读/写和中断(CP,硬件机制,OS中断处理及应用)。
⑨堆vs静态vs栈vs代码段(CP)。
⑩共享存储多处理器/多核组织(CP介绍几种形态,OS应用,AR重点)。
11介绍SIMD和MIMD以及Flynn分类法( AR)。
2.2.4 AR/4存储系统组织和体系结构
①存储系统和其技术( CP)。
②存储层次:时间和空间局部性的重要性( CP)。
③主存储器的组织和操作( CP)。
④延迟、时钟周期、带宽和交叉存取( CP)。
⑤缓存(地址映射,块大小,替换和存储规则)( CP)。
⑥多处理器缓存一致性/使用存储系统来进行核间同步/原子内存操作( CP)。
⑦虚拟内存(页表,TLB)(CP)。
⑧错误处理和可靠性(OS)。
⑨错误编码,数据压缩,数据完整性(???)。
2.2.5 AR/5接口和通信
①I/O基础:握手,缓冲,轮训,中断驱动的I/O( OS)。
②中断结构:向量化和优先化,中断知识( CP,OS)。
③外部存储,物理组织和驱动( CP)。
④总线:总线协议,仲裁,直接内存访问( DMA)(CP)。
⑤网络入门:通信网络作为远程访问的另一层次( CP)。
⑥多媒体支持( CP)。
⑦RAID( OS)。
2.2.6 AR/6功能性组织
①简单数据通路的实现,包括指令流水线,冒险检测及消除(DL单周期,CP)。
②控制单元:硬接线和微程序实现(DL单周期,CP多周期)。
③流水线介绍(CP偏软件实现,AR偏硬件实现)。
④介绍指令级并行( ILP)(AR)。
2.2.7 AR/7多道处理及候选架构
①功耗定理( AR)。
②SIMD和MIMD指令集和结构的例子( AR)。
③互联网络(超立方体,洗牌交换,mesh,crossbar)(AR)。
④共享存储系统和存储一致性( AR)。
⑤多处理器cache 一致性(AR)。
2.2.8 AR/8性能提升
①超标量结构( AR)。
②分支预测,前瞻执行,乱序执行( AR)。
③预取( AR)。
④向量处理器和GPUs( AR)。
⑤硬件支持多线程( AR)。
⑥可扩展性( AR)。
⑦其他结构,诸如VLIW/EPIC,以及加速器和其他类型的专门用途( AR)。
⑧处理器( AR)。
2.3 0S/Operating Systems(操作系统)
体系结构组成域分为操作系统概述、操作系统原理、并发、调度及分派、内存管理、安全与保护、虚拟机、设备管理、文件系统、实时和嵌入式系统、容错、系统性能评估等12个部分。
2.3.1 0S/1操作系统概述
①操作系统的作用和目的(OS)。
②典型操作系统的功能( OS)。
③支持客户/服务器模型和手持设备的机制( OS)。
④设计问题:效率、鲁棒性、灵活性、可移植性、安全性、兼容性。
⑤安全性、联网、多媒体、窗口系统与操作系统的关系(OS)。
2.3.2 0S/2操作系统原理
①操作系统体系结构(单体、分层、模块、微内核)( OS)。
②抽象,进程,资源(OS)。
③应用程序接口API的概念(OS,CP)。
④软硬件技术的发展和应用需求(OS)。
⑤设备组织( OS,CP)。
⑥中断:方法及实现(OS)。
⑦用户态/内核态及操作系统保护,转入内核态方式( OS)。
2.3.3 0S/3并发
①进程的概念,状态及状态变迁图(OS)。
②结构(就绪队列,进程控制块等)(OS)。
③调度及上下文切换(OS)。
④中断的作用(OS)。
⑤对内核数据结构的原子性访问( OS)。
⑥实现同步原语(OS)。
⑦多处理器相关问题(自旋锁,重入)( OS,AR)。
2.3.4 0S/4调度及分派
①抢占与非抢占式调度( OS)。
②调度器和调度策略( OS)。
③进程及线程(OS)。
④时限及实施调度问题( OS)。
2.3.5 0S/5内存管理
①物理内存和内存管理硬件回顾( OS)。
②工作集和抖动(OS)。
③缓存( CP)。
2.3.6 0S/6安全与保护
①系统安全概论(OS)。
②机制与策略分离( OS)。
③安全方法和措施( OS)。
④保护,访问控制,认证( OS)。
⑤备份与回复( OS)。
2.3.7 0S/7虚拟机
①虚拟机的类型(包括硬件、软件、操作系统、服务器、服务、网络)(OS)。
②分页及虚拟内存( CP)。
③虚拟文件系统(OS)。
④虚拟机管理程序(OS)。
⑤可移植虚拟化,仿真和隔离(OS,强调 Container,Docker)。
⑥虚拟化的代价( OS)。
2.3.8 0S/8设备管理
①串行和并行设备的特性(OS)。
②抽象设备的差异性(OS)。
③缓存策略(OS)。
④DMA( OS)。
⑤失效恢复(OS)。
2.3.9 0S/9文件系统
①文件:数据,元数据,操作,组成,缓冲,顺序文件与非顺序文件(OS)。
②目录:内容及结构(OS)。
③文件系统:分区、加载/卸载、虚拟文件系统(OS)。
④标准实现技术(OS)。
⑤内存映像文件( OS)。
⑥特殊文件系统( OS)。
⑦文件的命名,搜索,访问,备份( OS)。
⑧日志文件结构(OS)。
2.3.10 0S/10实时和嵌入式系统
①实时进程及调度( OS)。
②实时环境中的内存/磁盘管理需求(OS)。
③失效,风险和恢复( OS)。
④实时系统的特有问题(OS)。
2.3.11 0S/11容错
①基本概念:系统的可靠性和可用性( OS)。
②时间和空间冗余方法(OS)。
③冗余的实现方法(OS)。
④操作系统通过检测、恢复、重启实现冗余的案例分析,包括用于操作系统自身服务的技术(OS)。
2.3.12 0S/12系统性能评估
①系统评估的必要性( OS)。
②评估的要素( OS)。
③系统性能策略,如高速缓存,分页,调度,内存管理,安全等( OS)。
④评估模型:确定型模型,分析性模型,仿真或特殊方法(OS)。
⑤如何收集评估数据(分析和跟踪机制)(OS)。
2.4 知识要点分配中的注意事项
在上述知识要点分配方案中,有几点值得注意。
(1)分配方案受到了课程先后次序的影响。例如,存储管理内容(AR/4,SF/7-b,SF/7-e,SF/8-b)均交由CP讲授,而OS和AR仅分别侧重于软件算法和性能评估,这是因为CP被安排在两门课之前。类似的情况还有状态机SF/3一e交由DL讲授。
(2)系统能力的培养应关注学生的能力指标( Learning Outcomes)。当相关知识点(如SF/l-a)被多门课程(如CP,DL,AR)分别涉及时,排在第一位的课程( CP)担负着主要职责,保证能力指标的达成,而后面各课程则根据其自我要求涉猎或补充必要的内容。
(3)各门课程在其课程大纲中,务必合理安排跨越多个知识域中的相关知识要点(如AR/3_h、AR/5-a,b、OS/2-f、OS/3-d)和对应的能力指标,负责它们在不同程度和不同场合的衔接。
(4) 一些要点(如SF/lO-c、SF/lO-e,f、AR/4-i)我们尚未有深刻的理解或成熟的经验,因此留作讨论,记以符号???。
3 结语
复旦大学计算机系统能力课程群建设正在逐步推进:①有必要调整各门课程的知识点分布,采取系统科学的方法,使学生奠定系统理论基础,不仅能建立真实系统的模型,预测系统行为,而且通过强化系统实践,培养学生有效地构造正确系统的能力;②培养学生如何从系统层面思考,重点关注系统的设计过程、上下文环境及环境与系统的交互;③围绕知识点,在各门课上透彻分析原理,明确基本原则、架构、协议,强化跨课程的系统性的实践教学培养过程和内容。
经验表明,合理划分相关知识域中的各知识要点,注重课程间关联知识点的侧重和衔接非常重要。从目前的教学情况来看,在内容上切实实现了课程间最少重复、各门课不留漏洞的既定目标。
在今后的工作中,我们将在强化内涵和拓展外延两个方向进一步完善系统观教学实践,逐步贴近教育部计算机专业教学指导分委员会《以系统发展观为主线的计算机专业课程体系改革的思路》,实现“学生的知识体系得以更新与扩展,其系统设计创新能力同步得到强化与提升”的目的。
教育期刊网 http://www.jyqkw.com
参考文献:
[1]王志英,周兴社,袁春风.计算机专业学生系统能力培养和系统课程体系设置研究[J].计算机教育,2013(9): 1-6.
[2] JosephS.计算机科学的愿景:系统发展观[J].中国计算机学会通讯,2012,8(3): 11-18.
[3] The joint task force on computi_ng curricula. Computer Science curricula 2013: Curriculum guidelines for undergraduate degreeprograms in Computer Science[EB/OL].(2013.12.20)[2015-06-30].http://www.acm.org/education/CS2013.final-report.pdf
[4]袁春风,王帅,大学计算机专业教育应重视“系统观”培养[J],中国大学教学,2013(12): 41-46.
(编辑:孙怡铭)