精华内容
下载资源
问答
  • 阿里云的这群疯子--深度好文请仔细看

    万次阅读 多人点赞 2018-10-18 10:23:32
      世事安稳,岁月静好。   电影里才有疯子。麦克墨菲在疯人院里带领一群精神病人揭竿而起,...真正的疯子,从来不电影。   他们把别人的目光变成聚光灯,把自己的生活变成真人秀,手提钢刀用肉身...

     

     

    世事安稳,岁月静好。

     

    电影里才有疯子。麦克墨菲在疯人院里带领一群精神病人揭竿而起,怼天怼地;饿了三天的黑皮为了抢一口面包被店主追上高架桥,末路狂奔;杰克和泰勒在午夜的搏击俱乐部里挥拳相向,鲜血淋漓。屏幕对面,我们把爆米花塞进嘴里,哭成狗或者笑成狗。电影散场,各自回家。

     

    真正的疯子,从来不看电影。

     

    他们把别人的目光变成聚光灯,把自己的生活变成真人秀,手提钢刀用肉身串演一个浓重的角色。他们的人生结局无外乎两种:黄袍加身,或者玉石俱焚。

     

    阿里云这群疯子,就用56度的荷尔蒙,在横跨十年的悠长画布上涂抹了这样一个故事。

     

    一、一个大问题

     

    2008年9月,王坚加入阿里巴巴。

     

    马云把他从微软亚洲研究院常务副院长的位置挖来,是因为阿里巴巴面临一个重大的危机——公司的“脑力”快不够用了。

     

    阿里巴巴的“脑力”,其实就是“计算力”。

     

    几亿用户无论是在淘宝剁手,还是支付宝上转账,这一切都要靠巨大的计算力来思考、记忆。

     

    恰恰和人一样:

     

    如果这个“大脑”记忆被填满,就没办法储存新的商品和交易记录。

     

    如果这个“大脑”思维速度跟不上,就没有办法让用户及时下单、付款。

     

    2008年,中国虽然已经加入 WTO,还把国际友人请来热热闹闹地开了一次奥运会,但在科技领域仍然是个标准的“三无”国家:没有自己的操作系统,没有自己的芯片,同样没有自己的计算力系统。所以,购买国外成熟的设备和系统,几乎是 BAT 和所有大国企的唯一选择。

     

    国外的东西,无外乎“IOE”这三样标配:

     

    I(IBM,服务器提供商,他们提供的服务器俗称“小型机”)

    O(Oracle,数据库提供商,他们的软件是著名的“甲骨文商业数据库”)

    E(EMC,存储设备提供商,他们提供的是“集中式存储”)

     

    鲜有人知,那时的阿里像依赖氧气一样依赖 IOE。

     

    一个支付宝的同事给了我翻出了当年的数据:2008年,在阿里的IT架构中,淘宝和支付宝使用的绝大部分都是 IBM 小型机、Oracle 商业数据库以及 EMC 集中式存储。

     

    当年用户激增,数据越来越多,每天早上八点到九点半之间,服务器的处理器使用率都会飙升到 98%。离爆棚就差两个百分点。

     

    阿里巴巴就像赛道上的跑车:速度飞快,但引擎已经发红,再踩几脚油估计就要冒烟,后果不堪设想。

     

    可能连马云自己都没有想到,阻碍阿里巴巴增长最迫切的阻力不是商场上的博弈、不是政策的变化,而居然是 IT 基础设施的瓶颈。

     

    怎么办?花钱继续买服务器和软件啊!

     

    这话听上去没错。但是有两个小问题:

     

    一个问题是太贵。

     

    那时候小型机价格大概是从几十万到百万人民币;商业数据库软件费用差不多几千万,外加一大笔维护费。王坚 08 年刚来阿里时就给马云算了算,按照这样的速度“剁手”,光是买机器和软件就足够让阿里破产。阿里得找到一种成本更低的技术架构。

     

    另一个问题是不好用。

     

    阿里在08~09年的时候,业务增长速度实在太快。每年都是十几二十倍,IOE 虽然都是美国公司,但事实证明美国的月亮也不会更圆。它们的系统并没有经受过服务几亿人这么大规模的考验,此时已经变得非常难用了。

     

    2008 年中旬,马云召开了内部会议。事情已经刻不容缓,要研发一套新的技术架构来换掉阿里巴巴的旧引擎。

     

    这个新的计算架构应该是什么样呢?

     

    首先,它要便宜。

     

    就像一日和三餐一样,无论去哪家餐厅,都不如自己做饭更实惠。长远来看,自己开发一套计算架构显然是最经济的。

     

    其次,它要好用。

     

    为了满足阿里巴巴庞大的计算任务,这套系统至少要比 IOE 表现更好,能同时调度数千台计算机,组成一个巨大无比的“大脑”。

     

    于是,“阿里云”这个词,第一次出现在公司高层的话语里。而王坚,加盟阿里巴巴之后的职务恰恰是“首席架构师”,他的使命就是从零开始建立这个云计算系统。

     

     

    王坚

     

    王坚是个理想主义者。

     

    在他丰满的理想中,这个新架构的每一行代码都要自己来写。但现实骨感:环顾四周,他身边除了几位从微软带来的旧部,几乎一无所有。

     

    2008年10月,这个想象中属于中国的云计算系统被团队定名为“飞天”,源自中国神话中的形象。

     

    后来人们说,阿里云是技术驱动型的企业。不过在我看来,最初阿里云应该是起名驱动型的企业。名字倒是起得不错,但作为“三无”国家,底层科技起步较晚的中国在对美国的复杂计算机系统的战争中,几十年都未尝胜绩。

     

    中国人研究的云计算,会“飞天”还是“坠毁”,旁人心里多多少少是有判断的,只是不便明说。

     

    说回这个疯狂的计划。

     

    飞天相当于一个发动机的,而时间紧迫,阿里巴巴准备同时做两件事:一边制造发动机,一边为自己的主力业务淘宝网顺便造一个整车出来。

     

    当时,淘宝网在计算力方面的主要需求就是“大规模数据计算”。所以,用飞天为淘宝造“大规模数据计算”制造整车的计划就被定名为“云梯计划”。

     

    实际上,“云梯计划”关乎阿里的生死,不是儿戏。思来想去,公司内部还是做了两手准备:

     

    1. 用一些已有的开源软件为基础,研发一个数据计算系统,这是“云梯1”计划。

    2. 而以“飞天”为基础,纯自研一套数据计算系统,被定为“云梯2”计划。

     

    彼时绝没人想到,五年后的那个下午,这两座通向顶峰的云梯会用怎样的姿态占据画面的中心。千军万马雄列两旁,目睹荣耀的火焰和退潮的海水。

     

    历史就这样以汹涌的姿态,向那些准备好的和没准备好的人敞开。

     

     

    2009年,阿里云成立。

     

    二、招兵买马

     

    满弓是阿里云的第六位工程师。

     

    招他进来的,是王坚在微软的旧部,阿里云的第一技术负责人林晨曦。面试结束时,林晨曦歪嘴一笑,提醒满弓:“你加入阿里云之后,要做好随时出差的准备。”

     

    果然,满弓签完入职合同当天下午,就被“附赠”了一张火车票。他要去天津帮助招聘。

     

    满弓这样回忆十年前的那个下午:

     

    “阿里研发院” 2008年10月才成立,已经错过了招聘季的黄金时期。但是我们又确实太需要人才了,于是刻不容缓,要再扫荡一下那些大学,把“漏网之鱼”打捞回来。

     

     

    2009年,阿里云的招聘海报

     

    跟着阿里云的招聘队伍,满弓跑遍了全国主要的几大城市十几个学校。每到一个学校,只呆三天。

     

    第一天做宣讲,然后马上笔试;第二天统一面试;第三天发 Offer。

     

    彼时的阿里巴巴已经很有名气了。很多错过招聘季的同学喜出望外,一时间各大学校风起云涌奔走相告齐来应聘,虽然从招聘者到应聘者,都没见过云计算长什么样子。

     

    由于招聘人手实在太少,面对堆积如山的笔试试卷,满弓他们根本判不过来。焦头烂额的满弓擦汗时一回头,看到了同行的 HR 小姐姐。满弓两眼放光,二话不说把她们揪过来,一晚上就教会了她们如何判卷。

     

     

    当时判卷的场景

     

    经过这样“连滚带爬”的招聘,到了2008年年底,阿里云凑够了了三十位工程师。

     

    话分两头。

     

    下有林晨曦招兵买马,上有王坚每天“画饼”。

     

    马云深受王坚鼓舞。虽然不懂技术,但是他逐渐发现,云计算这件事情的价值比一开始想象中的要大得多。

     

    这是因为云计算系统会制造出一种具有极强弹性的计算力。这样的计算力一方面可以为阿里巴巴添置家当,另一方面还可以“批发零售”给无数中小企业,为未来世界建设了一整套“基础设施”。

     

    这样来看,就把“独善其身的工具”变成了“兼济天下的生意”,这不正是马云创建阿里巴巴的基本信念吗?

     

    从这一刻开始,马云就对阿里云寄予重望。只要有空,就到阿里云的团队里和林晨曦、满弓这些工程师们一起聊天讨论。

     

     

    马云、王坚和工程师们的合影

     

    然而,事情发展到这里,就开始有些错位了。

     

    阿里的很多的业务部门希望的是稳定地在现有系统上加以改进,最好别冒太大风险;

     

    但飞天团队却黄巾高擎赤膊上阵左右开弓,想依靠一己之力,开发出一套改写世界历史,可以让中国人扬眉吐气的完美云计算系统。

     

    刚才我说阿里云是“起名驱动型的公司”,你看看这帮疯子给飞天内部模块的命名,就知道他们心里在想什么了:

     

    分布式存储的系统,就像大地一样承载万物,那就叫“盘古”。

    调度系统,需要“能掐会算”,就用懂得阴阳八卦的“伏羲”命名。

    结构化存储系统,就用会盖房子的“有巢”。

    网络通信,就用追日的“夸父”。

    等等。

     

    飞天团队一片斗志昂扬。

     

    其他部门的很多领导层,用半信半疑外加慈爱的眼光看着他们。

     

     

     

    三、淘宝的一场战争

     

    时间不等人,转眼到了2009年。

     

    在隔壁淘宝网的普通员工中,有人在“隔江犹唱后庭花”,有人却已经感到“山雨欲来风满楼”。

     

    2009年,小邪刚刚加入阿里一年,在淘宝网参与系统研发。当时他和同事都感觉到,淘宝网面临的矛盾非常明显:

     

    业务并不赚钱,09年只有一个季度勉强盈利。而赚来的这点钱,眼看都要填进去购买服务器和软件产品,入不敷出。

     

    小邪记得很清楚,他昨天刚听说隔壁阿里云准备搞云计算,今天就迎来了一个“特殊的客人”。

     

    林晨曦走到淘宝网技术团队面前,搬个板凳兀自坐下:“你们淘宝的大数据系统用我们的阿里云架构吧。”

     

    “代码已经写了多少?”小邪问。

     

    “几行吧。”林晨曦说。

     

    事情就这样定下来了。

     

    云梯1、云梯2,两套系统一边搭建,一边在淘宝内部实验,一边承担部分计算任务以缓解现有系统不足的压力。

     

    当时淘宝技术保障数据库管理员的负责人是后羿。他几次欲言又止,还是硬着头皮在内部会议上宣布了这个消息:淘宝要放弃 Oracle,转投自研的数据库架构了。

     

    结果,八十多个 Oracle 工程师把他堵在会议室里。“你再说一句试试?”

     

    他们的愤怒完全合情合理。“如果上边铁了心要干,兄弟们的前途在哪里?”

     

    最终,一场恶斗转化成了几十个工程师坐在会议室促膝谈心。技术人是讲理的:“淘宝已经这么大了,如果现在不刮骨疗毒,自己砸自己的饭碗,将来整个淘宝都会命悬一线,到时候大家还不是沦落天涯。”想通了这些,工程师们也冷静多了。

     

    这八十多个工程师里,包括后来的阿里技术保障部负责人振飞。振飞站出来说:“好,让我们学新技术可以,但是咱们拿事实说话。你后羿敢不敢跟我打个赌?以三年为限,用新技术的淘宝核心交易系统必须达到零故障!”

     

    后羿咬咬牙,敢!

     

    但后羿一个人的分量还远远不够重。毕竟淘宝上有这么多业务,这么多买家,这么多卖家,万一数据迁移失败,谁来负责?时任淘宝技术总架构师行癫(现任阿里巴巴 CTO)见状,把心一横,宣布自己和部门也愿意站出来,共同承担技术风险:“干好了我们大家荣誉等身,干坏了要杀要剐我来扛!”

     

    看到行癫都赌上了自己的身家性命,也就没人再说什么了。

     

    2009年秋天,轰轰烈烈的 IT 架构升级项目在淘宝网正式启动。一群 Oracle 工程师,就这样含着泪,一点一点亲手拆毁自己安身立命的系统。

     

     

     

    四、荒野求生

     

    林晨曦用来“忽悠”淘宝网的“几行代码”,是在北京写出来的。

     

    2009年春节上班第一天,在北京上地的汇众大厦203这间连暖气都没有的办公室里,一帮工程师一边口呼白气,一边敲出了“飞天”的第一行代码。

     

     

    飞天的第一行代码

     

    说起来,这个地方算是阿里云最早的办公室,但是门口也没个牌子。直到半年后他们搬出大厦,保安都不知道这帮神神叨叨的人究竟是干什么的。(不过十年后的今天,他们的手机里的很多 App 也许都跑在阿里云的服务上。)

     

    每天,工程师们除了噼里啪啦写代码,还得顺便“荒岛求生”——自己订水、买垃圾桶、修桌椅板凳、修无线网,连茶叶和咖啡都是从自己家带来的。

     

    不过,他们坚信自己在做的事情还是挺伟大的。“没准将来我们成功了,我们写的飞天第一行代码还能印在T恤上呢!”角落里有人瑟瑟发抖地说。

     

    那个时候的他们,看上去和一帮戴着眼镜的教徒无异。

     

    时间马上又到了夏天。北京的夏天,你懂的。当时测试系统的服务器就架在办公室里,这就是个巨大的火炉。大厦的空调不行,还没到七月份,程序员就热得撑不住了。为了降温,每天上午他们都叫冰场送两大块冰来。

     

    有一次周六,马云来北京,专门到阿里云的办公室去看看。林晨曦赶紧想打开电脑给马老师展示一下自己团队的成果。结果按了半天开关,机器都没反应。他才发现大厦停电……马云就这样坐在办公室等了半个小时,直到物业恢复供电才一睹阿里云飞天系统最初的芳容。

     

    王坚跟马云说,这帮人很能干,每天晚上都加班。马云惊了,在这种地方还能加班??没过几天,阿里云就搬出了这幢大楼,进入了有空调的办公室。

     

     

    同事们往办公室里运冰

     

    五、神坑,阿里云

     

    金融大咖胡晓明,2005 年加入阿里,以办事雷厉风行闻名全集团。

     

    2009年6月,马云找到胡晓明,准备交给他一个大任:内部创业,做阿里金融的总裁。

     

    胡晓明信心满怀,准备撸起袖子说干就干。不料,马老师悠悠地说,不要急,你要先答应我两件事。

     

    马云:“第一件事,你只能做100万人民币以下的贷款生意,帮助像当年的我一样借不到钱的创业者。”

    胡晓明:“理解,这没问题。”

    马云:“第二件事,你必须跟刚成立的阿里云绑在一起,用他们的技术架构支撑你的服务。”

    胡晓明:“纳尼??!!”

     

    这两件事,胡晓明最终都答应了。不过阿里云这帮看上去疯疯癫癫的人,他们技术到底靠不靠谱,胡晓明可是真没底。

     

    金融不像别的业务,这可是一个数据都不能错,一个字节都不能丢。按照“行业祖训”,打死都得用 IOE 这些国外大厂的基础设施,现在可好,却非得用听上去就让人怀疑的“阿里云”……

     

    “明明可以坐高铁,却偏偏要骑自行车去上海。”当时研发工程师王国涛的吐槽,代表了很多阿里金融同事们的心声。

     

    但马老师肯定有马老师的道理。阿里金融的同事们只能硬着头皮跟阿里云的朋友们握握手。

     

    “牧羊犬”是阿里金融的第一个产品,简单来说就是给淘宝商家贷款的项目。吐槽王王国涛回忆:“当时阿里云一边搭建飞天平台,我们就一边在飞天上面开发牧羊犬应用。这就像是开发商一边在造房子,我们一边在室内装修铺地板。”

     

    飞天果然不负众望。

     

    数据传输问题、计算稳定性问题、处理速度问题一样都不少,翻版篆版梅花版的错误层出不穷,各种 Bug 形式翻新,永不重复,这叫一个皮……

     

    阿里金融的工程师必须24小时盯着系统,才能防止酿成大错。当时情况危急到了什么程度呢?一位奶爸工程师为了值夜班盯系统,把自己小孩的哭声设成了闹铃。因为只有听到这个声音,他才能在无论多困的情况下从床上弹起来……

     

    这段时间,提到阿里云,阿里金融的程序员们都是“眼睛干干的,有种想哭的心情”。他们的经典吐槽大概是这样:人家的是云计算,我们家的是“人肉云计算”;人家的是“分布式计算”,我们家的是“分步试计算”……

     

    作为合作伙伴,林晨曦每天的表情都有点儿尴尬,出则满脸堆笑地帮阿里金融排除 Bug,入则愁容满面地和同事们一起修改代码。

     

    眼看就要过春节了,两个项目都快撑不住了。

     

    被“猪队友”坑得够呛的胡晓明气鼓鼓地带着核心骨干跑到王坚办公室门口“讨说法”。胡晓明这个人,是出了名的“只要认定的事情就一定要办成”,大有在王坚办公室打地铺静坐的架势。王坚无奈,派出所有的技术工程师,驻扎在阿里金融的现场加班开发,只为了“让兄弟团队能过个好年”。

     

    好不容易捱过了 2009 年,春节过后,阿里云发布了一次大版本升级。升级完成的一瞬间,空气突然安静了:飞天系统稳定得不像阿里云的作品……

     

    阿里金融从一口口呛水的状态,一下子冲出海面。

     

    巨大的计算力让阿里金融实现了“秒级”放贷。这种技术进步让“小额多次放贷”成为了可能,这就让阿里金融几乎等于开挂,不良贷款率大大低于传统金融机构。也正是因为阿里云“高效低价”的加持,单账户每年的 IT 成本可以控制在1元以内。

     

    阿里金融,成为了后来的网商银行。他们就这样无意间成为了中国第一个上云的银行。

     

     

    胡晓明内心OS:宝宝心里苦,但宝宝要笑 T_T

     

    六、“骗子”王坚

     

    解决了稳定性,阿里云就像抓住了救命稻草,总算可以暂时喘口气。

     

    这些成绩,也已经成功引起了其他公司的注意。于是 2010 年,在阿里巴巴出发两年后,很多大公司纷纷着手研究自己的云计算技术。

     

    但所有人都没想到,有一只巨大的怪兽正在必经之路上静静等待着。

     

    这只怪兽名为“5K”。

     

    你还记得“云梯1”和“云梯2”两个项目吗?此时,终于轮到他们唱主角了。

     

    两座云梯,就像“争夺家产”的两兄弟,规则很明确:

     

    1、要想成功肩负起阿里巴巴的底层计算系统,就必须有能力独自调度 5000 台服务器。

    2、两兄弟谁先跑到 5000 这根线,就“赢者通吃”,继承家业。

     

    而 5000 这个目标,就写为 5K。

     

    目标就摆在这,但无论是“云梯1”还是“云梯2”,都死活达不到这个指标。

     

    李超是飞天伏羲调度系统的研发工程师。他用苦逼来形容自己的 2010 到 2012。当时他带着同事们没日没夜地加班,收获的就是一个接一个的系统错误。

     

    就这样,一年过去了,两年过去了。

     

    王坚是一个性情温和的人,但是那段时间,他几乎天天跟团队拍桌子。

     

    满弓回忆,每次一开会大家都会把桌子收拾干净,把水杯什么的拿走,以防出现“事故”。

     

    我记得有一次博士(王坚)很生气,砰砰地拍手机。有一个工程师实在受不了了,说博士,你拍的是我的手机……

     

    现实不是小说。神兵天降和剧情反转并不存在。纵然他们几乎尝试了所有可能的技术策略,但就是没有一种方案可以成功调度5000台机器。

     

    2012年底,以开源软件为基础的“云梯1”计划实现了4000台集群调度,而阿里云团队更看好的纯自研的“云梯2”还在1500台集群的数量徘徊。

     

    越是困难时刻,越会产生分歧。

     

    实话实说,当时大多数的技术大牛,都觉得用经过全世界验证的 Hadoop 为基础的“云梯1”更有希望,对“云梯2”嗤之以鼻。而阿里云这帮人就是不认,因为根据他们的推断,Hadoop 在4K到5K的路上,肯定会遇到一个不可逾越的沟壑,于是倔强地带着团队大举投入“云梯2”。

     

    在一片质疑和争吵中,“最寒冷的冬天”就这样降临了。

     

    1934年到1936年,从苏区出发到陕北会师,三年长征,工农红军从8万人锐减到3万人。

     

    从2010年到2012年,在阿里云最艰苦的长征三年,“战损率”只多不少。

     

    由于没有成绩没有进展,连续几年阿里云整个部门都在集团拿最低分。

     

    满弓、李超他们开始收到团队同学的辞职书,林晨曦也收到了部下的转岗信。这些邮件,最终都一封不少地塞在王坚的邮箱里。

     

    一般来说,三年时间足够判断一件事情到底靠不靠谱。“世界末日”那年,人们几乎已经认定了阿里云不可能做出一套云计算系统了。不仅如此,很多阿里的同事都叫王坚“骗子”。开始大家还在背地里说,后来,大家都不再忌讳,公司里流传着很多骗子王坚的笑话。“一个学心理的博士居然当上阿里巴巴的 CTO,心理学学得真好啊!”

     

    无论是“伏羲”还是“盘古”,这些开天辟地的名字,此时都成为了阿里云这些人要满足“个人野心”的明证,成为了狂妄的代价,成为了“不自量力”的耻辱。

     

     

    当时内网论坛里对阿里云和王坚的吐槽

     

    满弓、李超、飞天总架构师唐洪、林晨曦,他们每天都是低着头上班。今天,左边的工位空了,明天,右边的工位空了……

     

    “谁也不知道王坚当时帮我们抗了多大的压力……”李超回忆起那段日子,只说了这么一句话。

     

    眼看阿里云成立就要满五年了,集团里却风言风语地传着“阿里云要被撤掉”的消息。

     

    某一天,马云突然召集阿里集团高管开会,所有业务部门的负责人都估计是马云要宣布关掉阿里云的消息,于是纷纷带上自己的技术负责人参会,准备一声令下,就瓜分阿里云的技术人才。

     

    在 2012 年的阿里云年会上,王坚走上台,他紧紧攥着话筒,几次抬眼望向远处,几次欲言又止,最终泣不成声。这个曾经扬言要用一己之力把中国云计算镌刻在世界科技史上的“疯子”,就那样孤零零站在原地,面对台下黑压压的一群错愕的人。仿佛无数时间的列车在他眼前呼啸飞逝,而他手里没有握着任何一张车票。

     

    这是阿里云故事里最为人所知的一个细节。但我猜很少有人记得,王坚一边哭,一边说了什么。

     

    他说:“这两年我挨的骂甚至比我一辈子挨的骂还多。但是,我不后悔。只是,我上台之前看到几位同事,他们以前在阿里云,现在不在阿里云了……”

     

    就像王坚的一位老部下把辞职信交到他手里时,对他说的那样:做云计算的感觉就像集体合围抱一棵大树,谁都知道最终大家的手会连在一起,但谁也不知道那一刻会发生在什么时候。真的真的对不起,我撑不住了……

     

    如果把阿里云所有曾经的员工加起来,可能是现在的好几倍。有太多太多的人都在那段暗淡的日子里离开了。这不怪他们,任何一个能认真判断利弊的人,也许在那时候都应该离开阿里云。也许只有“疯子”,才会选择留下。

     

    就在阿里云最危急的时候,好友朱珑找到林晨曦,鼓励他离职创业。但林晨曦给朋友撂下一句斩钉截铁的话:“现在我绝对不能走。如果你想等我创业,先让我把阿里云扶上正轨。”

     

    阿里云苦苦撑着,人心飘摇,流言四起。

     

    流言终于传到马云耳朵里。

     

    “我每年给阿里云投 10 个亿,投个十年,做不出来再说。”他对着阿里巴巴集团所有人,斩钉截铁地说。

     

    这一句话,让所有的流言顺次平息。

     

    在阿里云年会上,马云做了这样的独白:

     

    我知道,所有留下来的人其实是真正阿里云的精髓。

     

    有的时候不是你技术有多强,而是我们有多团结,互相多配合,多支持,多理解。

     

    换任何一个公司,吃不消内网上那么多人骂的,我有一段时间也是特别替大家难过,就像我骂儿子可以,我打儿子可以,不允许别人骂我儿子的,要不然我要翻脸的。

     

    我没有想过公司内部对阿里云有那么大的意见,我真没想到。但是你们都扛过来了,这是我深以为傲的,如果你们能抗得过内部人骂,抗得过那么多人指责,我们还有什么扛不过未来五年的发展?

     

    李超给我看了这张照片。

     

     

     

    这是当年参加 5K 项目的同事。他说,这些人中现在只有十几个还在阿里巴巴。

     

    李超又给我看了另一张照片。

     

     

     

    阿里云成立满六年的时候,为所有从第一年走到现在的员工做了一个人偶。所谓的“所有”,只是眼前这五个人偶。满弓和李超就在其中,他们相顾一笑。

     

    这场长征,从摩肩接踵走到踽踽独行。年轻的人们为了共同的梦想相互温暖,又难免为了各自的梦想互道珍重。只是那些曾经鲜活的伙伴,就这样成为离去的背影,越走越远,消失在视野里,也消失在生命里。

     

    再多情的看客,恐怕也难解其中滋味。

     

    七、5K

     

    阿里云的神坑,不仅“坑”了胡晓明的阿里金融,也在“坑”淘宝网。

     

    之前说过,淘宝网从2009年就开始了“云梯计划”。到了 2012 年,局面变得有些尴尬:

     

    1. 无论是云梯1和云梯2,都没有冲上云计算的技术标准:5K 的规模。

    2. 虽然没达标,但是淘宝网没有选择,只能“赶鸭子上架”,让两架还在试验中的云梯承担一些重要负载。

     

    被刀架在脖子上的行癫心急如焚。

     

    2013年3月28日,一封来自集团技术保障部架构师云铮的邮件直达高层:

     

    按照数据增量与未来业务增长的情况,云梯1和云梯2两套系统的存储和计算能力将在今年6月21日到达瓶颈。

     

    到那时,数据业务将会停滞,淘数据,量子能业务都会受到影响;阿里金融的贷款业务将因为无法进行信用数据运算而中止。

     

    这一天终于来了。人们洪水般的“买买买”为阿里巴巴划定了 Deadline。要想维持正常的业务,他们必须在不到三个月的时间里解决问题。

     

    这个时候,把飞天推上 5K,几乎已经是唯一的选择了。事到如今,这已经不是阿里云自己的战斗,而是整个阿里巴巴集团的“背水一战”了。

     

    在这个关头,阿里云需要集团所有人的帮助。

     

    各个部门的技术大牛迅速组成增援大军列立山头,旌旗飘扬。但是在进入战斗序列之前,一个纠缠了各路大神五年恩怨情仇的问题必须有个了断:

     

    最初,因为要做两手准备,以 Hadoop 为基础的“云梯1”和以飞天为基础的“云梯2”一直并行。这个时候,时局已经紧迫到不允许团队分流,他们必须抛弃掉一个云梯。

     

    抛弃哪个?

     

    云梯1:依靠开源技术,更加成熟,但几年的实践证明,把它推到 5K 有明显的的技术瓶颈。而且,最核心的技术转向开源系统,也许会让阿里巴巴在未来遇到更多技术制约;

     

    云梯2:自研技术,难度更大,但它的架构和代码都是基于阿里自身诉求而设计的。自主可控的 5K 一旦成功,就会打下阿里巴巴下一个十年的江山。而一旦失败,后果也将不堪设想……

     

    此时做出任何抉择,都会彻底改变阿里巴巴的历史。但历史又只在彼时彼刻给阿里巴巴一次机会,开弓没有回头箭。所有人的目光都看向王坚。

     

    王坚说了两个字:“飞天!”

     

    再没有一句质疑,再没有一丝埋怨。那些曾经看好或者不看好飞天的技术大牛,这个时候撸起袖子一齐杀了进来。

     

    核心技术系统的正明团队,全员投入 5K 的攻坚战;负责应用集测测试的许呙兢,在得知调度系统的日志自动收集和分析工具缺口严重,二话没说主动请缨;褚霸、多隆、长仁这些分散在各部门的的技术牛人也都冲进来了。各路神仙在这几个月亲近得不分彼此。

     

    褚霸回忆当时的场景:“早上9点进入项目,11点我们就开始解BUG。”

     

    就连在电梯里,都会人问阿里云的同事“最近怎么样?需不需要帮忙?”他们来自一些兄弟团队,有负责安全的,有负责集成测试的。

     

    阿里云自己的同事更是全力冲刺。

     

    新员工刚刚入职,就立刻被派往“战场”。本来是北京分公司的员工,入职之后直接拉到杭州帮忙 5K 项目。都加入公司两个月了,还不知道自己北京的工位在哪里。

     

    而一位叫做李泉的同事,连续几个礼拜连轴转,半夜两三点被叫起来解决问题,早晨八点又出现在工位上。被同事封为“李铁人”。

     

    在最后的测试阶段,杭州和北京两个办公室的同事电话24小时通着,人可以轮班休息,电话不能掉线,那部用来接听的电话都烧得滚烫。

     

    就这样,一行行代码累积起来,在赛博世界的疆土上一眼望不到边界。他们交错重叠,像从白垩纪开始慢慢累积的地层。直到这片大陆,终于浮出海面。

     

    2013年6月底,5K进入了最后的稳定性测试。

     

    怎么测试系统的问题定性呢?之前带领“八十勇士”围攻后羿的振飞,提出了一个真·钢铁直男的测试办法:拔电源。

     

    他的理由是:“如果这种突然暴力断电都能撑得住,阿里云还有什么不稳定的呢?”

     

    拉电的同学反复问了三遍:拉吗?拉吗?拉吗?最后才颤抖着双手拉下了电源。

     

    这一刻,时间停止了,只有机器重新启动的声音。

     

    四个小时以后,当系统完全恢复运行的时候,很多阿里云同事的背后,已经被冷汗打湿了。经过系统自检,一切正常。虽然还有十台服务器光荣就义。但是,数据毫发无损!

     

    这一刻,在场见证的人都明白:成了。

     

    所有的技术路线之争,所有的进退成败之辩,所有的隐忍委屈不甘,所有的怀疑嘲讽忧虑,就在此时此刻突然画上句号。

     

    盛夏的杭州,阿里巴巴热血翻涌,阿里云的“疯子”们却心如止水。

     

    八、阿里云这群疯子

     

    阿里云,成为了中国第一家拥有完整云计算能力的企业。

     

    2015年,在计算界的奥运会 Sort Benchmark 中,阿里云计算100TB数据排序只用了不到7分钟,把 ApacheSpark 之前创造的23分钟世界纪录一下子缩短了一多半。这说明,中国人研发的云计算系统不仅成功了,而且不比世界上任何现存的云计算系统差。

     

    成功登顶的“云梯2”,后来更名为 ODPS,“加冕”成为了阿里巴巴各项业务通用的大数据计算平台。

     

    ODPS 验证成功之后,阿里立刻启动“登月计划”,把所有的数据和计算都迁移到飞天为基础的系统上,全盘替代 IOE 和 云梯1。2013年5月,阿里巴巴最后一台小型机下线。7月,淘宝最后一个Oracle数据库下线。阿里巴巴这台战车,用了五年时间,在超高速行驶中,没有踩一脚刹车,成功更换了发动机。

     

    因为突破了技术瓶颈,在 5K 之后,ODPS 只用了几个月就冲上了单集群 10K,进而实现了无限制扩展。到 2018年,已经更名为 MaxCompute 的 ODPS 达到了数万台的规模。

     

    哦对了,还有一件小事。当年振飞和后羿的那场“世纪赌局”,后羿赢了。用了三年时间,新的淘宝核心系统果然实现了零故障。

     

    这段时间,阿里云也迎来了两个变动:

     

    2012年秋天,林晨曦赴约去创业。提及过往,他如此回忆:“阿里云的四年,像是过完了一辈子。以后的事情,都是下辈子的。”他和朱珑创立了依图科技,如今是人工智能领域最炙手可热的公司之一。

     

    2014年秋天,胡晓明来了。这个当年去王坚办公室“上访”的热血青年,陪着阿里云走过了最漫长艰难的岁月。也正因如此,此时他比任何人都更坚信云计算的力量。

     

    2015年7月22日,云栖大会北京峰会开幕。新的领导团队第一次在公众面前露面。

     

    胡晓明任阿里云总裁。李津扛起产品研发,在淘宝网鼎力帮助阿里云的小邪作为技术顾问。等等等等。

     

    名单里没有王坚。王坚知道,当有人能比他更好地带领阿里云前进的一刻,就是他放手的时候了。

     

    这个老男孩,此时静静坐在时光的河岸边,痴痴傻笑。梦回少年,肝胆皆冰雪。

     

    九、另一个奇迹

     

    在阿里巴巴的云栖小镇,一尊雕像被竖立起来,雕像上只有两个字:“飞天”。

     

     

     

    飞天雕塑,上面刻着飞天团队所有工程师的名字,无论 Ta 是不是仍然在团队。

     

    之前有人无心说的那句“没准将来我们成功了,我们写的飞天第一行代码还能印在T恤上呢!”也成为了现实。

     

     

    2018年现任阿里云产品总监何云飞身上就穿着“第一行代码T恤”

     

    2013年,中国企业IT架构升级最好的解决方式,再也不是买来一台新的机器替代掉原有机器,而是采用云计算。

     

    从这一刻开始,这些疯狂的技术宅才有了服务全世界企业的信心;也正是从这一刻开始,坐镇第一把交椅的传奇总裁胡晓明,带领阿里云进入了“攻城掠地”的时代。

     

    中国的网站登录阿里云的比例,从20%,上涨到30%,上涨到40%,上涨到50%。全球19个地域,两百多个飞天数据中心顺次点亮。

     

    每个季度,阿里云都保持同比增长100%,这样逆天的增长速度持续了12个季度。

     

    2018年初的云栖大会上,在一幅硕大的市场曲线图面前,胡晓明抬起右手,这一秒,时间像是凝固了一般。

     

    同一年,飞天云计算操作系统获得了一个特别的奖项——中国电子学会15年以来的第一个特等奖。

     

     

     

    在芯片领域,我们面对美国垄断只得眼睁睁地沉默; 

     

    在操作系统领域,我们面对美国的背影只能艰难追赶;

     

    但是在云计算这片土地上,从王坚带着一群理想主义者横空出世,到胡晓明把商业战场拉至和亚马逊的 AWS 同一级别。中国人用了十年时间造出的全球第三、亚洲第一的阿里云,不说和美国战为和棋,至少在世界的版图上夺下了堪称广袤的一片疆土。

     

    如此,阿里云的疯子们,理应赢得光芒和荣耀。

     

    创业维艰,唯有曾和死神擦肩而过的人,余生才会用十倍的速度奔跑。

     

    2018年,当年为阿里云对接淘宝立下汗马功劳的小邪正式加入了阿里云,掌管“飞天八部”,阿里云所有的现役主力技术和前沿技术,都归至他麾下。

     

     

    小邪:蒋江伟

     

    小邪手中的弹药充足:

     

    2017年发布的神龙云服务器,是对下一代云计算主机的探索。

     

    同年发布的 POLARDB,剑指商业数据库 Oracle 和它的继任者 MySQL,也称得上是阿里云未来之星。

     

    2018年初,飞天的分布式存储系统“盘古”升级到了 2.0,成为阿里巴巴统一存储平台。

     

    2018年秋天的云栖大会上,唐洪、小邪、何导等阿里云大咖悉数登场,发布了飞天2.0。敢称 2.0,是因为他们把野心放到了“万物互联”的下一个20年。

     

    如此尝试和未来对话的技术还有很多。

     

    此刻的阿里云,手握历史上最好的一把牌。

     

    十、尾声

     

    不久前,王坚受央视《朗读者》节目邀请,回忆了阿里云的创业史。他平静地说:“阿里云是拿命换来的。”

     

     

     

    能用命换来梦想,未尝不是幸事。

     

    君不见,在无数个平行世界中,疯人院里的麦克墨菲最终都越狱失败,被医生切去前额叶,再无还手之力。

     

    一群理想主义者的长征路上,一片落叶微微改变飞舞的方向,都有可能把他们引向另一个方向,另一种结局。如果重来一次,阿里云也许无法复现今天的疆域和荣耀。但历史没有假设,可叹阿里云这群人从第一天就无来由地相信,中国人有权拥有自己的云计算。

     

    以身为棋,胜天半子。

     

    阿里云的创业故事走到了封底。书中悲欢离合,凡此种种,也许只博看客一叹。只有那些经历过这一切的活生生的人,才能在时间的风尘里,循着自己的脚印依稀辨别来路。

     

    而那些走散的人呢?

     

    他们也许会在某个秋日回忆起和伙伴同行的日子,心怀感念;他们也许有了新的忙碌的生活,来不及回望;他们也许偶然翻到新闻,看到那年王坚的滚滚热泪;他们也许在饭桌上谈笑风生,聊到当时的兄弟,忽然抬眼望向远方,干掉一杯烈酒。

     

    我想起一个小故事。

     

    在最初面试时,有一个大牛程序员和满弓聊过之后,本想再考虑考虑是否入职。但是出门时,他看到了阿里云办公室上的一副对联,原地思考了几秒钟,转身决定马上加入。

     

    那副对联是这样写的:

     

    代码成就万世基积沙镇海

    梦想永在凌云意意气风发

     

    任何执拗都会成为过往,只有时间会告诉你对错。

     

    人们总爱说一句话:认真你就输了。而我更相信另一句话。认输,你才真的输了。

     

    文章转载自公众号:浅黑科技(ID:qianheikeji),版权归原作者 史中 所有,如有侵权请联系我删除,联系邮箱:bianhao07@outlook.com

     

    展开全文
  • 转载自:... 一.SD/MMC卡介绍 ... 1.1.什么是MMC卡  MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量

    转载自:http://bbs.elecfans.com/infocenter.php?mod=space&uid=701087&do=blog&id=224468


    一.SD/MMC卡介绍

      1.1.什么是MMC卡

      MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。

      1.2.什么是SD卡

      SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展而来,增加了两个主要特色:SD卡强调数据的安全安全,可以设定所储存的

      使用权限,防止数据被他人复制;另外一个特色就是传输速度比2.11版的MMC卡快。在数据传输和物理规范上,SD卡(24mm*32mm*2.1mm,比MMC卡更厚一点),向前兼容了MMC卡.所有支持SD卡的设备也支持MMC卡。SD卡和2.11版的MMC卡完全兼容。

      1.3.什么是SDIO

      SDIO:SDIO是在SD标准上定义了一种外设接口,它和SD卡规范间的一个重要区别是增加了低速标准。在SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开销支持低速IO能力。

      1.4.什么是MCI

      MCI:MCI是Multimedia Card Interface的简称,即多媒体卡接口。上述的MMC,SD,SDI卡定义的接口都属于MCI接口。MCI这个术语在驱动程序中经常使用,很多文件,函数名字都包括”mci”.

      1.5.MMC/SD/SDIO卡的区别

      二.SD/MMC协议与命令

      1.SD/MMC卡相关寄存器

      SD卡内部有7个寄存器.其中OCR,CID,CSD和SCR寄存器保存卡的配置信息;RCA寄存器保存着通信过程中卡当前暂时分配的地址(只适合SD模式);卡状态(Card Status)和SD状态(SD Status)寄存器保存着卡的状态(例如,是否写成功,通信的CRC校验是否正确等),这两个寄存器的内容与通信模式(SD模式或SPI模式)相关.MMC卡没有SCR和SD Status寄存器.如下表1所示:

      表1 SD卡内部7个寄存器

      1.1.OCR寄存器

      OCR寄存器保存着SD/MMC卡的供电电允许范围.如下表2所示:如果OCR寄存器的某位为1,表示卡支持该位对应的电压。最后一位表示卡上电后的状态(是否处于”忙状态”),如果该位为0,表示忙,如果为1,表示处于空闲状态(MMC/SD协议P60)。

      表2 OCR寄存器

      1.2.CID寄存器

      CID为一个16个字节的寄存器,该寄存器包含一个独特的卡标识号。如下表3所示:

      表3 CID寄存器

      1.3.CSD寄存器

      CSD寄存器(卡特殊数据寄存器)包含访问卡存储时需要的相关信息。如下表4所示:

      表4 CSD寄存器

      1.4.SCR寄存器

      SCR寄存器提供SD卡的特殊特性信息,其大小为64位。该寄存器由厂商编程,主机不能对它进行编程。MMC卡没有SCR。如下表5所示:

      表 5 SCR寄存器

      1.5. RCA寄存器

      该16位卡地址寄存器保存了在卡识别过程中卡发布的器件地址。该地址用于在卡识别后主机利用该地址与卡进行通信。该寄存器只有在SD总线模式下才有效。

      二. SD卡的引脚图

      三.SD卡的命令

      3.1.SD卡的命令格式:

      SD卡的指令由6字节(Byte)组成,如下:

      Byte1:0 1 x x x x x x(命令号,由指令标志定义CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)。

      Byte2-5:Command Arguments,命令参数,有些命令没有参数。

      Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0。

      3.2. SD卡的命令

      SD卡命令共分为12类,分别为class0到Class11.

      3.2.1. Class0 :(卡的识别、初始化等基本命令集)

      CMD0:复位SD 卡。

      CMD1:读OCR寄存器。

      CMD9:读CSD寄存器。

      CMD10:读CID寄存器。

      CMD12:停止读多块时的数据传输。

      CMD13:读 Card_Status 寄存器。

      3.2.2.Class2 (读卡命令集):

      CMD16:设置块的长度。

      CMD17:读单块。

      CMD18:读多块,直至主机发送CMD12为止 。

      3.2.3.Class4(写卡命令集) :

      CMD24:写单块。

      CMD25:写多块。

      CMD27:写CSD寄存器 。

      3.2.4.Class5 (擦除卡命令集):

      CMD32:设置擦除块的起始地址。

      CMD33:设置擦除块的终止地址。

      CMD38: 擦除所选择的块。

      3.2.5.Class6(写保护命令集):

      CMD28:设置写保护块的地址。

      CMD29:擦除写保护块的地址。

      CMD30: Ask the card for the status of the write protection bits

      class7:卡的锁定,解锁功能命令集。

      class8:申请特定命令集 。

      class10 -11 :保留。

      3.3.SD卡的工作流程

      首先看下脱离操作系统如何在ARM处理器上实现SD卡的读写。过程可以分为3个大的步骤:初始化sd卡、写sd卡、读sd卡。

      3.3.1.工作条件检测

      卡在识别模式下的命令流程如图3.1所示(英文版见标准SD卡协议P24)

      图3.1 卡在识别模式下的命令流程

      1)在主机和SD卡进行任何通信之前,主机不知道SD卡支持的工作电压范围,卡也不知道是否支持主机当前提供的电压。因此主机首先使用默认的电压发送一条reset指令(CMD0)。

      2)为了验证SD卡的接口操作状态,主机发送SEND_IF_COND(CMD8),用于取得SD卡支持工作的电压范围数据。SD卡通过检测CMD8的参数部分来检查主机使用的工作电压,主机通过分析回传的CMD8参数部分来校验SD卡是否可以在所给电压下工作,如果SD卡可以在指定电压下工作,则它回送CMD8的命令响应字 。如果不支持所给电压,则SD卡不会给出任何响应信息,并继续处于IDLE状态。

      3)在发送ACMD41命令初始化高容量的SD卡前,需要强制发送CMD8命令。强制低电压主机在发送CMD8前发送ACMD41,万一双重电压SD卡没有收到CMD8命令且工作在高电压状态,在这种情况下,低电压主机不能不发送CMD8命令给卡,则收到ACMD41后进

      入无活动状态。

      4)SD_SEND_OP_COND(ACMD)命令是为SD卡主机识别卡或者电压不匹配时拒绝卡的机制设计的。主机发送命令操作数代表要求的电压窗口大小。如果SD卡在所给的范围内不能实现数据传输,将放弃下一步的总线操作而进入无活动。操作状态寄存器也将被定义。

      5)在主机发出复位命令(CMD0)后,主机将先发送CMD8再发送ACMD41命令重新初始化SD卡。

      3.3.2.卡的初始化和识别处理

      当总线被激合后,主机就开始卡的初始化和识别3处理。初始化处理设置它的操作状态和是设置OCR中的HCS比特命令SD_SEND_OP_COND(ACMD41)开始。HCS比特位被设置为1表示主机支持高容量SD卡。HCS被设置为0表示主机不支持高容量SD卡。

      卡的初始化和识别流程见图3.2

      图 3.2卡的初始化和识别流程

      3.3.3.数据传输模式

      卡在识别模式结束后,主机时钟fpp(数据传输时钟频率)将保存为fod(卡识别模式下的时钟),由于有些卡对操作时钟有限制。主机必须发送SEND_CSD(CMD9)来获得卡规格数据积存器内容,如块大小,卡容量。广播命令SET_DSR(CMD4)配置所有识别卡的驱动阶段。它对DSR积存器进行编程以适应应用总线布局,总线上的卡数目和数据传输频率。

      SD卡数据传输模式的流程图(英文版协议P26)如图3.3所示

      图3.3 SD卡数据传输模式的流程图

      1)CMD7命令用来选择某个SD卡,使其进入Transfer状态,在指定时间段内,只有一个卡能处于Transfer状态。当某个先前被选中的处于Transfer状态的SD卡接收到CMD7之后,会释放与控制器的连接,并进入Stand-by态。当CMD7使用保留地址0x0000时,所有的SD卡都会进入Stand-by状态 。

      2)所有的数据读命令都可以被停止命令(CMD12)在任意时刻终止。数据传输会终止,SD卡返回Transfer状态。读命令有:块读操作(CMD17)、多块读操作(CMD18)、发送写保护(CMD30)、发送scr(ACMD51)以及读模式下的普通命令

      (CMD56)。

      3)所有的数据写命令都可以被停止命令(CMD12)在任意时刻终止。写命令也会在取消选择命令(CMD7)之前停止。写命令有:块写操作(CMD24,CMD25)、编程命令(CMD27)、锁定/解锁命令(CMD42)以及写模式下的普通命令(CMD56)。

      4)数据传输一旦完成,SD卡会退出数据写状态,进入Programming状态(传输成功)或者Transfer状态(传输失败)。

      四.Linux中SD/MMC设备驱动流程

      4.1.MMC子系统的基本框架

      4.1.1.MMC子系统的代码在kernel/driver/MMC下面,目前MMC子系统支持一些形式的记忆卡:SD,SDIO,MMC。

      4.1.2.HOST:针对不同主机的驱动程序,这一部分需要根据自己的特定平台来完成。

      4.1.3.CORE:这是整个MMC的核心层,这部分完成了不同协议和规范的实现,并且为HOST层的驱动提供接口函数。

      4.1.4.CARD:因为这些记忆卡都是块设备,当然需要提供块设备的驱动程序,这部分就是实现了将SD卡如何实现为块设备的。

      4.1.5.各层之间的关系

      4.2.重要的结构体

      4.2.1. struct mmc_host 用来描述卡控制器位kernel/include/linux/mmc/host.h下面。

      4.2.2.struct mmc_card 用来描述卡位于kernel/include/linux/mmc/card.h下面

      4.2.3.struct mmc_driver 用来描述mmc卡驱动在kernel/include/linux/mmc/card.h下面。

      4.2.4.struct mmc_host_ops用来描述卡控制器操作集,用于从主机控制器向core层注册操作函数,从而将core层与具体的主机控制器隔离。也就是说core要操作主机控制器,就是这个ops当中给的函数指针操作,不能直接调用具体主控制器的函数。

      位于kernel/include/linux/mmc/host.h下面。

      2.5.struct mmc_ios用于描述了控制器对卡的I/O状态。位于kernel/include/linux/mmc/host.h下面。

      4.2.6.struct mmc_request用于描述读写MMC卡的请求,它包括命令,数据以及请求完成后的回调函数。位于kernel/include/linux/mmc/core.h中。

      4.2.7.struct mmc_queue是MMC的请求队列结构,它封装了通用请求队列结构,加入了MMC卡相关结构。位于kernel/drivers/mmc/card/queue.h中。

      4.2.8.struct mmc_data描述了MMC卡读写的数据相关信息,如:请求,操作命令,数据以及状态等。位于kernel/include/linux/mmc/core.h中。

      4.2.9.struct mmc_command描述了MMC卡操作相关命令及数据,状态信息等。位于kernel/include/linux/mmc/core.h中。

      4.3.host,core以及card之间的关联和处理流程

      4.3.1总体的流程如下图所示

      4.3.2.数据.命令的处理流程在代码分析那里会仔细分析

      4.4:核心任务

      MMC/SD卡的驱动整个构架由三个文件组成,其实一共就做了两件事件:

      1).卡的检测。

      2).卡数据的读取。

      4.4.1.卡的检测中涉及到的函数

      tcc_mmc_probe(host/tcc_sdhc.c)

      mmc_alloc_host(core/core.c)

      mmc_rescan(core/core.c)

      mmc_attach_mmc(core/mmc.c)

      mmc_init_card(core/mmc.c)

      mmc_add_card(core/bus.c)

      device_add

      mmc_bus_match(core/bus.c)

      mmc_bus_probe(core/bus.c) mmc_blk_probe(card/block.c)

      alloc_disk/add_disk

      4.4.2.卡中数据读写涉及到的函数

      mmc_blk_issue_rq(card/block.c)

      mmc_wait_for_req(core/core.c)

      mmc_start_request(core/core.c)

      host->ops->requset(host,mrq)

      //tcc_sdhc.c中的tcc_mmc_request

    展开全文
  • 什么不哭的时候不我带娃 娃哭的时候,就立马我来带娃

    镇平路地铁站到了,上来很多人,大部分都是30岁左右的小伙伴,他们有说有笑,唯独一个灰色夹克男子精神比较疲惫,站在外围,没有参与聊天,然后一个观察仔细的橙色皮衣男就关心的问他:“怎么了,身体不舒服还是昨天晚上没有睡好?”

    灰色夹克男子回到:“昨天晚上被娃娃闹的,哄了好久,没有睡好。”

     

    橙色男子问:“娃娃苦恼的时候,妈妈哄不是效果比较好嘛?”

     

    灰色夹克男子无奈说道:“是呀,可是娃她妈,苦恼的时候,娃需要抱,她抱了3分钟,就找我了,你说我这是不是命苦啊,娃娃不闹的时候开心的时候,娃她妈妈和娃她外婆跟娃娃一起玩乐,总是等娃苦恼了心情不好了,就丢给我,让我想办法。白天还好,半夜闹觉了,也找我,昨天晚上实在忍不住了,质问他们为啥总是不哭的时候不叫我带娃,苦恼的时候叫我,难道就是因为我脾气好,欺负老实人嘛,结果你猜我老婆怎么怼我的?”

     

    橙色男求知欲暴崩,赶紧问道:“怎么怼你的,难道是说你赚钱太少,不对呀,你都经理了,待遇不少啊”

     

    灰色夹克男尴尬的说道:“跟这个有点关系,但是关系也不大,我老婆怼我的是,岳母免费整体带娃,晚上当然得休息好,不休息好,白天谁带?况且周末白天也是岳母带的。”,灰色夹克南顿了顿,继续说道:“我老婆说为了满足我儿女双全的梦想,所以她以后可能得B超后人流,所以现在要好好养身体,那么半夜就得尽量休息好。没办法,孩子爷爷奶奶传统观念比较重,我倒是无所谓的,只是父命难为!”

     

    橙色男子说:“你这个情况倒也是的,蛮特殊”

     

    灰色夹克男子:“所以我昨天嘿嘿的笑了几下,又乖乖的去哄娃娃睡觉去了!是男人就得抗起来嘛”

     

    橙色男子竖起大拇指,给他点了个赞!

     

    展开全文
  • 我眼中的云---为什么叫“云”计算

    千次阅读 2011-11-04 14:48:59
    不过,我们还是去看看什么叫“云”,毕竟也还有些意思,而且也可以减少一些概念神秘度,不过这种来历多少带有一定的野史色彩,大家不要较真,娱乐娱乐而已。为什么叫云计算呢?云计算用户提

    我们都大概知道了云计算的内涵,但为什么这样的计算不叫A计算或者B计算呢?集群计算,网格计算,效用计算,公用计算都能从字面上就很好的理解,而云计算能从字面上怎么理解呢?其实有些概念,有些叫法,真的去深究,也没什么大的意义。不过,我们还是去看看为什么叫“云”,毕竟也还有些意思,而且也可以减少一些概念神秘度,不过这种来历多少带有一定的野史色彩,大家不要较真,娱乐娱乐而已。为什么叫云计算呢?云计算向用户提供按需租赁(配置)的服务,有一个家伙(不是贬义,而是褒奖),向客户或者什么人讲解的时候,将云计算提供服务的部分,用一些不规则的线条,画成一朵云把这部分包含起来,这部分看起来就像一朵云图,估计这朵云画得还很美,所以后来干脆就把这种计算体系结构叫做云计算。云里包含了提供服务的体系结构,而云外是需要服务的客户(其它云)。云计算就是这样来的,很高深吧?很概念吧?我刚开始接触云计算的时候,也曾经感觉云里雾里,知道了就是会心一笑,其实画这个图,取这个名的人们还是有些浪漫色彩的,否则当时画个圆或者正方形,就叫圆计算和方形计算了,不过这样也许会更云里雾里。而后来很多文章在介绍云计算的时候,很少会讲这些带有野史色彩的取名来历,加上云给人的想象空间很大,自然就使得这个概念有些神秘化了。不过仔细想想,云计算这个名还是取得很有意思的,大家知道,云就是那种你知道存在,但很难知道里面是什么,很轻灵,很虚幻,而且漂浮不定,若隐若现,到处可以移动,这些给人的感觉其实也暗示了云计算的一些特征,比如虚拟化,很强的移动性,可扩展性,灵活性等。其实对于客户而言,他也不需要了解这种计算服务的里面到底有什么,他只需要知道它可以带来所需要的雨或者阴凉(服务)。

    云计算,一个形象且不失浪漫,轻灵飘逸的名字,看来IT界也不都是技术狂,还是有才子佳人的噻。它让我想起了一首歌--天上有朵雨做的云

    PS:云计算的来历其实就是这样随意而不失为浪漫,但后面的关联解释,是我自己的理解和感觉。至于原来命名时他们想没想到这些,已经无关紧要,大家就当娱乐小说来看吧。

     

     

    展开全文
  • 几何为什么叫几何

    千次阅读 2017-03-16 22:37:17
    “几何”名称的由来——科学家徐光启 学过数学的人,都知道它有一门分科作“几何学”,然而却不一定知道“几何”这个名称是怎么来的。在我国古代,这门数学分科并不“几何”,而是作“形学”。“几何”二字,...
  • 什么叫大数据 大数据的概念

    万次阅读 多人点赞 2017-05-31 20:23:06
    分析需要像MapReduce一样的框架来数十、数百或甚至数千的电脑分配工作。 大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模 并行处理 (MPP) 数据库 、数据...
  • 什么叫云计算?云计算通俗解释

    万次阅读 2018-08-17 10:42:09
    仔细给您解释云计算的概念可能比较抽象,我给您举几个云计算的应用实例吧。 第一是webQQ,你访问webqq的时候就会发现这里面有很多像是图片处理,网页浏览,在线office处理之类的应用,这些应用无论你电脑的性能如何...
  • 什么叫句柄(Handle)?

    万次阅读 2017-03-06 22:27:00
    说,尽管windows头文件把它定义成指针,但如果你仔细检查这些句柄的值,它根本 就不像指针,这也是为什么我说它只是一个32位无符整数值的原因。对句柄就是指 针的情况,这句话也仍然适用。让我们随意地生成一些...
  • 如果有人问你数据库的原理,这篇文章

    万次阅读 多人点赞 2016-05-04 23:03:08
    本文由 伯乐在线 - Panblack 翻译,黄利民 校稿。未经许可,禁止转载! 英文出处:Christophe Kalenzaga。欢迎加入翻译组。...你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【...
  • K线为什么叫“K”线

    千次阅读 2007-03-27 15:49:00
    K线,又称阴阳烛,起源于300多年前的日本,当时日本粮食市场上有一位本间宗久的商人为了能够预测米价的涨跌,他每天仔细地观察市场米价的变化情况,以此来分析预测市场米价的涨跌规律,并将米价波动用图形记录下来...
  • 什么叫域?域 系 windows NT / 2000 活动目录的核心单元,系 计算机、用户等对象的容器,而域内的对象有相同的安全需求、复制过程和管理。 如果想有建立一个域,首先要有一台机安装活动目录,成为域控主机。 我理解...
  • 如果了这篇文章你还不懂傅里叶变换,那就过来掐死我吧  Heinrich,生娃学工打折腿 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学...
  • 前后端角度接口(什么是json)?

    万次阅读 多人点赞 2020-01-01 16:54:25
    什么是JSON?
  • 一、什么是原型 原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。 1.1 函数的原型对象 ​ 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那么浏览器就会在内存中创建一个对象B...
  • Java NIO?这一篇就够了!

    万次阅读 多人点赞 2019-04-30 17:10:31
    你的关注意义重大! ✎前言 现在使用NIO的场景越来越多,很多网上的技术框架或多或少的...在前面2篇文章《什么是Zero-Copy?》和《NIO相关基础篇》中我们学习了NIO的相关理论知识,而在本篇中我们一起来学习一下Ja...
  • 一名合格的程序员应该是什么样子

    万次阅读 多人点赞 2019-06-28 10:01:05
    这句话挺伤人的,尤其是对于高考失利的妹妹来说,她听完我的话,立马就哭了起来,情绪非常激动,质问母亲为什么要打电话告诉我(玻璃心)。 我参加高考了两次,两次都离二本差了 6 分,最后不得已上了大专——当时也...
  • AGI:走向通用人工智能的【哲学】之现实世界的虚拟与真实——带你回1998年的经典影片《The Truman Show》感悟“什么是真实” 导读:今天写的这篇文章,完全是来自于昨天和几位好友一块聚餐,谈到了很多的AI与哲学...
  • 用sql演示脏读,不可重复读,幻读,不怕你不懂

    千次阅读 多人点赞 2019-11-22 13:53:13
    介绍 要聊事务,不可避免的要提到数据库...先放一个表格,看看4个隔离级别会出现的各种问题,网上的解释一大堆。完后还是一脸蒙蔽,感觉懂了,又好像没懂。因为没有具体的演示例子,索性自己尝试复现这几个问题...
  • 应届生必的职场建议

    万次阅读 多人点赞 2019-07-04 07:30:22
    应届生必的职场建议前言职业发展学习方法篇为人处事篇情绪管理篇 前言 最近这段时间,帮很多准应届生、应届生、毕业3年内的小伙伴解答过很多疑惑。我耐心地看着他们发给我的个人经历与面临的问题,悉数为他们提供...
  • 工作十年,分享过的优质 Java 书籍

    万次阅读 多人点赞 2019-12-13 10:38:32
    什么在网上都不到这本书的消息呢?因为改名了,而且只有电子版。 这本书的所有源代码已经开源在 GitHub,传送门: https://github.com/BruceEckel/OnJava8-Examples 如果英语水平像我一样菜,英文版...
  • 在软件领域,说到“建模”,就会蹦出各种各样的名词:面向对象建模、业务建模、领域建模、UML建模、ER实体建模、4色建模法、DCI。...但仔细一深究,又是到处漏洞,图不能完全表达义务语义,“华而...
  • 我用到了路由器的无线桥接功能经过验证,...手把手教你设置无线路由器桥接模式 今天晚上在家里面弄了一下无线路由器的桥接模式 刚开始自己也想不通 这个桥接模式要如何来设置 到 百度上面找了好多的设置方法 
  • Java是什么?Java到底能干嘛?

    万次阅读 多人点赞 2019-11-15 08:30:00
    我刚开始学习Java的时候,很长一段时间都有这么个疑惑?Java到底是啥?它能干什么?自己也过不少的课程和书,大部分都是从Java的发展史开始讲,总之就是那些什么Jav...
  • 附:跑活水去除肉腥味的方法绝大部分的人是用葱,姜,酒来处理可是请仔细想想,那只是压味而已压赢了,肉味也没了;压输了,更臭。那高级餐厅里的肉是怎么去腥?找一口大锅,装满冷水。将生的猪肉略冲洗后放入,置于...
  • 猫大一声,主人被惊醒,老鼠被下跑。用C#实现这个过程。该题目经常被C#.net面试中设计成重要面试设计题,不管是用C#实现该过程还是抽象成一个game原型,仔细想想这个场景是不是跟老板监视办公室员工玩游戏类似,...
  • 第一种人就是刚刚进入企业的人,头5年千万不要说你能不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……" 人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从...
  • 作者庆幸自己仔细阅读文本没花冤枉钱,可是并非所有人都能做到这么仔细。 如此精心设计的骗局,步步为营诱你上钩,每月产生8万美元的收入一点也不奇怪。只要200人上钩,每月8万美元,一年就是96万美元。由于苹果...
  • 三流大学和一流大学学生的简历有什么区别?

    万次阅读 多人点赞 2020-09-23 09:17:06
    傻瓜,我先给你们看看几个我收到的简历名字(同样是来自公司绯闻女友的吐槽) image-20200912113652168 简历只用你名字命名没有任何意义,很多人更过分直接就简历两个字,或者一串乱码,这种肯定会被hr拉入人才库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,732
精华内容 58,292
关键字:

向仔细看叫什么