




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京大学在系统能力培养方面的
思考与改革举措
南京大学计算机系
袁春风
email:cfyuan@
2016.05主要内容对系统能力培养问题的认识过程从“计算机组成原理”课程的教学开始(做一点)到“偏硬件类课程群”建设(做一些)最终建立“分流培养体系下的系统能力培养模式”
(全面做,但是还在路上)南京大学的初步探索与改革2013年前的改革探索:局部课程内容调整2013年后的改革思路:课程体系全面调整计算机系统基础课程情况介绍从企业招聘题目开始说起阿里笔试中有这样一道题目:在一台主流配置的PC上,调用f(35)所需要的时间大概是(
)。intf(intx){ints=0;while(x++>0)s+=f(x);returnmax(s,1);}A.几毫秒
B.几秒
C.几分钟
D.几小时显然,考的不仅仅是程序设计!学生的答案PPT计算时间PPT从企业招聘题目开始说起大众点评
笔试中的一道题(也是全国考研题):计算机存储器按字节编址,采用小端方式存放数据。假定int型和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下:
struct{
int
a;
char
b;
short
c;}
record;record.a=273;若record首地址为0xC008,则地址0xC008中内容及record.c的地址是0x00、0xC00D
B.0x11、0xC00E
C.0x11、0xC00D
D.0x00、0xC00E显然,考的也不仅仅是程序设计!中兴笔试题:写程序判断当前CPU是大端CPU还是小端CPU,并作简要说明。从企业招聘题目开始说起有学生告诉我,他的同学写了一下程序,判断出他的PC是大端!uniontest{inta;charb;}main(){test.a=0xff;if(test.b==0xff)printf(“Littleendian);elseprintf(“Bigendian);}该同学的程序错在哪里呢?显然,考的也不仅仅是程序设计!中兴笔试题:写程序判断当前CPU是大端CPU还是小端CPU,并作简要说明。FF000000000000FF大地址小地址小端大端理解程序的行为须有“系统思维”程序执行结果不仅取决于算法、程序的编写(编程语言)
而且取决于语言处理系统操作系统ISA微体系结构计算机系统抽象层的转换
这一点认识是经过了20多年的不断摸索才明白的!对系统能力培养问题的认识过程1989-2002年讲授“组原”课程,用过若干本教材,每个内容作为孤立的点讲授,不知道该课程内容有何用,学生不喜欢(老师发了一本“天书”,学生原话),很苦恼2003年赴英UMIT(先合并到曼大)交流,发现情况一样(看来这门课只能这么教)期间,远程登录到UCB的CS61C,发现数据的表示和运算与高级语言的变量有关,Cache和程序中的数据访问有关(看来这门课还有些用处)2004-2007年采用P&H《ComputerOrganizationandDesign:TheHardware/SoftwareInterface》和传统教材(另一个班)同时上,考试统一为传统教材,效果很差2007-2008年采用P&H《ComputerOrganizationandDesign:TheHardware/SoftwareInterface》,同时改革实验方式和内容:FPGA+CPU设计,效果很好改革后第一年(06级学生)就完成了MIPS32五级流水线CPU规划自编一套教材:组原、数逻实验教材、组原实验教材等SKIP课程实验大作业代表作品06级学生设计的MIPS32顶层结构图07级学生在此基础上又加入了PS2接口和VGA接口统一编址方式课程实验大作业代表作品06级学生设计的MIPS32处理器(除浮点和除法指令外的所有指令)精确中断、软件查询方式;延迟槽为1BACK对系统能力培养问题的认识过程2009-2012年采用自编教材《计算机组成与系统结构》,FPGA+CPU设计2009年立项:计算机系统结构课程群建设项目
数字逻辑电路、计算机组成与系统结构、微机原理与接口技术、嵌入式系统等成立课程群建设小组,
经费35万,用于培训老师和研究生助教费编译原理实验结合MIPS指令系统增加了后端设计,并部分课程局部改革不仅仅在偏硬件课程群,而是认识到需要软硬件融合、分流培养YalePatt以及教材《IntroductiontoComputingSystemsfromBitsandGatestoCandBeyond》RandalBryant以及教材《ComputerSystems:AProgrammer’sPerspective》美国一流大学的课程体系CS2013和CE2016规范的指导2013年开始(分方向培养,强化系统基础)结论:强化系统(软硬件融合)、分流培养对系统能力培养问题的认识过程YalePatt在密西根大学时教组原课时,也按传统的内容,就硬件讲硬件,发现学生不喜欢深入调研后认识到:要改变教学内容,要把硬件和软件结合起来讲解,使学生具有计算机系统整体概念于是,编写并出版了:《IntroductiontoComputingSystems
fromBitsandGatestoCandBeyond》
描述了一个“小而完整”的系统书中描述了计算机系统各个抽象层他在UTAustin一直开设该课程(报告)
“Javaisnothing!”
算法功能部件/寄存器传送级
应用问题指令集体系结构(ISA)操作系统/虚拟机微体系结构器件编程(语言处理系统)电路BACK对系统能力培养问题的认识过程YalePatt:曾任美国密歇根大学计算机体系结构实验室主任多年,鉴于他在计算机发展历程中的贡献及对计算机科学教育的深刻理解和倾心投入,被IEEESpectrum评为美国计算机界的卓越泰斗(与《计算机程序设计艺术》的作者,图灵奖获得者DonaldKnuth齐名,全球只有他们俩人享此殊荣),在美国乃至世界计算机体系结构领域有着广泛的影响力。多年来,从计算机科学和计算机工程院系的教学实践中,我们认识到传统的计算机课程体系中缺少帮助本科生建立软件与硬件联系的课程,使得他们对计算机系统中一些非常重要的基本概念缺乏深入理解。例如,学生们无法清楚地解释指针变量的硬件实现;而栈、递归概念更像是在“变魔术”,难以理解。BACK对系统能力培养问题的认识过程(来自CMUSCS的R.E.Bryant院长)深有感触CarnegieMellonRolewithinCS/ECECurriculumCS410OperatingSystemsCS411CompilersProcessesMem.MgmtCS441NetworksNetworkProtocolsECE447ArchitectureECE349EmbeddedSystemsCS412OSPracticumCS122ImperativeProgrammingCS415DatabasesDataReps.MemoryModelECE340DigitalComputationMachineCodeArithmeticECE348EmbeddedSystemEng.FoundationofComputerSystems
Underlyingprinciplesforhardware,
software,andnetworkingExecutionModelMemorySystem213ECE545/549Capstone来源:CMUCS213对系统能力培养问题的认识过程BACK对系统能力培养问题的认识过程CS2013(计算机科学)对计算机组成与系统结构的描述:[16corehours]计算机专业人员不应该将计算机看成是一个执行程序的不可思议的黑箱子。基于SF(系统基础)的AR的目标是对支撑各种计算的硬件环境以及与高层软件之间的接口的深刻理解。学生应该获得对计算机系统的功能部件及其特征、性能、接口,特别是对为提高性能在现在或将来所采用的各种并行技术的深刻理解。为了使学生能够开发出更高性能的程序,学生应该能从程序员的角度理解并行和延迟,因而学生必须理解计算机系统结构。在选择所使用的一个系统时,学生应该能够理解如何对各种部件的特性(如CPU时钟速度、CPI、存储器容量、平均访存时间等)进行权衡。加入了分布和并行计算、信息安全、系统基础、基于平台的编程系统基础将跨系统地综合介绍缓存、延时、并行等核心概念,涉及操作系统、体系结构、网络等领域对系统能力培养问题的认识过程CE2016(计算机工程)对计算机组成与系统结构的描述:[60corehours]第67页Theknowledgeunitsinthisareacollectivelyencompassthefollowing:1.Historyofcomputerarchitecture,organization,anditsroleincomputerengineering.2.Standardsanddesigntoolsusedincomputerarchitectureandorganization.3.Instructionsetarchitectures,includingmachineandassemblylevelrepresentationsandassemblylanguageprogramming.4.Computerperformancemeasurement,includingperformancemetricsandbenchmarksandtheirstrengthsandweaknesses.5.Numberrepresentationandarithmeticalgorithmsformanipulatingnumbersinvariousnumbersystems.6.Computerprocessororganizationandtradeoffs,includingdatapath,controlunit,andperformanceenhancements.7.Memorytechnologiesandmemorysystemsdesign,includingmainmemory,cachememory,andvirtualmemory.8.Input/outputsystemtechnologies,systeminterfaces,programmingmethods,andperformanceissues.9.Multi/many-corearchitectures,includinginterconnectionandcontrolstrategies,programmingtechniques,andperformance.10.Distributedsystemarchitectures,levelsofparallelism,anddistributedalgorithmsforvariousarchitectures.BACK主要参考的美国名校相关课程网站美国UCBerkeley大学“MachineStructure”2012年课程网站:/~cs61c/sp12/美国UCBerkeley大学“ComponentsandDesignTechniquesforDigitalSystem”2012年课程网站:/~cs150/sp12/美国UCBerkeley大学“ComputerArchitectureandEngineering”2012课程网站:/~cs152/sp12/美国Stanford大学“ComputerOrganizationandSystems”2012年课程网站:/pg/courses/281000/cs107-spring-2012美国Stanford大学“DigitalSystemsII”课程网站:/class/ee108b/美国Stanford大学“DigitalSystemsII”课程网站:/class/cs110/美国CarnegieMellon大学“IntroductiontoComputerArchitecture”课程网站:/~213/美国CarnegieMellon大学“IntroductiontoComputerArchitecture”课程网站:/~ece447/美国Univ.IllinoisatUrbana-Champaign“ComputerArchitectureII”课程网站:/class/sp11/cs232/美国麻省理工学院(MIT)“ComputationStructures”课程网站:http://6004.MIT专业设置和相关课程简介EECS核心课程是6.004UCBerkeley专业方向设置ECE:ElectricalandComputerEngineeringElectronics(OptionI)Communications,NetworksandSystems(OptionII)ComputerSystems(OptionIII)CSE:ComputerScienceandEngineeringComputerScience(OptionIV)Others:flexibleprogramGeneralCourseofStudy(OptionV)EECSHonorsDegreeProgramDoubleMajorsProgramsEECS/MaterialsScienceandEngineeringEECS/NuclearEngineeringBachelorofScience(B.S.)学位提供一个major(EECS),分两个program(ECE和CSE),此外,还有HonorsProgram和DoubleMajors。每个Program又可选择不同的option,分配相应的advisor。UC-Berkeley相关课程设置EECS152IntroductiontoMicroelectronicCircuits
ComponentsandDesignTechniquesforDigitalSystem
MachineStructures
ComputerArchitectureandEngineering
DataStructures
StructureandInterpretationofComputerPrograms核心课程是CS61CStanford专业方向设置Stanford相关课程介绍
计算机工程方向必须选修数字系统1(数字逻辑电路)和数字系统2(计算机组成和系统结构)Stanford相关课程介绍SystemTrack
计算机系统方向必须选修操作系统和编译或数字系统2(计算机组成和系统结构)Stanford相关课程介绍所有专业核心课程除程序设计、数据结构、算法分析外,就是CS107计算机组成与系统(从程序员角度看计算机系统)和CS110计算机系统原理(相当于CS2013的SF)CMUSCS的相关课程介绍一个CS专业,提供5个可选方向专业核心课如下:SCS所有专业核心课程主要是程序设计、数据结构、算法分析与15-213计算机系统概论(从程序员角度看计算机系统)CarnegieMellonRolewithinCS/ECECurriculumCS410OperatingSystemsCS411CompilersProcessesMem.MgmtCS441NetworksNetworkProtocolsECE447ArchitectureECE349EmbeddedSystemsCS412OSPracticumCS122ImperativeProgrammingCS415DatabasesDataReps.MemoryModelECE340DigitalComputationMachineCodeArithmeticECE348EmbeddedSystemEng.FoundationofComputerSystems
Underlyingprinciplesforhardware,
software,andnetworkingExecutionModelMemorySystem213ECE545/549CapstoneCMUSCS的相关课程介绍计算机系统专业涉及到计算机实现方面的内容,包括数字逻辑电路、组成与体系结构、OS和编译、嵌入式系统设计等。ECE(18)和SCS(15)各自开设一部分课程。美国一流大学相关必修课情况偏硬BottomUp以汇编为中心强调底层设计强调硬件与OS的接口TOPDOWN以不同粒度的并行为线索涉及各个层次实验跨度大MIXED强调从程序员角度看到的底层内容重点为C语言的底层支持、程序优化、存储器分配管理,而不介绍底层数据通路等的具体实现MIT6.004USB61CStanfordCS107CMU15-213偏软总结:美国一流大学相关课程情况都是EE和CS分别开课,互选共享EECS:MIT、UCBerkeleyEE(ECE)/CS:Stanford、CMU都采用分流培养模式MIT:EE、EECS、CS三种学位(不同学位还分若干方向)UCB:ECE(E、CNS、CSys)、CSE(CSci)、Mix、HonorStanford:AI、BioCo、CE、Graph、HCI、Info、CSys、Theory、Unspecialized、IndividuallyDesignedCMUSCS:AI、CognitiveModeling、CSys、Graph、Theory偏硬件的方向有:EE、ECE、CE、Csys都有一门所有专业必修的介绍计算机系统的入门课(相当于组原?)MIT6.004、UCBCS61C、StanfordCS107、CMUCS213教材有P&P、P&H、B&O,配合K&R强调C语言数组和指针、过程调用的底层实现、堆的分配、中断、异常、…计算机硬件设计的课程(相当于组原?)都在EE开设,偏硬件方向学生必选,Csys以上方向可以不选(教材有P&H、H&H)关于计算机系统更高级的内容在EECS或Csys及其以上方向开设例如,MIT6.033、StanfordCS110(相当于CS2013的SF)
教材:PrinciplesofComputerSystemDesign:AnIntroductionbyJeromeH.SaltzerandM.FransKaashoek(MIT)BACK中美大学相关课程教学情况对比1.U:EE和CS共享
C:EE和CS各自为阵2.U:先建立系统概念后分流培养
C:没有有机贯穿系统的前导课程,没有体现分流U:课程内容纵向关联
C:课程内容横切、关联弱U:先系统概念后细节实现
C:先数字电路后组成原理5.U:4-5门/学期,学得深入
C:7-8门/学期,精力不足I/OsystemProcessorCompilerOperatingSystemApplication(ex:browser)DigitalDesignCircuitDesignInstructionSetArchitectureDatapath&Control
transistorsMemoryAssembler国内专业教学需要在计算机系统能力培养方面进行改进!2013年前相关课程设置Intro.toComputerSystem(ICS)HardwareSoftwareApplicationTheory1st2nd3rd4th5th6th7th8thProgrammingFunda.(C/C++)DigitalDesignAdvancedProgrammingDataStructureDSPComputerOrg.&Arch.DatecommunicationOSCompilerJavaImageGraphicsAIParallelcomputingCom.NetworkingDatabaseEmbeddingSys.Networkingprog.……………………LinuxHadoop&MapReduceIA32&I/O2013年前采用的改进模式AlgorithmGates/Register-Transfer
Level
Application(Problem)Instruction
Set
Architecture(ISA)OperatingSystem/VirtualMachinesMicroArchitectureDevicesProgramming(Language)CircuitsAbstractionLayersofCSUser’sView(ICS)generalpictureofCSProgrammer’sView(PF&AP)HLL&PG.LogicDesigner’sView(DD)BooleanLogic&ComponentsFromTop&BottomtoMiddleFromOutsidetoInsideArchitect’sView(CO&CA)ISA及其与以下内容的关系OS\Compiler\ProgrammingCPUDesign、Performance(OS、Compiler)通过“计算机组成与结构”将系统各个层次的概念联系起来!学生实验成果演示DE2-70实验板(DE2实验板)FPGA芯片处理器+CP0(五级流水线)超级终端总线存储器芯片UART总线接口部件VGA图形输出PS-2USBMIPS:俄罗斯方块游戏(加载在SSRAM芯片)ARM:跳球游戏(加载在SDRAM芯片)程序包括:自检、初始化后在LCD上显示一串字符;引导加载程序;转游戏程序执行;不同按键以不同“中断”类型区分,由相应中断服务程序处理。游戏程序用C实现,gcc编译后,用程序将elf转换为二进制文件。OperatingSystemLabs2012:labsbasedonNanosOperatingSystemLabsOperatingSystemLabs编译原理实验BACK2013年前课程体系存在的问题AlgorithmGates/Register-Transfer
Level
Application(Problem)Instruction
Set
Architecture(ISA)OperatingSystem/VirtualMachinesMicroArchitectureDevicesProgramming(Language)CircuitsAbstractionLayersofCSUser’sView(ICS)generalpictureofCSProgrammer’sView(PF&AP)HLL&PG.LogicDesigner’sView(DD)BooleanLogic&ComponentsArchitect’sView(CO&CA)ISA、relationshipwithOS\Compiler\ProgrammingCPUDesign、Performance(OS、Compiler)问题:ICS内容太散,系统性不强;CO&CA内容多,前导课基础不够,学生难掌握;OS实验量大而深入,IA-32基础不够;编译技术(目标代码:MIPS,用SPIM验证),但有关链接器的部分没有,而这对理解VM、机器代码的生成等概念重要;未体现分流培养2013版新教学计划框架分流培养:5个方向系统能力培养的两个重要建设点与系统能力培养关联密切的课程先系统概述后具体实现新课:计算机系统基础、计算机系统综合实验改变较大的课程:计算机组成与设计编译原理调整后相关课程设置(CSys方向)HardwareSoftwareApplicationTheory1st2nd3rd4th5th6th7th8thProgrammingFunda.(C/C++)DigitalDesignProgrammingFunda.LabDataStructure计算机系统基础OSCompilerJavaImageGraphicsAIParallelcomputingCom.NetworkingDatabaseEmbeddingSys.Networkingprog.……………………LinuxComputerArch.Hadoop&MapReduceGPU&CUDAIA32&I/O计算机组成与设计“计算机系统综合实验”CSlab课程:对硬件、汇编器、编译器、OS进行综合设计CS-lab算法功能部件/寄存器传送级
应用问题指令集体系结构(ISA)操作系统/虚拟机微体系结构器件编程(语言处理系统)电路“计算机系统基础”课程内容概要使学生清楚理解:
计算机是如何生成和运行可执行文件的!重点在高级语言以下各抽象层C语言程序设计层数据的机器级表示、运算语句和过程调用的机器级表示指令集体系结构(ISA)和汇编层指令系统、机器代码、汇编语言微体系结构及硬件层CPU的通用结构层次结构存储系统操作系统、编译和链接的部分内容“问题求解”解决应用→算法(数据结构)→编程层课程内容概要/*sum.c*/intsum(inta[],unsignedlen){ int i,sum=0; for (i=0;i<=len–1;i++) sum+=a[i]; returnsum;}/*main.c*/intmain(){ int a[1]={100}; ints;s=sum(a,0);printf(“%d”,s);}数据的表示数据的运算各类语句的转换与表示(指令)各类复杂数据类型的转换表示过程(函数)调用的转换表示链接(linker)和加载程序执行(存储器访问)异常和中断处理输入输出(I/O)第二章:数据的机器级表示和处理数据的表示数据的运算基本运算及其电路
-2147483648<2147483647结果为false(与事实不符)C99标准中则是true
inti=-2147483648;
i<2147483647
结果为trueSum加法器nnnAZFCinCout4Bn01MUXSubBOF整数加/减运算部件SFCFB'A:100∙∙∙0B:011∙∙∙1Sub:1做减法进行比较ZF=0CF=0SF=0,OF=1无符号整数带符号整数第三章:程序的转换及机器级表示intsum(inta[],unsignedlen){inti,sum=0;for(i=0;i<=len–1;i++) sum+=a[i];returnsum;}sum:….L3:…movl-4(%ebp),%eaxmovl12(%ebp),%edxsubl$1,%edxcmpl%edx,%eaxjbe .L3…IA-32指令系统、x86-64指令系统简介过程调用、循环和选择结构的机器级表示数组、结构、联合类型的数据存储和访问缓冲区溢出漏洞的产生和防止IA-32中P调用caller,caller调用addintadd(intx,inty){ returnx+y;}intcaller(){ int temp1=125; int temp2=80; int sum;sum=add(temp1,temp2); returnsum}栈和栈帧的概念变量的作用域嵌套和递归的本质第四章:程序的链接目标文件格式符号表及符号解析重定位过程可执行文件的加载可执行文件的加载第五章:程序的执行指令执行过程CPU的基本结构数据通路基本原理流水线基本原理第六章:层次结构存储系统虚拟地址空间第六章:层次结构存储系统存储器分层结构主存储器组织Cache、虚拟存储器、TLB*IA-32/Linux中的地址转换:分段(GDT/LDT/IDT)+分页CPUTLBCacheMainMemoryVAPAmiss3hit3页表hit1miss1miss2Pagefaulthit2“movl(%ebx,%eax,4),%esi”操作数访存过程
第七章:异常控制流intsum(inta[],unsignedlen){ int i,sum=0; for (i=0;i<=len–1;i++)
sum+=a[i]; returnsum;}当参数len为0时,返回值应该是0,但是在机器上执行时,却发生访存异常。但当len为int型时则正常Why?a[0]用户进程OS页故障处理程序页故障访问越权
发SIGSEGV信号给用户进程
……movl(%ebx,%eax,4)………a[i]:(%ebx,%eax,4)LA=0x0040xxxx&a[0]
→%ebxi→
%eax进程的逻辑控制流进程的上下文切换进程的私有地址空间程序的加载和运行异常和中断的响应过程IA-32/Linux的异常/中断处理IA-32/Linux的系统调用第八章:I/O操作的实现用户空间I/O软件I/O库函数、文件的基本概念、系统级I/O函数、系统调用(自陷)内核空间I/O软件与设备无关软件、设备驱动程序、中断服务程序I/O硬件与I/O软件的接口:I/O设备及其控制器、I/O端口、I/O控制方式stdout和stderr的差别猜一下在Linux中以下程序输出什么?#include<stdio.h>
int
main()
{
fprintf(stdout,
“hello");
fprintf(stderr,
“world!");
return
0;
}
输出结果为:world!hello#include<stdio.h>
int
main()
{
fprintf(stdout,
“hello");
fprintf(stderr,
“world!\n");
return
0;
}
输出结果为:world!hello#include<stdio.h>
int
main()
{
fprintf(stdout,
“hello\n");
fprintf(stderr,
“world!");
return
0;
}
输出结果为:helloworld!stdout和stderr都用于标准输出,但是,stderr为_WRITE|_UNBUFstdout为_WRITE有缓冲:遇到换行符\n或缓冲满(BUFSIZE=1024)才写文件!举例:文件复制功能的实现/*方式一:getc/putc版本*/voidfilecopy(FILE*infp,FILE*outfp){ intc; while((c=getc(infp))!=EOF) putc(c,outfp);}/*方式二:read/write版本*/voidfilecopy(int*infp,int*outfp){ charc; while(read(infp,&c,1)!=0) write(outfp,&c,1);}哪种方式更好?方式一更好!Why?因其系统调用次数少!对于方式二,若文件长度为n,则需执行2n次系统调用;对于方式一,若文件长度为n,则执行系统调用的次数约为n/512。还有其他的实现方式吗?使用fread()和fwrite()使用fgetc()和fputc()使用WindowsAPI函数CopyFile()
为何要尽量减少系统调用次数?系统调用的开销有多大?实现一个功能有多种方式,但开销和性能不同,需要权衡!相当大!SKIP回顾:软中断指令int$0x80的执行过程
它是陷阱类(编程异常)事件,因此它与异常响应过程一样。将IDTi(i=128)中段选择符(0x60)所指GDT中的内核代码段描述符取出,其DPL=0,此时CPL=3(因为int$0x80指令在用户进程中执行),因而CPL>DPL且IDTi的DPL=CPL,故未发生13号异常。读TR寄存器,以访问TSS,从TSS中将内核栈的段寄存器内容和栈指针装入SS和ESP;依次将执行完指令int$0x80时的SS、ESP、EFLAGS、CS、EIP的内容(即断点和程序状态)保存到内核栈中,即当前SS∶ESP所指之处;将IDTi(i=128)中段选择符(0x60)装入CS,偏移地址装入EIP。这里,CS:EIP即是系统调用处理程序system_call(所有系统调用的入口程序)第一条指令的逻辑地址。执行int$0x80需一连串的一致性和安全性检查,因而速度较慢。从PentiumII开始,Intel引入了指令sysenter和sysexit,分别用于从用户态到内核态、从用户态到内核态的快速切换。BACK课程开设情况教学对象大二(上)、全体学生前导课程程序设计基础、数字逻辑电路学时数18周x5学时/周教学形式大班(3学时/周),小班(2学时/周,50人左右)教学计划完成情况除第5章(程序的执行)以外的所有内容南大课程网站/ics/index.php/Ics:Main_page
实验内容及实施情况实验类型Homework小规模编程练习、运行结果分析Lab
数据表示(位操作)、二进制炸弹、缓冲区溢出、逆向工程Project一个小型项目(ProgrammingAssignment,PA)实现功能完备但简化的x86模拟器NEMU及一个简易调试器
涵盖教材中约95%的内容(动态链接在Lab中)
觉得自己上课听懂了?做做PA就知道了!http://nju-ics.gitbooks.io/ics2015-programming-assignment/content/实验平台与工具IA-32+GNU/Linux+gcc+C其它工具:gdb,make,gitProject(PA)的主要内容PA实验内容及实施情况监控程序/小内核+x86模拟器(保护模式)TimerI8259PICSerialportIDEMemoryEXUIFURegisterFileControllerCachemainCPUmemorymanagementSimplifieddebuggerIDUMMUKeyboardVGAdeviceCommondataflowInterruptPortI/OMemorymappedI/ODebuginformationPA1PA2PA3PA4acomputersystemProject(PA)的主要内容简易调试器(PA1)单步执行,打印寄存器/内存,断点,表达式求值,监视点CPU核心、简易调试器高级功能(PA2)支持x86保护模式下大部分常用指令(不支持x87指令)符号表,调用函数链、ELF格式和加载存储管理(PA3)MMU:分段(GDT/LDT),分页,TLB(不支持保护机制)两级联合cache(L1、L2)DRAM(包含rowbuffer和burst的物理特性)中断/异常/I/O(PA4)IA-32中断机制(IDT)(不支持保护机制)时钟,键盘,VGA,串口,IDE,i8259PIC的简单模拟独立编址I/O,内存映射I/O(VGA)文件操作、系统调用(write)、键盘中断模拟器实现的功能几乎涵盖“计算机系统基础”教材中的所有内容例如,定点加减指令需考虑所有情况,并生成各标志,因而需理解教材中关于整数加减运算公式的含义。PA4会结合kernel进行一个单核单任务微型操作系统内核ELF32加载器1个设备驱动(IDE)分页存储管理6个系统调用open,read,write,lseek,close,brk简易文件系统文件数量和文件大小皆固定,没有目录通过软(kernel)和硬(NEMU)的结合来理解计算机系统Project(PA)的主要内容简易调试器(PA1)学生提交的实验结果CPU核心(PA2)学生提交的实验结果存储管理(PA3)学生提交的实验结果中断/异常/I/O(PA4)执行hello程序,显示“Helloworld!”学生提交的实验结果中断/异常/I/O(PA4)移植打字小游戏学生提交的实验结果中断/异常/I/O(PA4)移植仙剑奇侠传学生提交的实验结果PA实验(第一版)规模
预计耗时/小时 代码量/行PA0–开发环境配置 20 无PA1–简易调试器 50 500+PA2–指令系统 60 4000+PA3–存储管理 50 500+PA4–中断与I/O 30 300+PA1实验的反馈课程教学的反馈第一届PA成绩学生实际所用时间可能比预计耗时还要多得多。困难来自:对Linux+GCC+gdb编程环境不熟悉大规模程序设计和调试等能力不足二(上)课业太重,没时间消化课程内容ICS课程对PA实验的指导不够加基础框架达7000多行体会、困惑和反思比较有效的做法理论结合实例前后内容关联多用图解释概念多用汇编讲高级语言程序小班化教学,多互动先问问题,再给出答案并讨论多进行随堂小测验引导学生查资料、多动手不要学生死记硬背,强调理解开卷考试困惑学生受应试教育毒害之深,远超想象学生的两级分化,越来越严重反思:一门课解决不了所有问题,需要相关课程一起协作用大量例子,不断让学生体会高级语言、编译器、操作系统、ISA以及微架构之间的关系。“ICS(计算机系统课程)为目前来看最不水的专业课,没有之一”“真的学到了非常多的东西,比如Linux系统/Vim/Git的基本使用方法、Makefile文件的编写、基本的汇编语言、计算机原理、基本的操作系统知识,以及如何RTFM和RTFSC等等等等。程序设计的本领也得到了充足的锻炼。”
PA实验(第二版)规模第二届PA成绩学生反馈1学生反馈2第一届(2013级)平均分:23.07/40完成PA3的仅有29人第二届(不包括PA4)平均分:27.60/34.6完成PA3的有96人在一(下)增加了“程序设计实验”课程(2013级学生没开设)用时反馈开设课程建议(1)对于软件工程等不需要深入掌握底层硬件细节的专业开设一学年“计算机系统基础”课程第一学期:附录A和第1~4章第二学期:第5~8章每学期的总学时数为60左右无需开设以下课程“计算机系统概论”“数字逻辑电路”、“汇编程序设计”、“计算机组成原理”和“微机原理与接口技术”好处强化了系统能力培养缩减了大量课时使用本教材开设的课程建议(2)对于计算机工程、计算机系统等偏系统或硬件的专业方案一(国外大学)先开设该课程(80~100学时)再开设一门将“数字逻辑电路”和“计算机组成”合并的课程,介绍数字系统设计技术方案二(南大)先开设数字逻辑电路再开设该课程(80~100学时)
(包含IA-32的存储管理,为OS实验打基础)然后开设“计算机组成及设计”课程使用本教材开设的课程建议(3)其他方案学时受限情况下,可选择一些基本内容进行讲授建议开设为一学期课程,总学时在60~100左右
带*号内容不讲可能的组合方案第1、2、3章,(附录A)第1、2、3、5章,(附录A)第1、2、3、4、5章,(附录A)第1、2、3、5、6章,(附录A)第1、2、5、6章,(附录A)第1、2、3、6、7章,(附录A)第1、2、3、6、7、8章,(附录A)“计算机系统基础”课程推广工作MOOC课程在Coursera平台上开设计算机系统基础(一)程序的表示、转换和链接围绕“可执行文件的生成”来介绍计算机系统基础(二)程序的执行、异常和I/O处理围绕“可执行文件的执行”来介绍其他多个平台都将陆续开设教学研讨班2013(黄山)、2014(成都)、2015(大连)出版社组织的短期教学研讨班随堂听课并研讨教学研讨会报告“计算机组成与设计”课程建设目标提高对计算机系统的全面认识强化计算机整机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国综采激光指向仪数据监测研究报告
- 文山云南文山砚山县八嘎乡人民政府招聘城乡社区服务岗位人员笔试历年参考题库附带答案详解
- 2025年闸力式负载电阻箱项目可行性研究报告
- 2025年舞台柱型喷泉烟花项目可行性研究报告
- 2025至2030年中国金帆船数据监测研究报告
- 2025年异形罐三工位组合机项目可行性研究报告
- 2025年中国纸袋包装行业市场发展监测及投资战略规划报告
- 2025至2030年中国机动三轮车配件数据监测研究报告
- 2025年PVC楼梯扶手项目可行性研究报告
- 2025至2030年展览展示器材项目投资价值分析报告
- 大学生职业素养训练(第六版)课件 第二单元学习职业礼仪
- 路桥工程检测技术 课件 1公路工程试验检测管理
- 2025高中物理《课时作业》人教版选择性必修第1册课时分层作业(八)
- 地震灾害避险与自救手册
- 脑卒中-脑卒中的康复治疗
- 疫情统计学智慧树知到答案2024年浙江大学
- 2024住院患者静脉血栓栓塞症预防护理与管理专家共识要点(全文)
- 火锅店后厨培训计划
- CJJ6-2009 城镇排水管道维护安全技术规程
- JT-T-1253-2019道路运输车辆卫星定位系统车辆终端检测方法
- QCT1177-2022汽车空调用冷凝器
评论
0/150
提交评论