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