1、Aug-221 一个系统软件工程师的方法论一个系统软件工程师的方法论-A System Software Engineers Methodology 陈怀临,创办人陈怀临,创办人弯曲评论弯曲评论Aug-222弯曲评论 系统软件 知识结构 工作方法 系统理解工业动态结束寄语提纲提纲Aug-223目标:非盈利性智库机构领域:科技跟踪专题分析人物报道学术打假弯曲评论弯曲评论()Aug-224 最近工作总结:最近工作总结:专题分析对中国系统软件的思考与建议对华为系统软件的战略思考(上)对华为系统软件的战略思考(下)对陆首群“坚持开源软件的创新之路”一文的讨论 对国防科大麒麟操作系统研发的思考中国计算机
2、发展史略(1956-2006)弯曲评论弯曲评论()Aug-225最近工作总结:最近工作总结:学术打假:IPV9批判IPv9,中国的创新,还是骗子的杰作?如果中国少几个张庆松写在张庆松力挺IPv9之后科技问题政治化和狐假虎威的范例阳光下的争辩IPv9是什么没有知识你可以有常识,没有学问你应该有疑问再驳张庆松博士大家快来看上帝啊IPv9的一些技术细节揭开IPV9的神秘面纱“IPv9”公开信息统计谢建平先生到底拥有哪些“IPv9”专利?弯曲评论弯曲评论()Aug-226最近工作总结:最近工作总结:科技书籍:PowerPC and Linux Kernel InsideLinux 核 心(The Li
3、nux Kernel)(下)Linux 核 心(The Linux Kernel)(中)Linux 核 心(The Linux Kernel)(上)MIPS CPU 体系结构概述,Linux/MIPS内核(下)MIPS CPU 体系结构概述,Linux/MIPS内核(上)See MIPS Run弯曲评论弯曲评论()Aug-227最近工作总结:最近工作总结:人物评述:邓稼先传海外学人 计算的美丽-图灵奖的第一个四十年(上)计算的美丽-图灵奖的第一个四十年(下)弯曲评论弯曲评论()Aug-228操作系统桌面操作系统服务器操作系统嵌入式操作系统 编译器与工具链(gcc,binutil,gdb)编程环
4、境,中间件PVM,MPI,OpenMPMapreduce,HadoopCORBA,DCOM系统软件系统软件Aug-229 嵌入式操作系统-传统分时系统:Linux,FreeBSD-微内核:QNX/Neutrino,L4,Mach-大型通信操作系统:华为/VRP,思科/IOS、IOX系统软件系统软件Aug-2210 系统软件工程师系统开发的关键成员系统调试的关键成员系统维护的关键成员系统升级的关键成员知识结构知识结构Aug-2211 形而下掌握一种CPU的结构熟练掌握汇编语言和相应的调试方法熟练掌握C语言和相应的调试方法知识结构知识结构Aug-2212 形而下深刻理解经典操作系统原理-调度,内存
5、管理,通信,同步,锁深刻理解一个进程空间的分布知识结构知识结构Aug-2213 形而上了解一种CPU/NP/SoC的微结构了解多种流行CPU、NP的结构-MIPS,ARM、XScale-IA32,PowerPC-XLR,Cavium-AMD知识结构知识结构Aug-2214 形而上熟悉一种总线或连接(Interconnect)了解多种流行总线或连接MPX,603,HT,CSI PCI,PCI-E,RapidIO知识结构知识结构Aug-2215 形而上 熟悉一款OS子系统实现机制 熟悉一款OS内核开发环境了解各种OS优缺点和映射关系 知识结构知识结构Aug-2216 形而上 熟悉协议栈 阅读RFC
6、知识结构知识结构Aug-2217 形而上 熟悉经典数据结构算法 熟悉排队论系统(Queue System)基本算法复杂性分析能力知识结构知识结构Aug-2218 形而上 跟踪工业界研发动态 阅读经典学术文献知识结构知识结构Aug-2219谨慎,谦虚不生气“当你认为再也没有bug的时候,至少还有一个没有发现的bug”“你最担心的地方,也就是你要犯错的地方!”系统层次的bug是致命的。任何一行系统代码都是重要的。工作方法工作方法Aug-2220调试硬件开发板工作方法:-阅读硬件规约第一遍的仔细与精确性-撰写调试日志的工作习惯-建立Baseline的重要性-步步为营和可追溯性。工作方法工作方法Aug
7、-2221调试硬件开发板工作方法:-与厂商技术支持交互-不要相信开发板和硬件工程师-如果出现过(一个错误),一定会再出现 工作方法工作方法Aug-2222系统研发工作方法:-简单就是美;实用才是王道!-次优算法;解决问题;把最优算法留给教授。-策略与机制的分离!-不要从新发明;不要当民科!-最好的老师是工作方法工作方法Aug-2223系统研发工作方法:-控制平面-数据平面-管理平面-调试平面工作方法工作方法Aug-2224系统联调工作方法:-概念清晰,层次感强:Divide and Conquer-集成复杂性-放弃侥幸心理工作方法工作方法Aug-2225系统测试和联调工作方法:简单bug的调试
8、方法(可重复的)-LED点灯调硬件板-printf的使用-子系统Loopback调试 工作方法工作方法Aug-2226系统测试和联调工作方法:复杂bug的调试方法(非常难重复的)-bug的表象原理-bug的累积原理-功力(基础)有多深;就能走多远。工作方法工作方法Aug-2227系统测试和联调工作方法:复杂bug的调试方法(非常难重复的)-最复杂的bug是概念不清而引入的bug-最头痛的bug是memory corruption工作方法工作方法Aug-2228系统测试和联调工作方法:科学攻关 vs 工业研发-不要轻易放弃-不是做研究,发文章。-patch的使用;度的掌握工作方法工作方法Aug-
9、2229系统可扩展性和升级研发方法:-硬件计算能力的翻倍!=系统性能的翻倍!-瓶颈通常是通信开销,总线开销。-坚持系统改良的道路;不要做激烈革命者工作方法工作方法Aug-2230系统可扩展性和升级研发方法:-“You cant control it,if you cant measure a system-基于可量化的科研方法。工作方法工作方法Aug-2231如何与客户打交道:-已经是网络工程师搞不定的bug-稳住客户-不要轻易下结论-解决方案或者补丁patch.-一个Best Efforts的技术解释。工作方法工作方法Aug-2232 系统(System)与核心(Kernel)的关系计算单元
10、的多样化(ASIC,FPGA,CPU,NP)互连网络的多样化(Bus,Interconnect)系统理解系统理解Aug-2233工业动态工业动态 多核系统的持续应用微观分布式并行计算系统Aug-2234工业动态工业动态Aug-2235Aug-2236Aug-2237Centralized Shared Memory MultiprocessorInterconnection NetworkProcessorCachesMain MemoryI/O SystemProcessorCachesProcessorCachesProcessorCachesHigh-end Internet Appli
11、ance ArchitectureAug-2238High-end Internet Appliance ArchitectureInterconnection NetworkCachesMemoryI/OCachesMemoryI/OCachesMemoryI/ONon-Uniform Memory Access(NUMA):Accessing local memory is faster than accessing remote memoryProcessorProcessorProcessorAug-2239Cluster Interconnection NetworkMemoryI/OProc.CachesNode Interc.NetworkProc.CachesProc.CachesMemoryI/OProc.CachesNode Interc.NetworkProc.CachesProc.CachesDistributed Shared Memory(Clusters of SMPs)Typically:Shared Address Space with ccNUMA High-end Internet Appliance ArchitectureAug-2240结束语结束语谢谢大家!谢谢大家!欢迎访问弯曲评论欢迎访问弯曲评论