Chinaunix首页 | 论坛 | 博客
  • 博客访问: 804254
  • 博文数量: 59
  • 博客积分: 958
  • 博客等级: 准尉
  • 技术积分: 2459
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-21 13:36
文章分类
文章存档

2019年(1)

2018年(5)

2017年(7)

2015年(2)

2014年(4)

2012年(10)

2011年(30)

分类: LINUX

2017-08-06 17:50:35


相關資訊


《深入理解并行编程》 Paul McKenney (作者) 谢宝友 (译者), 鲁阳 (译者)
● 背景資訊
    ○ ( LHM昭阳) 传奇码农联手linux大咖,为你带来并行编程“圣经”
    ○ (CSDN) 谢宝友:会说话的Linux内核
● 投影片:
    https://drive.google.com/file/d/0B_FULIPcXRNDNm5UUmVIRHJ0LTRWVzdPbVNKbGp5U1J6NUJZ/view?usp=sharing
● 專訪影片: Youtube / 優酷 ,
● 包含 RCU 介紹的舊版 perfbook(由 Scott 提供):
    https://drive.google.com/drive/folders/0B_yUzRCVcjs3bjhaN0NkT1IxMzg


開場介紹


       謝老師是一位認真專研技術的工程師,他目前任職於中興通訊作業系統團隊,也曾以技術總工參與電信級嵌入式實時作業系統(簡稱 CGEL),獲得行業的最高獎 —「中國工業大獎」。
       原本謝老師是在四川省稅務學校就讀稅收專業,由於對作業系統有強烈的興趣,後來轉投到了 IT 技術領域。他前後曾花費 6 年在業餘的時間完成了對 Linux kernel 2.6.12 原始碼包含 mm、scheduler、File system 等子系統的註釋的工作,在微博發表後一個月內被轉載近兩百次,之前 CSDN 專訪時被稱為「会说话的Linux内核」。
       又因為對 Linux Kernel 濃厚的熱誠與興趣,為了能夠讓更多像曾經的自己一樣在程式設計的路上苦苦摸索的開發人員少走一點彎路,他決定翻譯 Paul E. Mckenney 知名著作:"Is Parallel Programming Hard, And If So, What Can You Do About It?"
       關於「深入理解并行编程」謝老師用一句話來描述本書:「如果您想成為年薪百萬的程序員,本書值得一讀。」


謝寶友先生的專訪準備內容


问:
        請您大概給新書一個概略介紹。
答:
       本书作者是Linux RCU维护者Paul E.McKenney,鲁阳和我从2011年持续跟踪完善此书的翻译,至今已有6年时间。
       本书以霍金提出的两个理论物理限制为引子,解释了多核并行计算兴起的原因。并从硬件的角度阐述并行编程的难题。然后,本书以常见的计数器为例,探讨其不同的实现方法及适用场景。在这些实现方法中,除了介绍常见的锁以外,本书还重点介绍了RCU的使用及其原理,以及实现RCU的基础:内存屏障。最后,本书还介绍了并行软件的验证,以及并行实时计算等内容。
       深刻是本书的特点,这源自于作者在并行编程方面超过1/4世纪的工作经历。但是,作者把深刻的问题,讲得透,让人读得懂。看完本书,会有一种“知其然并知其所以然”的感觉。
问:
       先請您對您的工作及背景給各位朋友介紹下。
答:
       我在中兴通讯从事Linux操作系统相关工作已经快十年时间了。平时的主要工作,是解决项目中遇到的标准Linux内核故障,并向项目组提出系统优化建议。
       在此之前,有大约十年时间,在从事上层软件的开发。用过很多种编程语言:true basic,quick basic,cobol, clever,dbase,virtual basic,turbo C,turbo C++,borland C++,delphi,power builder,java,C#。也在工程中用过很多种数据库系统:sql server,sybase,dbase,informix,db2,mysql。很不幸,所有这些都是浅尝则止:)
问:
       可以請您介紹一下是什麼樣的時空下從「稅務專長」轉到「內核專長」?
答:
       这是一个意外。
       我的所有同学,毕业后无一例外都进入了税务部门,有一份稳定的、令人羡慕的工作。但是在税务学校读书期间,我结识了初恋女友,也就是现在的夫人。为了她,我在学校读书期间决定转行做IT。
       其实很早的时候,就想做内核,但是直到十年前,才真正有机会从事这样工作。幸运的是,这件事情做起来还让人开心。
问:
       您在內核中哪些子系統有些涉略,可以給大家介紹下。
答:
       在大陆,Linux的发展水平相对滞后一点。更多的工作机会,是利用Linux来完成项目,很少能够深入某个内核模块,并对其进行重要修改。
       工作中,我会涉及主要的内核模块,例如中断、同步、调度、内存、网络、文件系统。在这些模块遇到故障的时候参与解决,大多数情况下,通过查阅git补丁记录,可以找到解决方法。但是确实也有个别情况,需要向社区提交BUG修复补丁。
问:
       目前在中國有哪些內核子系統是目前比較火紅的領域,可以請您對台灣的朋友介紹下。
答:
       要说最火红的领域,还要算驱动,特别是嵌入式控制系统、手机方面的驱动。
       如果一定要说内核方面的话,有一些公司和个人对网络子系统、文件子系统研究得相对多一点。我知道有一些网络安全公司、互联网公司对网络子系统有一定研究,某些互联网公司也会改造文件系统。
       调度、内存等子系统,已经非常成熟了,大陆某些公司会根据产品的需要,针对这些子系统进行特定优化,但是这些优化没有合入开源内核。
问:
       翻譯本書是基於怎麼樣的動機?您如何規劃時間來做這翻譯工作呢?
答:
       最初是对本书的内存屏障和RCU感兴趣,而国内很少有相关的文章,讲得不深入。因此想把它翻译出来并共享到网络中。后来,我们确实将它放到网络上供自由下载了。
       当然,网络上的免费版本是基于作者早期版本做的,有些章节的内容,作者还没有完成,也存在一些漏译、错译。
       翻译工作很辛苦,特别是我没有上过大学,英语基础比较的不行。为此我去专业培训机构培训了一下英语。
       时间上也是一个问题,基本上是牺牲晚上的休息时间来做这个工作的。第一年,基本上是每天晚上花两到三个小时在
这件事情上。
问:
       您在 1999 年擁有第一份程序員的工作,到 2008 年進入中興接觸 Linux 內核。之前做的工作也是跟內核相關嗎?您是在什麼樣的契機之下發現自己對於作業系統的興趣?
答:
       1999年我正式进入一个小公司开始程序员工作。从1999年到2008年,一直在从事上层应用软件的开发。在这期间,一直想从事操作系统的研发,但是没有合适的工作机会。直到2008年进入中兴通讯操作系统平台部,才正式接触Linux。当然,在2008年之前,我也看过一些Linux内核相关的书籍,并且编写了一个小的玩具式操作系统,可以在启动阶段直接输出中文字符。实际上,我一直希望有一个真正意义上的华人操作系统,这个愿望也许无法实现,但是如果能够实现,就太好了。
问:
       近幾年許多技術都非常火紅,如 AI、區塊鍊等等,開源項目也有許許多多的項目及誘惑。在 CSDN 也有提到「团队有时也会抓壮丁,去帮其他项目做一些虚拟化、Android相关的工作。」但您始終專注在內核的研究上面。是什麼原因讓您對於操作系統如此著迷呢?
答:
       华人还没有一款真正的操作系统,不知道这算不算一种耻辱。我希望专注于内核,或多或少能对这件事情产生哪怕一点点影响。
问:
       您提到曾婉拒管理崗位的機會,您本身的考量是什麼呢?對於面臨這個轉折點的程序員您的建議是?
答:
       不同的人,有适合自己的不同岗位。我觉得自己更有兴趣去做技术。在面对技术和管理岗位的选择时,可以考虑乔布斯所说的“随心所想”,想想自己喜欢的,到底是技术还是管理。在选择时,一定要摒弃“学而优则仕”的潜意识。华人社会有着根深蒂固的“官本位”思想,实际上遗毒甚深,阻碍了社会的整体进步。
       可喜的是,在大陆,不少技术企业也意识到这方面的问题,提供了不少的技术岗位,其薪资可以远超管理岗位。
问:
       Mel Gorman 2013 年在 LKML 上說 “If Documentation/memory-barriers.txt could not be used to frighten small children before, it certainly can now.” 您個人的想法呢?對於 concurrency/memory-barrier 有興趣的朋友,能否給我們一些建議?
       背景資料:
       1. 原始 maillist https://lwn.net/Articles/576642/
       並被LWN 列為 Quote of the week https://lwn.net/Articles/575835/
答:
       我猜想,您的问题,本意是想问我对内核文档中,关于内核屏障的文档的看法,也就是说,内核相关文档是不是真的让人看不懂?
       如果是这样的话,那么答案也许在《译者序》中已经提到过一些了:
       “然而,这六年在看Linux内核代码的过程中,以及在工程实践中,总有一个幽灵般的阴影出现在脑海中:什么是内存屏障?2011年,我看过内核源码目录中的文档以后,终于解决了标准内核和工具链一个关于内存屏障的故障。要复现这个故障,项目同事需要在整整一个房间里面摆满单板和服务器,才能搭建一套复现环境,并且需要用多套这样的环境,花费两个月时间才能复现一次相关故障。即使在解决了相关故障以后,我觉得自己对内存屏障仍然理解得不深刻。因为内核源码目录下的文档,对内存屏障描述得仍然语焉不详。那了个幽灵仍然在脑海中盘旋:到底什么才是内存屏障?”
       确实,Documentation/memory-barriers.txt很难读懂,我想原因可能是:
       1、文档作者假设读者已经对内存屏障有了深入的理解,这篇文章仅仅需要一些提示性、概要性的说明。
       2、对内存屏障的深入讲解,不是一篇短短的文档所能描述清楚的。这也不是Documentation/memory-barriers.txt的职责。
       3、读懂这篇文章,需要很多背景知识。包括硬件基础、缓存一致性协议、编译器基础。
       总的来说,这既不是作者的错,也不是读者的错。而是这个问题本身太难了。试想一下:一个对经典力学很熟悉的学生,在没有接触过相对论、量子力学、平行宇宙等概念的情况,就突然去读《宇宙的琴弦》这本书,怎么能怪B.格林没有将弦论以一种通俗易懂的手法讲解清楚呢?
       对于内存屏障的学习建议,Paul的说法是:建造桥梁的工程师,应该先认真学习一下力学原理。也就是说,我们软件工程师,需要有一定的硬件基础,特别是需要理解象MESI这样的缓存一致性协议。实际上,我的看法是:Paul已经在并行编程这本书里面,把该讲的内容,讲得很清楚了。有兴趣的读者,建议结合着中英文版本,反复阅读该书第3、14、附录C等相关章节。一定要多读几遍,因为看第一遍的时候,会有一种不知所云的感觉。
阅读(847) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

xiebaoyou2017-10-29 10:06:09

wuqixuan:好书,买了一本

回复 | 举报

wuqixuan2017-10-03 10:52:25

好书,买了一本