南京大学实施计算机系统能力培养情况介绍_第1页
南京大学实施计算机系统能力培养情况介绍_第2页
南京大学实施计算机系统能力培养情况介绍_第3页
南京大学实施计算机系统能力培养情况介绍_第4页
南京大学实施计算机系统能力培养情况介绍_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京大学在系统能力培养方面的南京大学在系统能力培养方面的思考思考与改革举措与改革举措南京大学计算机系南京大学计算机系 袁春风袁春风email: 2016.05主要内容主要内容过程过程 从从“计算机组成原理计算机组成原理”课程的教学开始课程的教学开始(做一点)(做一点) 到到“偏硬件类课程群偏硬件类课程群”建设建设(做一些)(做一些) 最终建立最终建立“分流培养体系下的系统能力培养模式分流培养体系下的系统能力培养模式” (全面做,但是还在路上)(全面做,但是还在路上) 南京大学的初步探索与改革南京大学的初步探索与改革 2013年前的改革探索:局部课程内容调整年前的改革探索:局部课程内容调整 20

2、13年后的改革思路:课程体系全面调整年后的改革思路:课程体系全面调整 计算机系统基础课程情况介绍计算机系统基础课程情况介绍从企业招聘题目开始说起从企业招聘题目开始说起阿里笔试中有这样一道题目:在一台主流配置的PC上,调用f(35)所需要的时间大概是()。intf(intx)ints=0;while(x+0)s+=f(x);returnmax(s,1);A几毫秒B几秒C几分钟D几小时显然,考的不仅仅是程序设计!学生的答案PPT计算时间PPT从企业招聘题目开始说起从企业招聘题目开始说起大众点评笔试中的一道题(也是全国考研题):计算机存储器按字节编址,采用小端方式存放数据。假定int型和short型

3、长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下:structinta;charb;shortc;record;record.a=273;若record首地址为0 xC008,则地址0 xC008中内容及record.c的地址是0 x00、0 xC00DB0 x11、0 xC00EC0 x11、0 xC00DD0 x00、0 xC00E显然,考的也不仅仅是程序设计!中兴笔试题:写程序判断当前CPU是大端CPU还是小端CPU,并作简要说明。从企业招聘题目开始说起从企业招聘题目开始说起有学生告诉我,他的同学写了一下程序,判断出他的PC是大端!uniontestinta;char

4、b;main()test.a=0 xff;if(test.b=0 xff)printf(“Littleendian);elseprintf(“Bigendian);该同学的程序错在哪里呢?显然,考的也不仅仅是程序设计!中兴笔试题:写程序判断当前CPU是大端CPU还是小端CPU,并作简要说明。FF000000000000FF大地址小地址小端大端理解程序的行为须有理解程序的行为须有“系统思维系统思维”程序执行结果不仅取决于算法、程序的编写(编程语言)而且取决于语言处理系统操作系统ISA微体系结构计算机系统抽象层的转换 这一点认识是经过了20多年的不断摸索才明白的!对系统能力培养问题的认识过程对系统

5、能力培养问题的认识过程1989-2002年 讲授“组原”课程,用过若干本教材,每个内容作为孤立的点讲授,不知道该课程内容有何用,学生不喜欢(老师发了一本“天书”,学生原话),很苦恼2003年 赴英UMIT(先合并到曼大)交流,发现情况一样(看来这门课只能这么教) 期间,远程登录到UCB的CS61C,发现数据的表示和运算与高级语言的变量有关,Cache和程序中的数据访问有关(看来这门课还有些用处)2004-2007年 采用P&HComputerOrganizationandDesign:TheHardware/SoftwareInterface和传统教材(另一个班)同时上,考试统一为传统

6、教材,效果很差2007-2008年 采用P&HComputerOrganizationandDesign:TheHardware/SoftwareInterface,同时改革实验方式和内容:FPGA+CPU设计,效果很好 改革后第一年(06级学生)就完成了MIPS32五级流水线CPU 规划自编一套教材:组原、数逻实验教材、组原实验教材等SKIP课程实验大作业代表作品课程实验大作业代表作品0606级学生设计的级学生设计的MIPS32MIPS32顶层结构图顶层结构图0707级学生在此基础上又加入了级学生在此基础上又加入了PS2接口和接口和VGA接口接口统一编址方式统一编址方式课程实验大作业

7、代表作品课程实验大作业代表作品0606级学生设计的级学生设计的MIPS32处理器(除浮点和除法指令外的所有指令)处理器(除浮点和除法指令外的所有指令)精确中断、软件查询方式;延迟槽为精确中断、软件查询方式;延迟槽为1 1BACK对系统能力培养问题的认识过程对系统能力培养问题的认识过程2009-2012年 采用自编教材计算机组成与系统结构,FPGA+CPU设计 2009年立项:计算机系统结构课程群建设项目数字逻辑电路、计算机组成与系统结构、微机原理与接口技术、嵌入式系统等成立课程群建设小组,经费35万,用于培训老师和研究生助教费 编译原理实验结合MIPS指令系统增加了后端设计,并部分课程局部改革

8、 不仅仅在偏硬件课程群,而是认识到需要软硬件融合、分流培养YalePatt以及教材IntroductiontoComputingSystemsfromBitsandGatestoCandBeyondRandalBryant以及教材ComputerSystems:AProgrammersPerspective美国一流大学的课程体系CS2013和CE2016规范的指导 2013年开始(分方向培养,强化系统基础)结论:强化系统(软硬件融合)、分流培养对系统能力培养问题的认识过程对系统能力培养问题的认识过程YalePatt在密西根大学时教组原课时,也按传统的内容,就硬件讲硬件,发现学生不喜欢深入调研后

9、认识到:要改变教学内容,要把硬件和软件结合起来讲解,使学生具有计算机系统整体概念于是,编写并出版了:IntroductiontoComputingSystemsfromBitsandGatestoCandBeyond描述了一个“小而完整”的系统书中描述了计算机系统各个抽象层他在UTAustin一直开设该课程(报告)“Javaisnothing!”算法功能部件/寄存器传送级 应用问题指令集体系结构(ISA)操作系统/虚拟机微体系结构器件编程 (语言处理系统)电路BACK对系统能力培养问题的认识过程对系统能力培养问题的认识过程YalePatt:曾任美国密歇根大学计算机体系结构实验室主任多年,鉴于他

10、在计算机发展历程中的贡献及对计算机科学教育的深刻理解和倾心投入,被IEEESpectrum评为美国计算机界的卓越泰斗(与计算机程序设计艺术的作者,图灵奖获得者DonaldKnuth齐名,全球只有他们俩人享此殊荣),在美国乃至世界计算机体系结构领域有着广泛的影响力。多年来,从计算机科学和计算机工程院系的教学实践中,我们认识到传统的计算机课程体系中缺少帮助本科生建立软件与硬件联系的课程,使得他们对计算机系统中一些非常重要的基本概念缺乏深入理解。例如,学生们无法清楚地解释指针变量的硬件实现;而栈、递归概念更像是在“变魔术”,难以理解。BACK对系统能力培养问题的认识过程对系统能力培养问题的认识过程(

11、来自CMU SCS的R. E. Bryant院长)深有感触Carnegie MellonRole within CS/ECE CurriculumCS 410OperatingSystemsCS 411CompilersProcessesMem. MgmtCS 441NetworksNetworkProtocolsECE 447ArchitectureECE 349EmbeddedSystemsCS 412OS PracticumCS 122Imperative ProgrammingCS 415DatabasesData Reps.Memory ModelECE 340DigitalComp

12、utationMachineCodeArithmeticECE 348EmbeddedSystem Eng.Foundation of Computer SystemsUnderlying principles for hardware, software, and networkingExecution ModelMemory System213ECE 545/549Capstone来源:CMU CS213对系统能力培养问题的认识过程对系统能力培养问题的认识过程BACK对系统能力培养问题的认识过程对系统能力培养问题的认识过程 CS2013(计算机科学) 对的描述:16 core hours

13、计算机专业人员不应该将计算机看成是一个执行程序的不可思议的黑箱子。基于SF(系统基础)的AR的目标是对支撑各种计算的硬件环境以及与高层软件之间的接口的深刻理解。学生应该获得对计算机系统的功能部件及其特征、性能、接口,特别是对为提高性能在现在或将来所采用的各种并行技术的深刻理解。为了使学生能够开发出更高性能的程序,学生应该能从程序员的角度理解并行和延迟,因而学生必须理解计算机系统结构。在选择所使用的一个系统时,学生应该能够理解如何对各种部件的特性(如CPU时钟速度、CPI、存储器容量、平均访存时间等)进行权衡。 加入了分布和并行计算、信息安全、系统基础、基于平台的编程 系统基础将跨系统地综合介绍

14、缓存、延时、并行等核心概念,涉及操作系统、体系结构、网络等领域对系统能力培养问题的认识过程对系统能力培养问题的认识过程 CE2016(计算机工程) 对的描述:60 core hours 第第67页页The knowledge units in this area collectively encompass the following: 1. History of computer architecture, organization, and its role in computer engineering. 2. Standards and design tools used in com

15、puter architecture and organization. 3. Instruction set architectures, including machine and assembly level representations and assembly language programming. 4. Computer performance measurement, including performance metrics and benchmarks and their strengths and weaknesses. 5. Number representatio

16、n and arithmetic algorithms for manipulating numbers in various number systems. 6. Computer processor organization and tradeoffs, including data path, control unit, and performance enhancements. 7. Memory technologies and memory systems design, including main memory, cache memory, and virtual memory

17、. 8. Input/output system technologies, system interfaces, programming methods, and performance issues. 9. Multi/many-core architectures, including interconnection and control strategies, programming techniques, and performance. 10. Distributed system architectures, levels of parallelism, and distrib

18、uted algorithms for various architectures. BACK主要参考的美国名校相关课程网站主要参考的美国名校相关课程网站美国美国UC Berkeley大学大学“Machine Structure”2012年课程网站:年课程网站:/cs61c/sp12/美国美国UC Berkeley大学大学“Components and Design Techniques for Digital System”2012年课程网站:年课程网站:/cs150/sp12/美

19、国美国UC Berkeley大学大学“Computer Architecture and Engineering”2012课程网站:课程网站:/cs152/sp12/美国美国Stanford大学大学“Computer Organization and Systems”2012年课程网站:年课程网站:/pg/courses/281000/cs107-spring-2012美国美国Stanford大学大学“Digital Systems II”课程网站:课程网站:http:/www.

20、/class/ee108b/美国美国Stanford大学大学“Digital Systems II”课程网站:课程网站:/class/cs110/美国美国Carnegie Mellon 大学大学“Introduction to Computer Architecture”课程网站:课程网站:/213/美国美国Carnegie Mellon 大学大学“Introduction to Computer Architecture”课程网站:课程网站:/

21、ece447/美国美国Univ. Illinois at Urbana-Champaign“Computer Architecture II”课程网站:课程网站:/class/sp11/cs232/美国麻省理工学院美国麻省理工学院(MIT)“Computation Structures”课程网站:课程网站:http:/6004.MIT专业设置和相关课程简介专业设置和相关课程简介EECS核心课程是6.004UC Berkeley专业方向设置专业方向设置ECE:Electrical and Computer Engineering

22、 Electronics (Option I) Communications, Networks and Systems (Option II) Computer Systems (Option III)CSE:Computer Science and Engineering Computer Science (Option IV)Others:flexible program General Course of Study (Option V)EECS Honors Degree ProgramDouble Majors Programs EECS/Materials Science and

23、 Engineering EECS/Nuclear EngineeringBachelor of Science (B.S.)学位提供一个学位提供一个major(EECS),分两个),分两个 program(ECE和和CSE),此外,还有),此外,还有Honors Program和和Double Majors。每个。每个Program又可选择不同的又可选择不同的option,分配相应的,分配相应的advisor。UC-Berkeley相关课程设置相关课程设置EECS152Introduction to Microelectronic Circuits Components and Design

24、 Techniques for Digital System Machine Structures Computer Architecture and Engineering Data Structures Structure and Interpretation of Computer Programs 核心课程是CS61CStanford专业方向设置专业方向设置Stanford相关课程介绍相关课程介绍 计算机工程方向必须选修数字系统1(数字逻辑电路)和数字系统2(计算机组成和系统结构)Stanford相关课程介绍相关课程介绍 System Track 计算机系统方向必须选修操作系统和编译或

25、数字系统2(计算机组成和系统结构)Stanford相关课程介绍相关课程介绍所有专业核心课程除程序设计、数据结构、算法分析外,就是CS107计算机组成与系统(从程序员角度看计算机系统)和CS110计算机系统原理(相当于CS2013的SF)CMU SCS的相关课程介绍的相关课程介绍 一个一个CS专业,提供专业,提供5个可选方向个可选方向 专业核心课如下:专业核心课如下:SCS所有专业核心课程主要是程序设计、数据结构、算法分析与15-213计算机系统概论(从程序员角度看计算机系统)Carnegie MellonRole within CS/ECE CurriculumCS 410OperatingS

26、ystemsCS 411CompilersProcessesMem. MgmtCS 441NetworksNetworkProtocolsECE 447ArchitectureECE 349EmbeddedSystemsCS 412OS PracticumCS 122Imperative ProgrammingCS 415DatabasesData Reps.Memory ModelECE 340DigitalComputationMachineCodeArithmeticECE 348EmbeddedSystem Eng.Foundation of Computer SystemsUnder

27、lying principles for hardware, software, and networkingExecution ModelMemory System213ECE 545/549CapstoneCMU SCS的相关课程介绍的相关课程介绍计算机系统专业涉及到计算机实现方面的内容,包括数字逻辑电路、组成与体系结构、OS和编译、嵌入式系统设计等。ECE(18)和SCS(15)各自开设一部分课程。美国一流大学相关必修课情况美国一流大学相关必修课情况偏硬偏硬Bottom Up以汇编为中心以汇编为中心强调底层设计强调底层设计强调硬件与强调硬件与OS的接口的接口TOP DOWN以不同粒度的并

28、以不同粒度的并行为线索行为线索涉及各个层次涉及各个层次实验跨度大实验跨度大MIXED强调从程序员角度看到的底层内容强调从程序员角度看到的底层内容重点为重点为C语言的底层支持、程序优化、语言的底层支持、程序优化、存储器分配管理,而不介绍底层数存储器分配管理,而不介绍底层数据通路等的具体实现据通路等的具体实现MIT 6.004USB 61CStanford CS107CMU 15-213偏软偏软总结:美国一流大学相关课程情况总结:美国一流大学相关课程情况都是EE和CS分别开课,互选共享 EECS:MIT、UCBerkeleyEE(ECE)/CS:Stanford、CMU都采用分流培养模式 MIT:

29、EE、EECS、CS三种学位(不同学位还分若干方向) UCB:ECE(E、CNS、CSys)、CSE(CSci)、Mix、Honor Stanford:AI、BioCo、CE、Graph、HCI、Info、CSys、Theory、Unspecialized、IndividuallyDesigned CMUSCS:AI、CognitiveModeling、CSys、Graph、Theory偏硬件的方向有:EE、ECE、CE、Csys都有一门所有专业必修的介绍计算机系统的入门课(相当于组原?) MIT6.004、UCBCS61C、StanfordCS107、CMUCS213 教材有P&P、

30、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中美大学相关课程教

31、学情况对比中美大学相关课程教学情况对比1. U:EE和和CS共享共享 C: EE和和CS各自为阵各自为阵2. U:先建立系统概念后:先建立系统概念后分流培养分流培养 C:没有有机贯穿系统的前导:没有有机贯穿系统的前导 课程,课程,没有体现分流没有体现分流U:课程内容:课程内容纵向关联纵向关联 C:课程内容:课程内容横切、关联弱横切、关联弱U:先系统先系统概念概念后细节后细节实现实现 C:先数字电路后组成原理:先数字电路后组成原理5. U:4-5门门/学期,学期,学得深入学得深入 C:7-8门门/学期,学期,精力不足精力不足I/O systemProcessorCompilerOperating

32、SystemApplication (ex: browser)Digital DesignCircuit DesignInstruction Set ArchitectureDatapath & Control transistorsMemoryAssembler国内专业教学需要在计算机系统国内专业教学需要在计算机系统能力培养方面进行改进!能力培养方面进行改进!2013年前相关课程设置年前相关课程设置Intro. to Computer System(ICS)HardwareSoftwareApplicationTheory1st2nd3rd4th5th6th7th8thProgram

33、ming Funda. (C/C+)Digital DesignAdvanced ProgrammingData StructureDSPComputer Org. & Arch.Date communicationOSCompilerJavaImageGraphicsAIParallel computing Com. NetworkingDatabaseEmbedding Sys.Networking prog.Linux Hadoop & MapReduceIA32&I/O 2013年前采用的改进模式年前采用的改进模式AlgorithmGates/Register-

34、Transfer Level Application (Problem)Instruction Set Architecture (ISA)Operating System/Virtual MachinesMicro ArchitectureDevicesProgramming (Language)CircuitsAbstraction Layers of CSUsers View ( ICS)general picture of CSProgrammers View ( PF&AP)HLL & PG.Logic Designers View ( DD)Boolean Logi

35、c & ComponentsFrom Top & Bottom to MiddleFrom Outside to InsideArchitects View ( CO&CA)ISA及其与以下内容的关系及其与以下内容的关系OSCompilerProgrammingCPU Design、Performance( OS、Compiler )通过“计算机组成与结构”将系统各个层次的概念联系起来!学生实验成果演示学生实验成果演示DE2-70实验板实验板(DE2实验板)实验板)FPGA 芯片芯片处理器处理器+CP0(五级流水线五级流水线)超级终端超级终端总总线线存储器芯片存储器芯片

36、UART总线总线接口接口部件部件VGA图形输出图形输出PS-2USBMIPS:俄罗斯方块游戏 (加载在SSRAM芯片)ARM:跳球游戏 (加载在SDRAM芯片)程序包括:自检、初始化后在LCD上显示一串字符;引导加载程序;转游戏程序执行;不同按键以不同“中断”类型区分,由相应中断服务程序处理。游戏程序用游戏程序用C实现,实现,gcc编译后,编译后,用程序将用程序将elf转换为二进制文件。转换为二进制文件。Operating System Labs2012: labs based on NanosOperating System LabsOperating System Labs编译原理实验编译

37、原理实验BACK2013年前课程体系存在的问题年前课程体系存在的问题AlgorithmGates/Register-Transfer Level Application (Problem)Instruction Set Architecture (ISA)Operating System/Virtual MachinesMicro ArchitectureDevicesProgramming (Language)CircuitsAbstraction Layers of CSUsers View ( ICS)general picture of CSProgrammers View ( PF&

38、amp;AP)HLL & PG.Logic Designers View ( DD)Boolean Logic & ComponentsArchitects View ( CO&CA)ISA、relationship with OSCompilerProgrammingCPU Design、Performance( OS、Compiler )问题:ICS内容太散,系统性不强;CO&CA内容多,前导课基础不够,学生难掌握;OS实验量大而深入,IA-32基础不够;编译技术(目标代码:MIPS,用SPIM验证),但有关链接器的部分没有,而这对理解VM、机器代码的生成等

39、概念重要;未体现分流培养2013版新教学计划框架版新教学计划框架分流培养:分流培养:5个方向个方向系统能力培养的两个重要建设点系统能力培养的两个重要建设点与系统能力培养关联密切的课程与系统能力培养关联密切的课程先系统概述后具体实现新课:计算机系统基础、计算机系统综合实验改变较大的课程:计算机组成与设计编译原理 调整后相关课程设置调整后相关课程设置(CSys方向)方向)HardwareSoftwareApplicationTheory1st2nd3rd4th5th6th7th8thProgramming Funda. (C/C+)Digital DesignProgramming Funda.

40、LabData Structure计算机系统基础OSCompilerJavaImageGraphicsAIParallel computing Com. NetworkingDatabaseEmbedding Sys.Networking prog.Linux Computer Arch.Hadoop & MapReduceGPU & CUDA IA32&I/O 计算机组成与设计“计算机系统综合实验”CSlab课程:对硬件、汇编器、编译器、OS进行综合设计CS-lab算法功能部件/寄存器传送级 应用问题指令集体系结构(ISA)操作系统/虚拟机微体系结构器件编程 (语言处

41、理系统)电路“计算机系统基础计算机系统基础”课程内容概要课程内容概要l 使学生清楚理解:计算机是如何生成和运行可执行文件的!l 重点在高级语言以下各抽象层 C语言程序设计层数据的机器级表示、运算语句和过程调用的机器级表示 指令集体系结构(ISA)和汇编层指令系统、机器代码、汇编语言 微体系结构及硬件层CPU的通用结构层次结构存储系统 操作系统、编译和链接的部分内容“问题求解”解决应用算法(数据结构)编程层课程内容概要课程内容概要/*-sum.c-*/int sum(int a , unsigned len)int i,sum = 0;for (i = 0; i = len1; i+) sum

42、+= ai;return sum;/*-main.c-*/int main()int a1=100;int s; s=sum(a,0); printf(“%d”,s);数据的表示数据的运算各类语句的转换与表示(指令)各类复杂数据类型的转换表示过程(函数)调用的转换表示链接(linker)和加载程序执行(存储器访问)异常和中断处理输入输出(I/O)第二章:数据的机器级表示和处理第二章:数据的机器级表示和处理数据的表示数据的运算基本运算及其电路-21474836482147483647结果为false(与事实不符)C99标准中则是trueinti=-2147483648;i2147483647结果

43、为trueSum加法器nnnAZFCinCout4Bn01MUXSubBOF整数加/减运算部件SFCFBA:1000B:0111Sub:1做减法进行比较ZF=0CF=0SF=0,OF=1无符号整数带符号整数第三章:程序的转换及机器级表示第三章:程序的转换及机器级表示intsum(inta,unsignedlen)inti,sum=0;for(i=0;i=len1;i+)sum+=ai;returnsum;sum:.L3:movl-4(%ebp),%eaxmovl12(%ebp),%edxsubl$1,%edxcmpl%edx,%eaxjbe .L3IA-32指令系统、x86-64指令系统简介过

44、程调用、循环和选择结构的机器级表示数组、结构、联合类型的数据存储和访问缓冲区溢出漏洞的产生和防止IA-32中中P调用调用caller,caller调用调用addintadd(intx,inty)returnx+y;intcaller()inttemp1=125; int temp2=80;intsum;sum=add(temp1,temp2);returnsum栈和栈帧的概念变量的作用域嵌套和递归的本质第四章:程序的链接第四章:程序的链接目标文件格式符号表及符号解析重定位过程可执行文件的加载可执行文件的加载可执行文件的加载第五章:程序的执行第五章:程序的执行指令执行过程CPU的基本结构数据通路

45、基本原理流水线基本原理第六章:层次结构存储系统第六章:层次结构存储系统虚拟地址空间第六章:层次结构存储系统第六章:层次结构存储系统 存储器分层结构 主存储器组织 Cache、虚拟存储器、TLB * IA-32/Linux中的地址转换:分段(GDT / LDT / IDT)+ 分页CPUTLBCacheMainMemoryVAPAmiss3hit3页表页表hit1miss1miss2Page faulthit2“movl(%ebx,%eax,4),%esi”操作数访存过程 第七章:异常控制流第七章:异常控制流int sum(int a , unsigned len)int i,sum = 0;f

46、or (i = 0; i = len1; i+) sum += ai;return sum;当参数len为0时,返回值应该是0,但是在机器上执行时,却发生访存异常。但当len为int型时则正常Why?a0用户进程OS页故障处理程序页故障访问越权 发SIGSEGV信号给用户进程 movl(%ebx,%eax,4) ai:(%ebx,%eax,4)LA=0 x0040 xxxx&a0 %ebxi %eax进程的逻辑控制流进程的上下文切换进程的私有地址空间 程序的加载和运行异常和中断的响应过程IA-32/Linux的异常/中断处理IA-32/Linux的系统调用 第八章:第八章:I/O操作的

47、实现操作的实现用户空间I/O软件I/O库函数、文件的基本概念、系统级I/O函数、系统调用(自陷)内核空间I/O软件与设备无关软件、设备驱动程序、中断服务程序I/O硬件与I/O软件的接口:I/O设备及其控制器、I/O端口、I/O控制方式stdout和和stderr的差别的差别猜一下在Linux中以下程序输出什么?#includeintmain()fprintf(stdout,“hello);fprintf(stderr,“world!);return0;输出结果为:world!hello#includeintmain()fprintf(stdout,“hello);fprintf(stderr,

48、“world!n);return0;输出结果为:world!hello#includeintmain()fprintf(stdout,“hellon);fprintf(stderr,“world!);return0;输出结果为:helloworld!stdout和stderr都用于标准输出,但是,stderr为_WRITE|_UNBUFstdout为_WRITE有缓冲:遇到换行符n或缓冲满(BUFSIZE=1024)才写文件!举例:文件复制功能的实现举例:文件复制功能的实现/*方式一:getc/putc版本*/voidfilecopy(FILE*infp,FILE*outfp)intc;whi

49、le(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()为

50、何要尽量减少系统调用次数?系统调用的开销有多大?实现一个功能有多种方式,但开销和性能不同,需要权衡!相当大!SKIP回顾:软中断指令回顾:软中断指令int $0 x80的执行过程的执行过程 它是陷阱类(编程异常)事件,因此它与异常响应过程一样。将IDTi(i=128)中段选择符(0 x60)所指GDT中的内核代码段描述符取出,其DPL=0,此时CPL=3(因为int$0 x80指令在用户进程中执行),因而CPLDPL且IDTi的DPL=CPL,故未发生13号异常。读TR寄存器,以访问TSS,从TSS中将内核栈的段寄存器内容和栈指针装入SS和ESP;依次将执行完指令int$0 x80时的SS、E

51、SP、EFLAGS、CS、EIP的内容(即断点和程序状态)保存到内核栈中,即当前SSESP所指之处;将IDTi(i=128)中段选择符(0 x60)装入CS,偏移地址装入EIP。这里,CS:EIP即是系统调用处理程序system_call(所有系统调用的入口程序)第一条指令的逻辑地址。执行int$0 x80需一连串的一致性和安全性检查,因而速度较慢。从PentiumII开始,Intel引入了指令sysenter和sysexit,分别用于从用户态到内核态、从用户态到内核态的快速切换。 BACK课程开设情况课程开设情况 教学对象 大二(上)、全体学生 前导课程 程序设计基础、数字逻辑电路 学时数

52、18周x5学时/周 教学形式 大班(3学时/周),小班(2学时/周,50人左右) 教学计划完成情况 除第5章(程序的执行)以外的所有内容 南大课程网站 http:/ 实验内容及实施情况实验内容及实施情况 实验类型 Homework小规模编程练习、运行结果分析 Lab数据表示(位操作)、二进制炸弹、缓冲区溢出、逆向工程 Project一个小型项目(ProgrammingAssignment,PA)实现功能完备但简化的x86模拟器NEMU及一个简易调试器涵盖教材中约95%的内容(动态链接在Lab中)觉得自己上课听懂了?做做PA就知道了!http:/nju-ics.gitbooks.io/ics20

53、15-programming-assignment/content/实验平台与工具IA-32+GNU/Linux+gcc+C其它工具:gdb,make,git Project(PA)的主要内容PA实验内容及实施情况实验内容及实施情况监控程序/小内核+x86模拟器(保护模式)TimerI8259 PICSerial portIDEMemoryEXUIFURegister FileControllerCachemain CPUmemory managementSimplified debuggerIDUMMUKeyboardVGAdeviceCommon data flowInterruptPor

54、t I/OMemory mapped I/ODebug informationPA1PA2PA3PA4a computer system Project(PA)的主要内容)的主要内容简易调试器(PA1) 单步执行,打印寄存器/内存,断点,表达式求值,监视点CPU核心、简易调试器高级功能(PA2) 支持x86保护模式下大部分常用指令(不支持x87指令) 符号表,调用函数链、ELF格式和加载存储管理(PA3) MMU:分段(GDT/LDT),分页,TLB(不支持保护机制) 两级联合cache(L1、L2) DRAM(包含rowbuffer和burst的物理特性)中断/异常/I/O(PA4) IA-

55、32中断机制(IDT)(不支持保护机制) 时钟,键盘,VGA,串口,IDE,i8259PIC的简单模拟 独立编址I/O,内存映射I/O(VGA) 文件操作、系统调用(write)、键盘中断模拟器实现的功能几乎涵盖“计算机系统基础”教材中的所有内容例如,定点加减指令需考虑所有情况,并生成各标志,因而需理解教材中关于整数加减运算公式的含义。 PA4会结合kernel进行 一个单核单任务微型操作系统内核 ELF32加载器 1个设备驱动(IDE) 分页存储管理 6个系统调用 open,read,write,lseek,close,brk 简易文件系统 文件数量和文件大小皆固定,没有目录通过软(kern

56、el)和硬(NEMU)的结合来理解计算机系统Project(PA)的主要内容)的主要内容 简易调试器(PA1)学生提交的实验结果学生提交的实验结果 CPU核心(PA2)学生提交的实验结果学生提交的实验结果 存储管理(PA3)学生提交的实验结果学生提交的实验结果 中断/异常/I/O(PA4)执行hello程序,显示“Helloworld!”学生提交的实验结果学生提交的实验结果 中断/异常/I/O(PA4)移植打字小游戏学生提交的实验结果学生提交的实验结果 中断/异常/I/O(PA4)移植仙剑奇侠传学生提交的实验结果学生提交的实验结果PA实验(第一版)规模实验(第一版)规模预计耗时/小时代码量/行

57、PA0开发环境配置 20无PA1简易调试器50500+PA2指令系统604000+PA3存储管理50500+PA4中断与I/O30300+PA1实验的反馈课程教学的反馈第一届PA成绩学生实际所用时间可能比预计耗时还要多得多。困难来自:对Linux+GCC+gdb编程环境不熟悉大规模程序设计和调试等能力不足二(上)课业太重,没时间消化课程内容1. ICS课程对PA实验的指导不够加基础框架达7000多行体会、困惑和反思体会、困惑和反思比较有效的做法 理论结合实例 前后内容关联 多用图解释概念 多用汇编讲高级语言程序 小班化教学,多互动 先问问题,再给出答案并讨论 多进行随堂小测验 引导学生查资料、

58、多动手 不要学生死记硬背,强调理解 开卷考试困惑 学生受应试教育毒害之深,远超想象 学生的两级分化,越来越严重反思:一门课解决不了所有问题,需要相关课程一起协作用大量例子,不断让学生体会高级语言、编译器、操作系统、ISA以及微架构之间的关系。“ICS(计算机系统课程)为目前来看最不水的专业课,没有之一”“真的学到了非常多的东西,比如Linux系统/Vim/Git的基本使用方法、Makefile文件的编写、基本的汇编语言、计算机原理、基本的操作系统知识,以及如何RTFM和RTFSC等等等等。程序设计的本领也得到了充足的锻炼。” PA实验(第二版)规模实验(第二版)规模第二届PA成绩学生反馈1学生

59、反馈2第一届(2013级) 平均分:23.07/40 完成PA3的仅有29人第二届(不包括PA4) 平均分:27.60/34.6 完成PA3的有96人在一(下)增加了“程序设计实验”课程(2013级学生没开设)用时反馈开设课程建议(开设课程建议(1) 对于软件工程等不需要深入掌握底层硬件细节的专业 开设一学年“计算机系统基础”课程 第一学期:附录A和第14章 第二学期:第58章 每学期的总学时数为60左右 无需开设以下课程 “计算机系统概论” “数字逻辑电路”、“汇编程序设计”、 “计算机组成原理”和“微机原理与接口技术” 好处 强化了系统能力培养 缩减了大量课时使用本教材开设的课程建议(使用

60、本教材开设的课程建议(2) 对于计算机工程、计算机系统等偏系统或硬件的专业 方案一(国外大学) 先开设该课程(80100学时) 再开设一门将“数字逻辑电路”和“计算机组成”合并的课程,介绍数字系统设计技术 方案二(南大) 先开设数字逻辑电路 再开设该课程(80100学时)(包含IA-32的存储管理,为OS实验打基础) 然后开设“计算机组成及设计”课程使用本教材开设的课程建议(使用本教材开设的课程建议(3) 其他方案 学时受限情况下,可选择一些基本内容进行讲授 建议开设为一学期课程,总学时在60100左右 带*号内容不讲 可能的组合方案 第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)“计算机系统基础计算机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论