• 大数据时代下半场:数据治理、驱动与变现(txt+pdf+epub+mobi电子书下载)|百度网盘下载

  • 嵌入式Linux驱动模板精讲与项目实践(txt+pdf+epub+mobi电子书下载)|百度网盘下载

  • 大数据时代下半场:数据治理、驱动与变现(txt+pdf+epub+mobi电子书下载)|百度网盘下载

  • 群响流量大课:进入利润驱动时代价值1999元(完结),百度网盘,阿里云盘下载

    群响生产的群响流量课程:进入利润驱动时代官网售价1999元。229个案例讲解如何赚钱,以下是课程简介:刘思毅老师讲的流量的2021与2022年:课程内容主要是关于抖音平台大事记流量的变化?谁真的赚了很多钱?10个值得深入复习的案例,10个值得深入交易的交易员和1000W利润红利清单烟囱老师讲的烟囱:细分品类精准分析私域转化=净利润1000万的故事:主要讲一个小老板3年赚1000万的年利润路线图,三个我亲自参与交易的1000万净利润项目盘点,一条通往1000万净利润的个体户之路。刘思毅老师讲的IP、如何获得5000万社区和私域?:主要内容IP私域流量模式:「内容」在「渠道」中「流动」、群响从О对于数千万的业务技能盘点,值得借鉴复盘的精细操作案例和群响案例,可以复制讨论。孙永华老师讲的如何用1V1SVIP制的改进方法LTV和客户单价:孙永华说实话:5%的客户贡献了80%的销售额。残忍而真实。SVIP是利润的主流,是现金的主流。请孙先生谈谈他们的千人销售团队如何服务SVIP客户的课程内容包括:如何使用SVIP系统改进客户LTV、如何精细化1V1如何管理千人销售团队,实现聊天的高效转型。羁绊老师讲的:如何经营赚钱的直播间?:课程的主要内容是如何开设直播间的业务。一个月赚1000万经理的直播间必须具备商业闭环能力、交付能力、短视频创作能力、商务八大能力BD能力,复盘迭代能力,团队搭建能在021年真正赚钱的直播间门。网络名人校长主讲如何规划爆款选题,用IP抖音上亿的播放量:网络名人校长是创始人IP领军人物孵化了1000多名知识网络名人,个人单场直播实现了300万。为什么请他结束?我一直认为个人IP它可以创造一种新的企业收入模式。网络名人校长可以利用他强大的热门话题选择能力,让你在抖音上获得数亿的播放和实现。课程主要讲解椅子背后的故事以及如何成为创始人IP?我孵化的1000名只是网络名人,聊短视频的实现!文章底部有课程目录和下载链接。群响流量大课:进入利润驱动时代视频截图课程目录:群响流量课:进入利润时代Ze:为何私域?如何私域?刘思毅:IP、如何获得5000万社区和私域?刘思毅:2021年和2022年的流量孙永华:怎么用?1V1SVIP制的改进方法LTV和客户单价张洋:不走弯路,抖音怎么赚钱?烟囱:细分品类精准分析私域转化=净利润1000万的故事网络名人校长:如何策划爆款选题,用IP抖音上亿的播放量羁绊:如何经营赚钱的直播间?相关下载点击下载...

    2022-04-04 私域直播间app 直播间

  • 大数据时代下半场:数据治理、驱动与变现(txt+pdf+epub+mobi电子书下载)|百度网盘下载

    作者:(德)罗纳德·巴赫曼,吉多·肯珀,托马斯·格尔策出版社:北京联合出版公司格式:AZW3,DOCX,EPUB,MOBI,PDF,TXT大数据时代下半场:数据治理、驱动与变现试读:前言大数据是除“云计算”“移动”“内存”和“社会媒体”之外决定当前IT行业趋势的一个关键词。我们可以确定的是,大数据与商业智能不同,不仅在企业经济中,而且在总体社会环境中都具有重要意义,对于这一点我们可以从大数据成功登上政治刊物《明镜》周刊头版(参见:Schulz,2013)和其在电视脱口秀节目如《贝克曼》(Beckma,德国脱口秀节目)中成为讨论主题的事实中得见。该主题在全社会的重要性,特别是它们的产生在大数据环境中会对企业及其行为模式产生影响。商业智能与大数据的联系,我们将在后面深入探讨。大数据时代上半场的主要任务是收集数据,但是在下半场时,企业的主要任务由收集数据逐渐地向数据治理、数据驱动及数据变现等方向转换。在企业中,随着可用信息不断增加,不难猜想,市场营销和销售都在追求更好地了解客户并提供个性化服务的目标,然而没有大数据,这个目标便是天方夜谭(参见:Blochig,Luck&Ramge,2012)。企业内部基本赞成追求该目标,通过实时处理大量数据,几年前不能实现的应用也能够成为现实。在涉及应用实例及描述其经济潜力时,这种幻想似乎没有任何限制。大数据这个词就像“21世纪的石油”,广泛流传。但是大数据真的会给我们带来“美好的新世界”吗?我们的期望能够在多大程度上得到实现?机遇背后存在着哪些挑战?技术可行性会一直都有意义吗?哪些技术投资是必不可少的?人们可以预期的投资回报率(ROI)有多少?事实上,我们需要付出代价来换取大数据提供给我们的机遇——这种代价不仅仅是货币形式。此外,大数据的重要意义也随着我们每个人的角色不同而不同。我们一直参与其中,尽管大数据和我们知道与否、愿意与否并不相关,但是作为公民、客户、企业员工及互联网、智能手机、导航设备的用户,大数据对于我们具有何种意义?在这个网络化的世界里,我们既是大数据的创造者,同时也是使用者,我们自己如何参与“大数据现象”,这会产生何种结果?面对“大数据—老大哥”的联合,政治会扮演什么样的角色?在与数据打交道时,公司又会在国际上提出怎样的“游戏规则”?大数据不仅仅代表了大量的数据,而且更多地反映了各个生活领域已经广泛数字化,即“数字化世界”所推动的社会变革,以及由此给社会文化带来的深远影响。大数据给社会造成的变化任何人都不可能否认,因此,积极阐释大数据是不可避免的。大数据的复杂性需要一本结构清晰的书来进行分析,这样一方面可以把握其复杂性,另一方面也可以清楚地描述每个层面。因此,我们一直在努力,合理划分内容,并根据章节的逻辑结构处理我们目前所关注的相互关系。我们意识到,这个主题还可以通过其他出发点或者结构进行研究,尤其是当我们选择了另一个中心时。企业和全社会层面紧密连接,我们所有人都扮演着公民、顾客和企业员工的不同角色,这一点我们在第一章中有详细的描述。因此,之后指向企业层面的内容将以通俗易懂的语言进行论述。有了这一论点,我们就应该承认这一事实:我们所有人必须广泛掌握“大数据”和“数字化世界”之间复杂的相互关系,以便迎接21世纪中心话题的挑战。在此过程中,我们应该抛下自己的安乐窝,抛弃习惯的行为做法和思维模式,主动承担责任,因为这是在集体和个人层面起决定性作用的成功要素。这一认识使得大数据成为了一个非常吸引人的话题。罗纳德·巴赫曼吉多·肯珀托马斯·格尔策2014年1月引言引言内容●主题引入●通用概念和定义阐释●大数据现象”●大数据的自身动力我们都是“大数据”对于大数据的概念,迄今尚未有通行的固定定义,然而一些人尝试将该现象解释为极大的、呈指数型增长的数据量,有多层次的特点和特定背景。关于大数据的设想依旧处于模糊状态。这一事实使人明晰,我们并不能明确知道大数据对于个人、企业及全社会的现实意义,只有一种“翘足而待”的氛围盛行于世,全球各种社区都在想象着大数据时代的情形,并且期待利用大数据创造各种可能。在对“大数据究竟具体是什么”及“人们想要如何对待大数据”等问题的设想逐步建立的同时,该主题也在一并发展。更确切地说,前者常常落后于后者的发展。这是因为致使“大数据现象”出现的科技和社会变革不断地发展,使它有了更多的动力。现在基本可以确定的是:1.“大数据现象”是存在的。2.我们在生活的不同角色中都受到大数据的影响,没有人能够摆脱这种影响——即使关闭或不再使用科技设备。3.“大数据现象”假设了一种不受人操控的自身动力。4.我们需要理解这种自身动力的作用机制,以便利用现存的机会,规避潜在的危险。一些人在这里也许已经觉察到,他们多年来已经将大数据进行了技术转换,至少在专家看来,如今IT基础设施和企业生产过程中大量数据的合并已属常规。那么是什么使大数据如此新颖且无法估测?答案便是纯技术层面很少涉及大数据,并且无法正确对待这一多层次的主题。帕蒂尔(D.J.Patil)是旧金山格雷洛克风投公司(GreylockParter)的首席数据科学家,2011年在著名的数据科学家福布斯排行榜中名列第二,仅次于Google创始人拉里·佩奇(LarryPage)。他在慕尼黑数字生活设计大会(DLDCoferece)上引用了美国杜克大学心理学和行为经济学教授丹·艾瑞里(DaAriely)的话:大数据的话题就像青少年时期的性,每个人都在谈论,但没有人真正知道它究竟是什么。所有人都在想:其他人在做这件事;每个人都宣称:自己也要做这件事。帕蒂尔在他接下来的讲话中提出了大数据的重要挑战:它涉及的是,在数据大杂烩中辨识典型,并正确阐释。我们自己现在便是一个数据产品。帕蒂尔所说的“辨识典型,并正确阐释”已经暗示,我们没有做到在纯技术、纯理性的基础上持续自动地分析数据,并由此取得高质量的成果。这更多涉及辨识和阐释,也就是分析,这种分析的对象便是我们自己。正如帕蒂尔所说,“我们自己现在便是一个数据产品”,大数据时代,一切都围绕着这个产品转,或者更确切地说,是大数据使我们变成了这个产品。在欧盟倡议的“互联网安全日”上,德国食品和农业部及德国信息技术、电信和新媒体协会的专家在柏林讨论了一个问题:“大数据——金矿还是炸药?”企业和政府在两点上达成共识:1.大数据不仅蕴含着极大的经济潜力,而且可以帮助解决社会问题。比如,提高交通安全性并且防止交通堵塞,而且医药信息的系统性评估可以帮助完善治疗体系。2.借助大数据解决这些社会问题要求我们每个人提供个人数据,并同意第三人以有史以来前所未有的规模对其进行分析和加工。作为团体和个人,只有在我们的数据及我们的私人空间得到相应的保护时,我们才甘愿如此。因此,大数据不仅在经济和企业层面被人广泛议论,在全社会也是一个十分重要的话题。关于这一点,第二章中会有所涉及。可以确定的是,我们所有人都是限定“大数据现象”概念的一分子。我们所有人在职业和私人生活中扮演着不同的角色;同时也是大数据的创造者和使用者——无论我们想要与否、知晓与否。另外,技术发展永恒而疾速,这个过程中,我们怀着对新科技设备、网络化、通信的渴求,以消费者的身份参与其中,作用显著。在第二章里,我们探讨了大数据在全社会产生的问题,比如,公司应当重视的几个方面:数据保护、私人领域保护、互联网时代的个人责任等。这些主题对公司使用大数据有直接的影响,公司以在规则之下受限的形式对其加以利用,作为竞争要素开启新的机遇之门。图1大数据的基本循环大数据的三个“V”高德纳公司将大数据作了如下定义(参见:高德纳股份有限公司,2013)“大数据是高容量、高速度、高多样性的信息资产,它要求信息处理的形式有着高性价比且创新,以增强洞察力和决策的准确性。”该定义首先包含了大数据的三个中心层面:1.容量(Volume,这里指数据容量)极大的数据容量自然是“大数据”的直观层面,也是其名字的来源。在上一个十年,人们用十亿或兆字节来描述数据容量(数字前缀“兆”已然描述了一个带有12个0的数字)。而现在,新的数据源相互叠加,数据量呈爆炸式增长,尤其是来自互联网的数据往往只能够用“拍字节(etayte)”“艾字节”(exayte)“泽字节(zettayte)”来度量(数字前缀zetta-描述的是一个带有21个0的数字)在国家组织领域中,如今接收的数据量已经用“尧字节(yottayte)”来表示。2.速度(Velocity,这里指数据加工和变化动态的速度)与大数据有关的速度应该从两方面考虑:(1)数据加工的速度——加工动态。数据加工速度的增长首先归功于在这期间“内存”技术的发展。如此一来,数据不再储存于硬盘之中,也不再依照加工步骤按部就班进行处理,而是“即时”在主存储器中进行进一步加工和分析。虽然大数据和内存原本并没有直接联系,然而由于极大的数据量有了即时分析的可能性,于是一个“可行性的全新维度”应运而生。我们会在第五章中根据具体的应用示例对此进行探讨,其中一部分示例已经成为了现实。(2)数据及其含义的关系和数据本身改变的速度——变化动态。数据不断变化,这些变化使得基于这些数据的分析结果也随之而改变。在大数据时代背景下,比如来自社交网络或者终端传感器的信息具有高度动态性,这些信息在特定的时间单位内频繁地变化,这就是“时间性变化动态”。关于大数据,我们必须提到“语义学变化动态”。在大数据分析过程中也会有这样的情况出现,通过数据的更新不仅信息本身改变了,连信息自身的内容含义(语义学)也发生了改变。这种变化可以理解为大数据分析的一个特殊结果。在大数据背景下,这种针对数据挖掘的观点再一次获得越来越大的意义,因为现在大量来自不同数据源的、有着不同内容和结构的、在不同情况下有不同意义的数据汇聚在一起。时间性和语义学变化动态的结合产生了一个复杂的情况。我们也会在之后不同的章节里涉及这个非同寻常的观点。3.多样性(Variety,这里指数据结构和类型)在大数据背景下,不符合传统的、合理的或者多维度的数据库系统结构的数据不断增加,这些数据必须在科技系统及处理程序中融为一体,只有这样,数据才能基于确定的标准秩序相互关联起来。这对处理完全不同的数据的信息技术系统提出了更高的要求。大数据和云“大数据”“云”和“内存”这几个主题常常被人一同列举出来,这使人产生一种印象,即这三个主题紧密相关,但是事实并非如此。大数据不一定要求云技术或者内存技术,而且云和内存也都是互不依赖的。然而有一点是正确的,那就是在处理大量数据时,只有使用云技术和内存技术,或者二者选其一,大数据所提供的特定潜力才会得到充分发挥。关于内存,我们在以“大数据与内存(IMemory)——可行性的新维度”为标题的第五章中,致力于该相互关系的研究。有关大数据和云的内容说明,人们应该从两个方面对其进行考虑:1.在特定条件下,对于企业来说,将大数据转移至云中是意义深远的,在此涉及的是企业具体的单个决策。考虑到数据的多层次性,人们无法从单个决策中推断出“大数据现象”和云的直接相互关系。2.反观之,要进行分析的数据来自哪里这个问题,使得云对于大数据的意义更加明显,比如美国大的互联网公司的数据均存于云端。这在第一点上,人们可以确定,如果没有云的话,大数据也是不可想象的。我们,还有那些由人类创造的机器昼夜不停地创造着数据,假如没有云技术,在全球范围内获取、储存及加工这些数据,都是天方夜谭。此外,第二点也应该考虑到数据的保护、私人空间的保护等问题,这些我们会在第二章清晰地进行阐述。大数据和行为分析上文所描述的技术发展及通过它引发的数据流与之前的科技推动力相反,在核心意义上,它并非真正的科技创新,也就是说它并非是一种真正的技术发明,而是对现有的、广为人知的技术的进一步发展。新技术会带来无限可能性,在这一背景下,对于很多企业来说,首要的目的便是收集尽可能多的数据。比如,美国的大型企业的网络平台均在追求这一目标,从它们的角度来看,社交网络首先是一种工具,这一工具能够动员尽可能多的人将其个人数据公之于众。从本质上来说,这些企业的商业模式不以社交媒介本身为基础,它们的商业模式主要以由此取得的数据为基础(详见第九章)。过去的10—15年中,在终端领域技术发展的动力驱使之下,那些相对静态的信息,如姓名、出生地或者鞋码等信息能够供人使用。这些数据形容人的特征(属性),且基本上来源于曾经的基本数据和交易数据。而现在,随着大数据的发展,更多“动态数据”也可供使用。从内容上看,这些动态数据其中一部分要被重新分类。对于传统的动态数据、交易数据,比如在企业的商品经济系统中产生的数据,可以反映订购和供应的过程。而如今大数据横空出世,增加了所谓的“交易数据”和“观察数据”,这些数据是由我们自己运转的或是一直携带着的机器所产生的。对这些数据进行系统地加工并且正确地阐释,使得人们可以通过这些数据对个人或者群体及其行为进行深入的推断。大数据分析法的高要求便是相应地对个人和群体的预期行为进行预测,以此建立新的商业模式。比如,信用卡公司的IT部门和专业部门一直会分析获取的数据,如今,它们无不得意扬扬地宣告,它们已经有能力在个人的层面上对其未来的行为进行预测。这种对于行为的分析和预测是大数据一个极其重要的方面,由此,个人数据的分析渗透到了一个全新的维度。为了阐释这一结论,我们首先来看一个企业和客户之间传统的交易过程(如图2所示),这一过程产生了上文所述的交易数据。图2传统交易产生的交易数据这个简化的过程表明了企业与客户之间的核心过程。每一次过程之后,单个的步骤就告一段落,最后整体的过程也随之结束,作为结果的数据不再改变,或者只是细微改变。从这种纯粹的过程角度来看,互联网只是另一个演绎该过程的平台。换言之,客户不仅仅局限于打电话或者邮寄订单(他至今依然可以这么做),而是通过互联网端口的操作来完成上述的交易过程。这种新的可能性使得许多新的企业横空出世,它们不断改革着商业模式中的新兴技术。而交易过程的基本原则,以及由该过程产生的数据内容影响力,却没有因为互联网而发生改变。这些由这一核心过程获取的数据可以被做如下描述:1.基本数据:(1)姓名、地址、生日;(2)几乎不发生改变;(3)数值会逐渐得到补充,且该数值与订购产品息息相关(如鞋码)。2.动态数据:(1)与具体的一个过程有关,如单次订购;(2)供应信息,如订购日期、订购产品、数量、颜色、大小、价格等。诚然,互联网在传统交易过程的范围内带来了一个明显的优势:先前来自类似情况的,需要输入计算机信息系统的数据,比如一项通过明信片寄送的订购,可以通过在线订购而省略,因为相关的数据已经以数字化的形式存储在网络中了。互联网在许多地方都优化了交易过程。数据分析——这些类似情况中或者互联网中的数据是否能够为企业所用?比如一段时间内不断变大的数据量可以表现为:1.客户最常购买的是什么?2.客户最有可能喜欢什么颜色?3.客户什么时候会购买?4.客户会买哪些组合产品?......对这些信息的大量理解和分析给市场带来了新的繁荣,尤其是导致了我们每个人所熟知的在线供应形式的产生:1.已经购买该产品的客户还会订购、购买哪些产品?2.哪些产品与您所订购的产品可匹配使用?3.您还会对哪些产品感兴趣?……如此一来,以上描述的信息都将系统地被提取和利用,然而这些十分详尽的信息,尚不足以震撼世界。互联网与过去十五年左右的终端科技发展相辅相成,成为了全球连接的平台,使得大数据蕴含着极大的潜能。想要清晰地阐明这两者结合的意义,我们可以从生产数据的类型、数据的内容影响力、数据的变化动态等几个方面对“大数据的基本循环”进行分析。图3相互作用的数据及观察数据的大数据基本循环在大数据的基本循环中,终端不仅仅将交易数据传输到不断重复但是相互独立的过程中,更多的是通过一个持续的过程将新的“相互作用的数据”和“观察数据”传输到基本循环之中。这些数据可以包括:我们在哪里逗留?我们从哪里来,到哪里?我们和谁交流?我们交流什么?我们如何行动(通过终端的传感器)?我们阅读什么?我们是否健康?……通过对这些数据的分析,例如个人运动特色及由此产生的最终的心理记录表,能使得对于未来个人和群体的行为预测成为可能。以技术发展的社会文化影响为出发点,总体而言,可以理解为所有生活领域的全方位数字化。大数据和世界的数字化可以被视为工业革命的后续,我们将在第二章第八节对其进行深入探讨。要思考这一结论,我们首先需要简要回顾一下两百年前的经济史。大数据和工业革命第一次工业革命和第二次工业革命发生在18世纪末和19世纪末之间。它们的特征为“基础创新”,呈长波状在世界范围内一触即发。“康德拉季耶夫周期”是俄国经济学家和周期经济发展理论的代表人物尼古拉·德米特里耶维奇·康德拉季耶夫(NikolaiDmitrijewitich.Kodratieff;参见:维基百科,NikolaiDmitrijewitich.Kodratieff,2013)提出的一种为期50—60年的经济周期。从时间上看,直到20世纪末,工业革命的两个阶段均出现了五个康德拉季耶夫周期:1.大约1780—1840年:早期机械化;德国工业革命的开端;蒸汽机——康德拉季耶夫周期。2.大约1840—1890年:第二次工业革命;贝塞麦转炉钢和蒸汽船、铁路——康德拉季耶夫周期。3.大约1890—1940年:电子技术和重型机器——康德拉季耶夫周期。4.大约1940—1990年:专用自动仪器——康德拉季耶夫周期(汽车、合成电路、核能、晶体管、计算机)。5.1990年开始:信息通信技术——康德拉季耶夫周期与“全球化”紧密相连。至今不清楚的是,哪些基础创新有着触发第六个康德拉季耶夫周期的潜力,以及这种长波经济周期现象是否伴随着一种规律。著名的经济理论家和未来学家,长波理论的代表及德高望重的信息社会构想者利奥·莱菲多(LeoNefiodow)在他的著作《第六次康德拉季夫周期》中研究了这一问题(参见:莱菲多,2007年第六版)。鉴于20世纪以来“新经济”取得的初步成果,人们将出现第六次康德拉季夫周期的希望寄托在计算机上,将其视为“基础创新”。然而随着市场泡沫破裂,这一希望成为幻影。在这一背景下,在上文简化的公司和客户的交易背景下,互联网作为一个纯粹的商业发展的平台,并不具备触发世界范围内长波经济周期的潜力。然而,这种潜力可能通过以上描述的行为分析而产生,这一论题我们将在不同的章节进行进一步研究。大数据的自身动态随着技术水平的高速发展,数据量以指数爆炸的形式增长。器械的高效利用及越来越多可供使用的数据唤起了人们加工利用信息的贪婪心理——在社会公共领域方面也是如此,大数据在这里展现了其在全社会的重要性。企业能够通过分析大量的数据获得竞争优势,并不想完全失去这种连接,故而被迫寻找解决方法,如此一来,来自现存的商业过程的网络数据,分析利用和操作逻辑及已经存在的信息技术系统建筑可以相互融合。从技术层面上来看,“混合建筑”是将现存的建筑进行了几个组件的延伸,以此实现融合。这些大数据的特殊组件许多都以Java为基础,在供应商圈子里笼罩着一种“淘金者气氛”,因为这儿并不存在统一的标准,市场上总是会出现新的工具或者成套的工具,用来帮助解决大数据的部分问题。这些工具在引进之后会继续发展,它们及其他同样处于永恒发展状态的工具的兼容性也会常常改变,后者必须在一个包罗万象的“大数据技术堆栈”中重新找到。昨天尚能毫无差错地运行的硬件和软件,在其中一部分系统更新之后,最终无法在系统组合中运作。许多有着技术设置的咨询公司在大数据这一背景下,首先专注于一定的技术堆栈,为它们的客户提供普遍可用的解决方案。然而,即便是在这些情况下,项目组也会指出,投入技术的生产者网站永远都在注意着网站的更新和共同使用性,如此便能及时地运用最新技术,同时保持技术组合的和谐运行。对于企业来说,这包含了一个大机遇,即弥补过去。因为我们必须以此为出发点,也就是说,大数据对于公司的重要性是一个极高的百分比数字,它们的BI(商业智能)任务还没有完成,而这一任务对于大数据融入当前结构至关重要。一般情况下,在过去的几年中,对各种层面的信息技术的责任人来说,得到预算,能使得信息技术系统环境及所有相关部分持续再重组成为可能,然而事实上并不可行。在巩固商业过程和信息技术系统时,企业遇到的最强大的成功阻力便是,商业和信息技术合作中出现的长时间的摩擦损耗。近年来,几乎仅仅只有日常事务节奏加快的短期挑战,在相应的信息技术中起主导作用。尽管可供使用的系统有着极高的产能,这依旧导致信息加工效率一直下降。在传统的“商业智能”中处理的数据,对比大数据而言,更容易进行组织,而且应用的工具也足够出名。由于与之相应的首创并非是在技术层面,而是存在于人与人之间的矛盾和政治对立的层面(参见:巴赫曼、肯珀,2011年第二版)。以此为出发点,即大数据能够超越商业智能,对于企业的竞争力和生存能力,以及IT和BI任务具有重要意义,因此会给社会带来新的动态,甚至连文化主题的必要讨论也有所波及,比如“工业2.0”“智能协助”或者是“社会商业融合”。大数据和商业智能在策略、组织、过程、变革管理、通信,甚至是企业结构等层面上的相互关系,我们将在第三章进行详细探讨。引言总结◆“大数据现象”并没有一个通用的固定定义。◆第一个定义尝试聚焦于大数据的技术层面,如数据量、变化动态及数据结构和数据等级的差异性。◆大数据是所有生活领域大范围数字化所推动的具有高动态性的效应。◆大数据出现的原因及由此导致的总体主题的多层次性,赋予了“数字革命”持续变化的潜力,并有着深远的社会文化影响。◆大数据与我们每个人都相关,人人都扮演着不同的角色,参与其中。◆大数据在21世纪属于企业资本。◆大数据是通过技术、工具和数学的结合,以及恰到好处地使用资本而发展的,并且大数据的应用工具与其他主题是相互分离的。◆大数据的发展假设了一种不能被人控制的自身动态。◆大数据重要的特点之一便是进行行为分析的可能性,这能够通过新的数据等级及相互影响的数据关系来实现。第一章大数据时代的企业战略目标企业采取的所有措施都应服务于企业的基本目标,其中最重要的当然是经济目标,比如产量提高和企业发展。其理想状态是,让所有单个的企业活动沿着整体的计划进行,从而转化为企业的战略和特定的商务模式。这一目标需要通过各维度的企业措施与企业战略、计划和企业转型计划的紧密结合来实现,这不仅包括与企业近期和中期目标的结合,还包括与企业长期目标的契合。在这样一个相互关系中,每一个大数据创新都必须与其措施和目标形成统一。1.1知识、价值创造和商务模式在企业大数据目标的设定中,最重要的必然是通过合理的分析获取新的知识,这种新知识应该服务于企业的长期目标,在此条件下实现企业的基本目标。在这个抽象层面上,大数据无疑可以适应其他战略主题。但是人们可以深入其中一个层面,关注“市场”“销售”或者“产品和创新”各个领域,以此来区分对于大数据不同的要求或期望,同时也弄清这个主题下企业的潜力。在此,我们需要说到“完整性”,大数据创新必定会有信息技术的参与;我们将在之后的章节中研究商业和信息技术之间必不可少的相互协调关系,特别是在大数据背景与新的特定框架条件下。在此,一个彻底的程序性观点必须置于首位。现在,有特殊意义的重要知识方面的数据转变正进行着这样一个过程,其结构在商业智能领域是众所周知的,但是为了适应不断变化的框架条件,必须在几个大数据的特定领域普及这个过程。最后所有的活动会产生一个循环,但是所有的活动应当不断优化,并且随着时间产生增值,因为单个措施的成果会一并回到出发点并且在新的活动中引起人们的重视。现在在大数据背景下——就像我们将在第八章中讨论的那样——数据和分析成果解读将会接踵而至。相比于商业智能,在这些不起眼的词背后,还隐藏着大数据一系列新的层面。在所有活动的目的之上当然一直存在着一个终极目标,即从数据信息中产生新的、具有重要意义的知识,并最终产生新创造的价值和商务模式,甚至产生新的社会。在这个过程中,其问题和目标以及由此产生的能用于一定数据储量的分析模式,会由于专业领域的不同、需求者的层次不同以及时间的不同而发生变化,这是必经之路。提示:分析模式的定义和成果阐释以及行动建议固然是商业智能的重要组成部分,但在大数据背景下,创造力在分析模式的定义和解读分析成果中具有广泛而深远的意义。图1.1概括了这个过程并且突出了部分措施,在大数据处理中,这些措施在商业智能的要求中具有重大意义。图1.1大数据的智能循环1.2分析型市场竞争者在大数据时代,企业的目标必然是使自己成为一个分析型市场的竞争者。那么,这意味着什么?具备通过数据分析产生竞争优势的能力将是一个企业成功的重要因素,这一点在一些行业中已然成为事实,特别是在一些商务模式几乎仅仅以数据处理为基础的企业,上述能力将完全关乎企业的命运。为了产生与商务相关的、有效的增值,这些企业在有效数据分析上进行竞争。未来的市场将由这些企业主宰,他们可以通过有效的数据分析支撑企业策略,设计新的价值创造方式、商务模式以及市场策略,并使其在大数据循环中适用于企业策略。换句话说,商务将会不断加速,并向企业的适应能力提出更高要求。在这样的情况下,为了跟上发展的步伐,企业必须成为有分析能力的市场竞争者。但如果能够为每一个关键时刻提供必要的数据,短时间内产生新的市场分析并将其引导和转化为新的措施,企业必须及时作出每一个调整。这些分析并非那些人们轻点鼠标就可以获得的传统的、静态的报告,而是针对一个动态的过程,在这个过程中,跨学科的团队为了获得新的知识而进行“轻松的研究”,因为这些新的知识是不能通过传统的方法引导出来的。在这个过程中,为了能发掘潜能,参与者的创造性和能够进行试验的自由空间显得尤为重要。企业文化也必须兼收并蓄,与所有参与者的意愿相结合,给予他们私人空间,使参与者们敢于接受新的行为和思想模式,并且敢于对现有的组织架构提出质疑。换言之,想要成为具有分析能力的市场竞争者的企业,必须有接受持续改变的意愿。如果企业一味遵循原有的模式,不对其进行任何改变,那么想要实现大数据的相关目标,想要成为有分析能力的市场竞争者是根本不可能的。只有像那些大型的美国企业,通过数据分析产生新的商务模式,才是唯一出路。企业要想成为具有分析能力的市场竞争者,必须进行自我批判,关注企业内部的条件是否有利于企业成功。那种“希望一切都越来越好,但是一切都保持不变”的要求在大数据背景下早就已经是天方夜谭了。企业在走向具有分析能力的市场竞争者转变道路的同时也卷入了一场竞争,只有已经在一定范围内做好了接受新的思维出发点和新的合作模式的企业才能在这场竞争中获胜,这是一场人才的竞争。上面提及的跨学科团队需要各个领域的专家,例如编程人员,数学家和统计学家,这些人最好是敢于创新的人,特别是能够将个人特质带入这个团队的人,因为他们能够联系企业的宏观考虑并且能够在团队讨论时提出新的看法。此外,团队还需要积极创新的人,对于积极创新的人来说,用原来已经用过一次的方法来解决新出现的问题,显得十分过时。他们迫切地希望用自己的知识、创造性和热情解决下一个问题,并且希望在一个相互影响的团队中创造出新的可能性。他们善于交际,能将复杂的问题清晰合理地表达出来。“大数据科学家们”必须将自己的工作视为一种尽情享受自己专业能力和个人天赋的方式,而且不应该被现有的控制程序和规则所阻碍,他们永远可以使用最先进的设备。虽然“大数据科学家”具备很强的社会竞争力,但他们绝不会表现出明星做派,只是主动地成为时代变化的主角。对这些“大数据分析专家”“大数据科学家”的形象描述当然是有意夸大的,通过这种方式至少是想表达对于大数据团队与其成员的一个基本要求。对于企业来说,这些工作者的寻求方式和领导方式是比较特殊的,这种方式在如今的许多企业中都是不符合标准的。基于上述观点,我们强烈推荐托马斯·H.达文波特(ThomaH.Daveort)和帕蒂尔的《数据科学家:21世纪最性感的工作》一文,两位作家在文章中都特别提到,企业决策者必须先在企业内部进行说服教育工作,改变企业内部反对引入大数据专家的情况。例如网络平台领英(LikedI):乔森纳·高盛(JoathaGoldma)在2006年进入领英工作时就提出了这个意见【参见:达文波特(Daveort)、帕蒂尔(Patil2012)】,很快领英的管理层就批准将高盛的观点通过例外处理来实现,而非普遍应用于软件发布周期,这一点非常重要。高盛的方法被采用之后,领英才发展成为我们今天所熟知的社交媒体。我们应当以平常心对待上文提到的“大数据科学家”的特殊地位,和其他团队一样,大数据团队也是成果导向性的。值得关注的是,由于被给予了很大的自由空间和舒适的条件,大数据团队所承受的交付压力也是巨大的。如果经过一段特定的时间仍然没有任何成果,大数据团队很快就会解散,消息也会很快在行业内流传。因此绝不能放任大数据团队自生自灭,至少应该根据当时的需求使现有的专家关心生产,以此达到管理大数据团队的目的。这对于一个有丰富经历,习惯自由,有高超敏锐的鉴别力、通感力、鉴定力和执行力的人来说是一个巨大的挑战。与此同时,团队中的每个人还需要不断地坚实中期和长期目标,以保证在遇到短期的成本效益方面的问题时没有后顾之忧。关于大数据中的变革和沟通管理,我们将在第三章中论及。至于企业在运作和组织过程中如何与大数据相关联,我们将在第七章和第八章中详述。1.3制信息权和解释权那些已经成为具有分析能力的竞争者的企业在这个层面上又进入了一个新的竞赛,首先是“制信息权”,然后下一步是与数据、信息和话题相关的“解释权”,最后是寻找一个可信赖的、可提供分析和预测服务的供应商,为公司的内外决策提供基础。提示:此处提到的“解释权”竞争是指企业之前的解释权竞争。关于企业内部的解释权竞争我们将在第八章中详述。企业之间的竞争,可以通过以下几个问题来区分企业成为具有分析能力的竞争者的成熟程度:1.哪些企业在某一特定领域拥有绝对的相关数据占有量?2.哪些企业具备将数据转化为正确的信息和知识,并将这些知识正确的表达出来的能力?3.哪些企业具备支撑决策(比如国家范围的决策)的能力?接下来,我们要举一个例子,虽然,这个例子只适用在公共领域业已举足轻重的大公司,但是这个例子也适合梳理出企业内部的相互关系,这个相互关系也涉及对由专业部门传输给特定团队的信息的内部分析。例子:一家大型搜索引擎企业确定(其他大型搜索企业也同样如此)德国某个特定区域对于流感症状和流感药物的搜索数量高于全国平均水平,并且这个数量持续快速增长。这可能是一场流感开始的信号。根据搜索数据,企业自然掌握了信息并且推断出,也许一场流感即将爆发,流感的初发地也被清楚掌握。这里的“可能”意味着人们暂时只停留在数据和信息层面。从理论上讲,上面例子里的公司在得到数据后,应该在相关区域进行一场区域性保险公司的宣传活动,以此来提醒人们作出预防。接下来,应该以大数据科学家提出的这个问题确实和流感相关的论断为出发点,在全国大范围内采取措施之前,向有关人员转达消息并基于数据分析证实这个观点。企业必须自己承担上述费用,但是在保证企业利益的同时也要保证不能有过高的错误率。为此统计学家会计算企业的错误率,因为错误率能够反映企业分析结果的真实性以及所做预测还有哪些不可确定性。这些错误率是最终分析结果的组成部分,分析结果中还会包含对结果可能性的预测,严格来说,单纯的分析是远远不够的。除了上文的数学验证方法,当然还有其他的手段来鉴定信息。如果要发展新的验证方法,有丰富想象力的人将会非常受欢迎。换句话说,面对大数据的复杂性及其繁多的可能性,仅仅依靠已有手段来解决新出现的问题是不现实的。因此,大数据专家团队需要专家和创新人才的合作,以达到能够交付新的解决方案的目的。在一些情况下,传统的验证方法是行不通的,这时人们将会通过反证法(也就是通过证明一部分观点完全不合乎实际的方法)尽可能地排除一些可能性,以提高预测结果的准确性。反证法和提高预测结果准确性的最终目的,都是为了在一定程度上减少现实状况的复杂性和不断出现的各种可能性,并得出一个高度符合现实情况的结论。反证法能够有效地减少各种情况下事件的复杂性,但必须注意的是,排除事件可能性的时候不能匆忙大意(上文事例即指保险公司的宣传活动),否则信息解读的错误率就会大大提高。在此,我们要着重强调数据转化为信息、信息转化为决策知识的重要一点:在许多情况下,数据的分析过程都是以猜测开始的,但是猜测不应该随意减少现实情况的可能性,必须非常小心地进行。这个重要的问题我们将会在第八章和第十章中深入探讨。重要:一个企业从数据中提取信息,并将信息转化为与决策相关的知识;同时,必须减少对现实复杂性的不合理排除,否则信息解读的错误率就会增加。再回到我们所举的事例,通过正确的分析,即通过对各种信息的证实,相较于传统的通过医生诊断,企业可以更早地得知在某一地区将要发生流感。健康人群可以更早地采取预防措施,最好的结果是一场更大范围内的流行病可以得到抑制。如果企业在数据分析中存在错误,最糟糕的情况就是会触发上文提到的错误警报,并且对企业形象造成影响。不断触发错误警报的企业将会很快失去作为分析预测服务供应商的资格,并且陷入信任危机。此外,企业还必须注意一点,这一点关系到一些人的特殊的个人目标,即对于特定信息和主题解释权的追求和占有,以及从中可能产生的纠葛。产生这种纠葛是因为公众对于同一个问题的认知是无法预测未来的。图1.2显示了企业成为具有分析能力的竞争者、成为信息主宰者的各个阶段。企业内部的各个部门也经历类似的过程。企业作为具有分析能力的竞争者,其内部角色与各个参与数据分析的不同的部门相关。它们处于占据信息解释权的竞争中,对此我们将在第八章中详述。图1.2企业变成分析型市场竞争者的过程1.战略企业应当基于其战略和业务模式确定其在大数据时代的目标,并且回答如何将大数据这个主题融入公司整体格局中这个问题。2.集成在企业战略计划的基础上,大数据必须在企业的各个层面形成技术上的统一。(1)组织机构:在企业内部框架下确定其组织机构;(2)流程:集成所有目前企业流程中的所有相关活动;(3)技术:在信息技术架构中集成特别的大数据技术;(4)企业文化:为大数据活动的成功创建总体框架。3.智能循环请见本章开头。4.分析型竞争者(1)企业具有通过数据分析以高精度的预测推导实际问题的能力;(2)在企业内部目标群体范围内,有一个用于数据分析的部门具备上述能力。5.信息主宰者(1)一个在公众眼里能为决策过程提供可靠的、高质量的分析支撑的企业;(2)在某一公司一个被认为能提供可靠的分析以支撑决策过程的部门。关于“解释权”我们将在第八章中详述。第一章总结◆企业利用大数据的首要目标即实现产量和销售量的增长,特别是通过大数据分析带来的知识增长来完成这一目标。◆大数据也能显示新的价值创造和新的商业模式的潜力。◆通过注重数据分析产生知识的能力,企业发展成具有分析能力的市场竞争者。◆一个企业作为具有分析能力的市场竞争者,可以通过掌握一个具体领域的信息主宰权和解释权而使公众接受其商业模式,并且保障一个企业永久占据可观的市场份额。◆在企业内部,各个部门也都在竞争信息主宰权和解释权。第二章社会生活中的大数据本书是大数据对于企业层面的专业书籍,它并没有试图寻找对全社会层面的问题的解决方案,虽然全社会的问题是“大数据现象”的内在组成部分。在这个背景之下,我们在考虑大数据对企业的意义时,也必须考虑到大数据在全社会层面的意义。其对于企业的意义我们将在第三章详细阐述。2.1大数据是社会变革的镜像过去的15年内,没有任何一个企业性的话题像大数据一样超越了经济和企业的层面,对于人类社会产生了如此重要的影响。长期以来,新工业革命在所有的生活领域都有深远的意义,伴随而来的是日常生活节奏的加快及职业生活和私人生活圈子趋于一致。我们经历着社会、国家、经济和工作环境的大规模变化,这是大规模数字化及其社会文化影响所带来的不可避免的结果。因而,大数据并非一个简单的技术现象,而是一个镜像,它反映了大规模进行的、早在21世纪初期便紧锣密鼓且高速发展的社会变革。这种变化为文明的进步提供了巨大的契机,然而也隐藏着风险。要想分析这一变革的作用范围,人们有必要注意到发展不息的“世界数字化”的开端和作用机制。《法兰克福汇报》的出版商之一弗兰克·施尔玛赫(FrakSchirrmacher),在他的书中分析了该作用的机制【参见:施尔玛赫(Schirrmacher),《EGO——生活的游戏》,2013】。他认为:1.在冷战时期,由于军事和经济策略的原因,现代经济人假设的理论模型出炉:一个利己的人,只考虑自身利益的人。2.在冷战之后,这变成了21世纪成功存活下来的理论模型。时至今日,比如股票市场上还在根据其逻辑运行。3.最初目的首先是商品销售,在上一级层面上还有政治营销。4.通过接下来的步骤,该模型自身变成了自我感知的预言。该发展的最终结果便是,人作为决策的承担者被分离开来。施尔玛赫指出,随着过去十年的技术发展,在一个呈现利己主义的人类形象中,机械和算法所构筑的权力,已经席卷了广阔的社会生活领域。在其中,公众之间的关系趋于透明,比如,股票交易不再由交易商打着随意的手势在众所周知的交易厅里进行,而是由一个高度专业化的计算机系统来完成。然而,这种公开并不一定是一个为人知晓的事实,它虽然作为一个话题在媒体上被集中谈论,但是世界范围内的计算机系统相互连接的速度极快,且并不需要人类的干涉,这有可能导致某种股票的平均被持有时间急剧缩短,从几年变成几个月,甚至从几个月变成几秒钟。在本·布卢姆(BeBlume)撰写的《高频率的贸易》中曾经提到过这一点(参见:布卢姆,2013):股票的被持有时间急剧变短,过去可以被视为对企业的长期投资参与,如今已经变成了22秒钟。为了使得计算机系统具备几秒内进行交易的功能,不仅需要相应的算法,也需要专业化的硬件,这种硬件允许将进行买卖决策所依赖的市场内部逻辑直接集成在中央处理器上。很显然,如此一来,股票交易至少能够使大批量的人或者群体有可能使用专业性的、昂贵的系统,而股票长期参与企业的原始意义也会消失殆尽。在自动化过程中人类判断的缺失,对于企业和社会意味着什么?这一点我们将在第八章和第十章中对相关的数学问题进行详细阐述。简言之,一些人相信,凭借数学工具和统计学模型,在越来越广泛的总体基础上,也就是在一个越来越大的数据基础上(大数据),人们能自动得到越来越精确的对现实的认识,并且在此基础上形成更加有据可依的对于未来图景的描述(“处方式数据分析”,参见第四章)。也许在这下面潜藏着后果严重的误区,这一点将稍后论述。自动化的风险在某些时段(如2010年)逐渐变得明晰。2010年,华尔街由于单个的错误决策,引发了资本主义机器无法休止的链式反应。由于算法错误地估计了市场场景内容方面的无害性,它将市场拽入深渊。只有在人们未雨绸缪、集中干预的可能性存在时,这种有深远影响的世界经济总体崩溃才能够得到有效避免(参见:《新闻报》,2010)。在关键词“大数据”的影响下,预言能够追求以数据为基础的文明进步,这在交易市场里早已司空见惯,世界数字化在这期间也如火如荼地扩展到全球范围。比如说二进制的思考结构,“0或1”“对或错”“好或坏”扩展到了所有的生活领域;同时这也带来了许多风险,比如“机器的权力”及灰色区域的渐隐。对此,弗兰克·施尔玛赫说道(参见:施尔玛赫,《数据时代的政治》,2013):市场自我调节且不受外界影响这一概念,只在现代历史中传播到社会上,且产生作用。尽管还附带有一些观点,即,使这些变为可能的系统很少……授予完全记忆的权力。施尔玛赫通过“完全记忆”这一概念将另一个层面带入了镜像之中。它可以很好地与引言中的“大数据基本循环”相互融合,如此一来,其意义一目了然。在这样做之前,我们要再一次扼要地重述一遍基本循环的内容,以便与施尔玛赫所描述的“完全记忆”的概要相承接:1.我们每一个人在职业生活和在私人生活中同时扮演着数据生产者和利用者的角色,这就是所谓的“大数据”。2.数据从我们触手可及处被抽离和保存,并且通过第三方——一般而言是国际大公司——集中进行加工、利用并进一步传输。3.作为数据生产者和使用者参与“大数据基本循环”的普通公民,对于这里所使用的信息技术基础设施既无法把握又无法施加影响。4.该信息技术基础设施的组成部分,尤其是服务器和数据库,可以处于世界上的任意一处,只要那里的国家立法,在涉及数据生产和与此相关的个人信息时,并不存在法律上的问题。这意味着,例如一个德国公民将一幅剪影放在了社交网络上,而该社交网络的服务器在世界各地均可运行,如此一来,他就将个人信息传输到了一个并无法律保护的空间。5.信息技术基础设施的所有者和运行者实际上对于该“完全记忆”有支配权,该“完全记忆”是由一段时间内的数据保存所建立的。图2.1和图2.2显示了引言中的“大数据基本循环”向“完全记忆”的拓展。图2.1含有“完全记忆”的大数据基本循环图2.2含有“完全记忆”和更多用户的大数据基本循环许多评论家强调,“完全记忆”意味着大量的文明发展契机,理论上可供所有人支配。归根结底,大规模集中知识的心愿并不罕见。千年之前人类便建造了图书馆,想要收集知识,并集中利用。我们如今所支配的技术也是服务于这一目的的,这看起来十分合乎逻辑。然而必须确定的是,上文描述的“完全记忆”并不是指收集某一个图书馆里的知识,而是收集每一个人的个体外貌和行为方式此类知识。许多人在大数据公开辩论上由此表达了一种担忧,对于该“完全记忆”不透明的利用会使得个人数据被任意使用,而且并不存在防止数据滥用的工具。现代数据库储存并加工个人日常生活中的每一种活动的同时,会留下数字痕迹,这一点在这种担忧中起着重要作用。对于数据滥用的担忧也会产生在这样的情况下,即人们充分利用技术可能性,然而并不在“大数据基本循环”中对参与者公开透明,像上述情况甚至没有法律基础。因此在本书面世的几个月内,由于越来越广为人知的秘密活动和大型企业意外缺失的数据安全问题引发了一场公开讨论。这里有三个示例:1.棱镜计划(PRISM)(资源整合、同步和管理的策划工具):一项由美国国家安全局(NSA)启动的严格秘密实施的程序,用来监视和评估电子媒体以及电子储存数据。新兴的大型互联网公司和美国的国家机构都参与其中:微软(其中还有Skye)、Google(此外还有YouTue)、Faceook、雅虎、苹果、美国在线(AOL)和Paltalk【参见:维基百科,棱镜计划(PRISM)(监控程序),2013】。2.时代计划(Temora):英国“政府通信总部”(GCHQ)秘密操作的代码,用来监控世界范围内的通信和互联网数据交流【参见:维基百科,时代计划(Temora),2013】。3.Faceook的用户数据:Faceook承认了其历史上最大的一次安全故障:由于数据库错误,用户得到了他们本来并不允许见到的联系电话或者电子邮箱地址,有六百万用户涉及其中(参见:克里斯提安,《明镜在线》,2013)。像“棱镜计划”和“时代计划”这些活动的意义,在全社会环境下可以通过“大数据基本循环”的全新拓展而被一览无余。在这种可能并不平等的背景下,有关“完全记忆”的使用,参与“大数据基本循环”的社区,以及并不属于这个社区的个体活动家或者群体,在公共辩论之中提出了这样一个问题:“大数据=老大哥?”根据如今的情况,这里必须确定的是,国家行为如“棱镜计划”和“时代计划”的法律框架条约既没有被确定,或者存在法律上的复杂性,比如说在涉及个人的情况下,通过滥用个人数据而在实际上干涉个体是不可能的。即使是一个国家的政府,比如德国联邦政府,现在实际上也没有防止公民滥用数据的法律工具。如果这种数据滥用现象发生在信息技术系统,那么从自然地理角度上来看,其处于德国国家疆土之外。大数据的这个角度触及了宪法,其结果便决定了现实中的公开讨论。在这种关系下,一个基本问题应运而生,数据究竟属于谁:1.属于那些曾经将数据输入信息技术系统的人。当我们在一个互联网端口设置一个账户或者一个照片时,那些人常常是我们自己吗?2.属于那些能够将数据通过技术连接分配给个人的人吗?3.属于有着信息技术基础设施(比如一个互联网端口,数据向导)、对数据进行分析利用并且传输的企业吗?4.属于有着数据物理载体并进行数据存储的企业吗?5.属于通过点击接收AGB的公司吗?即使这些问题在国际层面上以法律方式阐释了数据所有权,还是会产生一个问题,即一个有着数据所有权的“数据所有者”能获得哪些权利:1.他能够根据自身意愿将不同数据随意相结合吗?他能够将某些数据与其他数据相结合的条件是否是其他数据的所有权也归其所有?2.他是否能够将数据及其所有可能的连接进行出售,或者转让给第三方?如果可以转让,那么接收者是否自动变成了新的所有者?这些过程是否必须对涉及数据技术和内容的人员公开透明?获得这些人的同意是必要的吗?3.从国家层面来看,这些权利在国际层面上该如何执行?有哪些国际组织可以对相应权利进行诉讼处理?这些问题在持续进行的公开辩论中得到了阐述,但是最后的结果却不得而知。只是现在人们对于大数据有一个重要的认知。重要:我们每个人都涉及了大数据,而且必须在集体和个体的层面上为我们的行为设置不断变化的社会框架条件。2.2信息自决权在这种现象中,德国公民如今已经在德国拥有了“信息自决权”,自主决定是否放弃或是利用个人相关的数据。与一般的观点相反的是,这一权利并没有确定在基本法中。根据联邦宪法法院的判决,这是所谓的“数据保护的基本权利”。此外,根据欧盟基本权利宪章第八类,个人的相关数据是受到保护的(参见:维基百科,信息自决,2013)。此外,在德意志联邦共和国中,国家“保障信息技术系统的可靠和正派的基本权利”(参见:维基百科,保障信息技术系统的可靠和正派基本权利,2013)。该权利同样也不是在基本法中确定的,而是在2008年由联邦宪法法院作为基本人权的特殊表现而规定下来的。在口语中也将其称作“信息技术基本权利”并且导致对“数字隐私”的保护,也就是保护在信息技术系统中储存并且被进一步加工的个人数据。然而,鉴于当前的国际法状况,人们必须以此为出发点,即国家的法律没有在国际范围内进行实施。为了使得这种实施成为可能,对新的国际协定的讨论势在必行,以此在国际范围对数据形成一种有约束力的规定。因此,需要通过多国协议来成立一个以实现该目标为宗旨的国际组织,该国际组织需要很长时间来不断展示每日数据的自身动态。一个国际间的数据保护协定必须要规定两个基本方面来保障企业和个人权利的安全性:每个具体网络上的个人数据的保护、互联网自身的正直性【参见:阿克西尔·阿尔巴克(AxelM.Arak),信息权益机构(IVIR),阿姆斯特丹大学,2011】。在国际层面形成约束条例,其履行应该受人控制,这并不是一时半会儿就能够实现的。如果国际上并不存在约束条例,每一个国家及其公民在涉及“完全记忆”时都能实施他们的权利,且将其固定在机构的章程之中,那么保护个人隐私的责任首先还是在于个人自身。这种状况越来越多地反映了公众意识的觉醒,并且改变了公民先前对于数据保护和隐私保护的轻视的观点。这涉及一个问题,即“互联网时代的个体责任”。2.3互联网时代的个体责任对数据保护和隐私保护话题的公开讨论在某些时候显示了一种悖论:网络用户,不仅仅指“数字原住民”,自愿在社交网站上公开一些涉及隐私的信息,同时又要求国家政治能够保护其私人领域。鉴于以上概述的国际法律状况,个人就有一种被保护的需求,然而也正是这些人自身的行为对数据保护的规定进行破坏,使国家几乎不能发挥人们再三申诉的保护功能。这种情形是这样产生的:在大约20年前,一种“数字乐观”的心态盛行于世。在对待互联网的问题上,许多参与者都奉行一种“无忧无虑的享乐主义”【参见:克努维(Küwer),2012】。以上描述的情况,如数据滥用、数据安全性缺失等结果便是早年对待互联网无忧无虑的心态在公众讨论中逐渐被一种新的怀疑心理所替代。一方面是无忧无虑,一方面是将信将疑,这种状态描述了当前社会讨论的两极化,这使得在国际层面上关于数据的游戏规则最终需要被重新定义。我们自身对悉心保护我们自己的个人权益责任重大,我们有能力防止数据的滥用,毕竟没有人强迫我们将个人数据公开。然而,事实上,几乎没有人由于工作原因无法与互联网上的信息和数据交换摆脱干系。人们积极地参与工作和社会生活,如同所呈现的一样,每个人也可以努力减少那些不受期待的副作用。不同的技术可能性、必要的行为模式的改变是各种宣传教育活动的主题。可以确定的是,每一个希望对此有所了解的人,都将寻找到充足的材料,也恰恰是在互联网上。然而也有一些高级措施能够为隐私保护提供新的可能性。比如弗劳恩霍夫协会的机构开放通信系统研究所(FOKUS)在很长一段时间以来都与劳伦兹·斯坦研究所合作,研究“‘数据公证人’总体概念的基础”并且发展“电子安全”,描述“数据公证人”的任务【参见:卢克(Lucke),2008】。德国联邦政府在2013年1月创办了“数据保护基金会”。我们在本章的结尾会对其进行叙述。此外,他们在互联网网页上给出了具体的、个人化的数据保护措施,每一个人都能够采取这些措施。在全社会持续争论并期待新的技术发展的背景下,人们将改变自己使用互联网的行为习惯。每个人都将一遍一遍地对自己重复这个问题,他出于什么原因,要将哪些信息遗留给谁?此外,关于使用的意义或是无意义的讨论将进一步发展,这些讨论还包括了关于数据的总体价值和统计的局限性。与寻找答案的具体经过和不同的中间结果不相干的是,企业必须迎合人们越来越旺盛的对于数据保护、隐私保护、提高数据安全性及企业可靠性的需求。我们将在第三章“企业中的数据治理”这一标题下再一次看到“信任”这一概念。试读结束[说明:试读内容隐藏了图片]点击下载...

    2022-04-01 康德拉季耶夫经济周期 康德拉季耶夫斯基周期

  • 嵌入式Linux驱动模板精讲与项目实践(txt+pdf+epub+mobi电子书下载)|百度网盘下载

    作者:林锡龙出版社:电子工业出版社格式:AZW3,DOCX,EPUB,MOBI,PDF,TXT嵌入式Liux驱动模板精讲与项目实践试读:前言一、行业背景嵌入式Liux驱动开发涉及的知识点比较多,要求开发者掌握的技能也比较多,且内核知识点比较分散,对于初学者来说门槛比较高,而嵌入式Liux在各行各业中已被广泛应用,在物联网、通信行业、航空航天、消费电子、汽车电子等行业中急需掌握嵌入式Liux软件开发的研发人员。近年来,随着嵌入式应用越来越广泛,嵌入式Liux开发变得更加复杂,嵌入式Liux驱动开发已经成为嵌入式应用领域的一个重大课题。二、关于本书本书大部分内容基于专业培训机构特训的讲稿。在专业培训提倡的嵌入式Liux驱动的模板式教学中取得了很好的效果,在此之上结合一线研发经验对驱动开发进行战略性指导,其中很多关键点是作者花了很长时间实实在在整理出来的,旨在揭晓嵌入式Liux驱动中的各种机制,达到知其然且知其所以然的目的。本书各章内容说明如下。第1章为驱动总论,是驱动开发在高层次上的介绍。第2章介绍的内核编程及基础知识点是驱动开发的基础,对驱动开发涉及的Liux内核中的各个知识点进行介绍,旨在扫清对Liux内核阅读的障碍。第3章介绍驱动模块开发,涉及各种模块移植中常见的设备方法,其中各个模板可以直接应用到实际研发中。第4章结合Liux操作系统讲解互斥机制在各种情况下的使用,重点分析各种机制的使用注意事项。第5章重点介绍Liux中断的上下部机制及Liux提供的各种接口,强调中断程序设计的基本理念及设计手段。第6章介绍Liux驱动中字符设备驱动的高级设备方法。第7章在Liux子系统的层面上介绍各种高级设备驱动。第8章重点介绍如何使用虚拟文件系统,这些实用技巧是一线研发的经验总结。第9章对设备驱动模型各个元素进行讲解,并介绍如何一步步手动建立设备驱动模型模板。第10章手把手带领读者建立最基本的文件系统,并制作各种常见的文件系统,其中穿插介绍各种实用技巧及实际研发工具。第11章介绍一线研发人员使用的开发调试技巧,重点强调实用。第12章结合V字形开发模型在嵌入式Liux驱动开发中的具体实施进行总结。第13章介绍嵌入式Liux设备驱动编程规范。三、本书特色●一线研发实战经验积累,所有技巧及讲解使用的工具都可以直接应用到实际开发工作中。●采用模板的方式对分散的各种驱动知识点进行讲解,所有模板都可以直接引用。●对每个知识点都提供实际案例,从模块的原理介绍,到系统层次的分析,图文并茂,力求分析透彻。●提供了大量的驱动例程,这些例程可以快速应用在实际开发中,读者可以直接运行调试。●结合实际研发工作对开发过程中的思考进行总结,重在实用。四、作者介绍本书由林锡龙编著,编著者在写作过程中查阅了大量开源工具及互联网上的资料,对各种资料的作者不能一一列举,在此表示谢意。由于时间仓促,书中程序和图表较多,错误之处在所难免,请广大读者批评指正。作者电子邮箱:wlxl_1204@163.com。编著者第1章驱动总论1.1总论1.1.1驱动在内核中的比例在Liux内核中,驱动程序的代码量占有相当大的比重。图1.1是一幅Liux内核代码量的统计图(单位:行数),对应的内核版本是2.6.29。从图中可以很明显地看到,在Liux内核中驱动程序(driver)的代码超过了500万行,所占的比例最高。图1.1Liux内核代码量统计图1.1.2驱动开发需要具备的能力目前,Liux软件工程师大致可分为两个层次。(1)Liux应用软件工程师。Liux应用软件工程师主要利用C库函数和LiuxAPI进行应用软件的编写。(2)Liux固件工程师。Liux固件工程师主要进行Bootloader、Liux的移植及Liux设备驱动程序的设计。一般而言,对固件工程师的要求要高于应用软件工程师,而其中的Liux设备驱动编程又是Liux程序设计中比较复杂的部分,究其原因,主要包括如下几个方面。(1)设备驱动属于Liux内核的部分,编写Liux设备驱动需要有一定的Liux操作系统内核基础。(2)编写Liux设备驱动需要对硬件原理有相当的了解,大多数情况下是针对一个特定的嵌入式硬件平台编写驱动的。(3)Liux设备驱动中广泛涉及多进程并发的同步、互斥等控制,容易出现ug。(4)由于Liux设备驱动属于内核的一部分,所以它的调试也相当复杂。Liux设备驱动的开发要求比较高,要求开发人员掌握一定的硬件知识、Liux内核技能、操作系统并发概念和较高的软件编程驾驭能力,Liux设备驱动程序作为内核的一部分运行,像其他内核代码一样,如果出错将导致系统严重损伤。一个编写不当的驱动程序甚至会导致系统崩溃,导致文件系统破坏和数据丢失,所以对Liux设备驱动开发比对应用程序要求高得多。Liux驱动的编写涉及如下主题。(1)内核模块、驱动程序的结构。(2)驱动程序中的并发控制。(3)驱动程序中的中断处理。(4)驱动程序中的定时器。(5)驱动程序中的I/O与内存访问。(6)驱动程序与用户程序的通信。实际内容错综复杂,掌握起来也有难度,但从本质上来说,这些内容仅分为两类。(1)设备的访问。(2)对设备访问的控制。前者是目的,而为了达到访问的目的,又需要借助并发控制等辅助手段。1.1.3驱动开发重点关注的内容初看起来Liux设备驱动开发涉及的内容很多,而需要实现驱动的设备又千差万别,其实质主要包括以下几点内容。(1)对驱动进行分类,先归纳为是哪种类型的驱动,归类正确再利用内核提供的子系统进行开发,这时往往会发现很多通用的事情内核已经做了。一个优秀的驱动工程师应该最大限度地利用内核的资源,因为内核已经实现的毕竟稳定性强、可移植性高。(2)找到内核提供的子系统后,接下来就是要制作该子系统对该类设备提供的表征,也就是描述该类驱动的结构体,然后定义这个结构体,把必要的数据进行初始化,最后调用该内核子系统提供的接口函数提交给内核管理。这是大部分驱动程序开发的战略流程。(3)明确子系统已经做了什么,需要在自己驱动中实现哪些内容,通常的做法是找一个接近的驱动程序进行修改,而不是一行一行地对代码进行编写。到内核中找接近的驱动例程是一个又快又好的方法。这些例程基本上都提供接口如何使用、调用流程等,借鉴已有例子可以避免低级错误。(4)以上都是与内核接口有关的,驱动另一个涉及的就是芯片手册,这个与做其他嵌入式软件一致,故对从单片机软件开发或者其他操作系统软件开发转过来做Liux驱动开发的人员来说,这部分是一个强项。(5)驱动的另外一个内容就是协议,包括各种嵌入式总线协议,从简单的SPI到复杂的PCI或者USB等。协议的基本知识是需要掌握的,好在内核对各种常见协议都是以子系统的形式提供的,在子系统中做了大部分共性工作,所以大大降低了驱动开发的工作量。综上所述,学好驱动开发,一个重要的方面就是对内核的学习,熟悉内核的组织和思维方式。1.2驱动理论与思想Liux对驱动的管理有自身的一套方法并提供相应的机制,但其具体实现可以由开发者自己决定。这一点可能比较抽象,但真正接触到实践之后,你会发现相同的一个功能,如点灯驱动,有很多实现方式——简单字符方式、cdev方式、mic实现、设备驱动模型等,对于设备的管理实现也有多种方法,只要你喜欢你可以写出很多种方式的驱动。正因为存在这么多种形式的驱动,初学者最初会比较茫然,进而觉得复杂,再后来就会感觉很灵活,然后感觉很多事情Liux已经做好了,你要做的就是熟悉一下它所提供的机制,然后正确调用其所提供的接口实现功能。从2.4到2.6,Liux内核在可装载模块机制、设备模型、一些核心API等方面发生较大改变。特别是引入设备模型,设备模型是一个难点,将由后续专门章节介绍。本章作为驱动理论将在一个更高的角度来总结内核对各种驱动所提供的相似点。之所以先提及设备模型,个人觉得真正理解Liux的驱动应该以设备模型为主线,设备驱动模型的提出涉及驱动管理方式的变化,如从原来手动创建设备文件到自动创建设备文件这个变化Liux引入了Udev系统,再展开来说,从设备模型中引入各种子系统、总线等概念,对这些进一步深入可以发现Liux提供各种驱动的core,如I2C-core,iut-core,rtc-core,erial_core等,如果打开阅读内核代码,你会发现在内核代码driver下对每种设备都进行了分类,而且每个文件夹下基本都有一个core文件,这些core文件已经对相应类型的驱动进行通用属性和行为的封装。市场上很多Liux驱动的书籍基本上都会对每种驱动以一个章节进行描述。在某种程度上讲,随着内核的发展,在驱动上尽量将各种类型的设备进行抽象,由内核里底层的代码,如总线驱动或此类设备共用的核心模块来实现共性的工作,从而简化设备驱动开发。设备模型的引入既在驱动设备管理上进行了分类又在文件系统上进行了统一。“一切皆文件”是Liux的设计思想,可以在Liux下的y虚拟文件系统中看到cla文件夹下有各种类型设备的相应文件夹。系统对设备的管理系统Udev也是按照cla下的文件进行设备文件创建的。当然这也只是众多主线之一,还有总线、设备、驱动等概念,提出这些概念及响应机制的目的是为了简化设备驱动的开发、管理与维护。Liux博大精深,且不断发展,新的特性不断涌现,知识点众多,为开发者和用户不断提供新的模块,我们必须抓住主线,逐个深入,长期积累。现在不少嵌入式驱动开发者在项目中只采用基本的属性行为,很少或者基本用不上高级特性功能,采用IOCTL方式进行用户与驱动之间的对话式交互,通过编制上下对应的IOCTL命令即可完成绝大部分工作。在对驱动开发应聘者的面试中可以发现,很多应聘者对设备模型理解不多或者不清楚,这对深入理解新内核驱动显然是不够的。1.2.1分类思想Liux对各种各样的设备进行分类,一般分为字符型设备、块设备和网络设备3种。但在内核中对于一个具体的设备还有细分,而且整个内核是按照不同细分种类的设备来提供支持的。在系统运行之后查看一下y/cla,图1.2所示为显示y/cla目录情况。图1.2y/cla目录并且可以看到各种类型的驱动。对于具体驱动来说,Liux内核还保留了一些固定的主设备号,在内核代码iclude\liux/Major.h中定义了一些默认的类型主设备号。比如:#defieMISC_MAJOR10/*混杂型设备*/#defieSCSI_CDROM_MAJOR11#defieMUX_MAJOR11#defieXT_DISK_MAJOR13#defieINPUT_MAJOR13/*输入型设备*/对于一个新的驱动来说,首先必须要确定一下要把它当哪类设备来处理,也就是归为哪类设备,然后再看内核在这类设备中提供的支持,最后调用这类设备的接口函数进行处理。当然,如果一个新驱动有接近类似的,那么还是在接近的驱动基础上进行修改。1.2.2分层思想对Liux的iut、RTC、MTD、I2C、SPI、TTY、USB等诸多设备驱动进行分析,可以看到大致都是按照分层次来设计的。市面上很多介绍Liux驱动的书籍在章节编排上一般先介绍该类型的硬件知识,再介绍协议和相关操作,然后再对实际例子进行分析。实际上,协议和相关操作是归纳在内核相对应的core或者类似core相关的文件中的。这样对于一个具体设备来说并不需要对该部分再进行一次编写。这就是分层思想带来的好处。Liux内核分层的框架设计用到了面向对象的设计思想。在设备驱动方面,往往为同类设备设计了一个框架,而框架中的核心层则实现了该设备通用的一些功能。如果具体设备不想使用核心层的函数则可以对其进行实现重载。图1.3所示为驱动核心层与实例之间的关系图。图1.3驱动核心层与实例之间的关系图1.iut子系统层次iut子系统整体系统框架如图1.4所示,整个系统是按一定层次进行划分和组织的。图1.4iut子系统整体系统框架图再回到内核相应的路径文件夹driver/iut下,图1.5所示为看到的输入子系统相关文件。图1.5Liux输入子系统相关文件这些文件分为事件层、核心层和处理层。每个文件夹对应的是一种类型的输入设备,会产生事件报告到核心层,核心层决定调用哪些处理层对事件进行分发,最后发送到用户空间相应的设备文件下。图1.6所示为iut子系统文件层次示意图。图1.6iut子系统文件层次示意图这是在Liux-2.6.24版本下的标准内核,当然如果有厂家需要自己添加相应的驱动即可以在事件层中添加底层操作的一个文件夹,然后在处理层中添加一个相应的文件并添加到iut系统中。2.RTC子系统层次接着移到driver/rtc目录下,该目录下的文件并没有像iut下那样组织,但是按照前面提过的Liux很多地方采用面向对象的方法抽象共同点,然后在实例化的指导下我们可以看出,下面这些rtc-×××.c带有型号的文件都是实例化的驱动。图1.7所示为Liux中RTC实例化文件。图1.7Liux中RTC实例化文件在RTC系统中使用的是latform总线,latform总线在后面设备模型中会重点介绍。这里只要理解为设备模型中“总线,驱动,设备”中的一种总线即可,而这些实例化的rtc-×××.c文件就是模型中的驱动,需要实现的是latform_driver结构,设备则放在相应体系结构中对应的目录下,如arch/arm/lat-3c24xx/下,需要实现的是latform_device。Liux已经提供latform总线,驱动是对应某个型号的芯片,基本上可以在driver/rtc目录下找到,那么驱动开发实际上就是完成系统中各个器件相应的设备描述即可,这就是驱动开发所要做的,而且熟悉之后工作量不是很大。至此,设备模型中的三个要素已经具备,只要驱动和设备注册成功且匹配,实际芯片就能正常工作。下面看一个采用Liux的RTC系统运行的例子,如图1.8所示。图1.8RTC系统运行实例这个cla中的rtc是在哪儿实现的呢?看一下driver/rtc下的cla.c文件:taticit__iitrtc_iit(void){rtc_cla=cla_create(THIS_MODULE,"rtc")…}这是RTC系统核心层附属的cla模块自动做的。也就是说,该子系统不但把RTC相关的共同操作提供了,而且还附带送上驱动模型这一套liux-2.6中的亮点特性。接下来回到本节主题,图1.9所示为RTC系统的层次结构图。图1.9RTC系统的层次结构图当系统运行起来之后,再看一下由rtc-roc.c所创建的roc虚拟文件系统文件:[root@FriedlyARMdriver]#wd/roc/driver[root@FriedlyARMdriver]#catrtcrtc_time:05:21:48rtc_date:2000-05-05alrm_time:00:00:00alrm_date:1970-01-01alarm_IRQ:oalrm_edig:o24hr:yeeriodic_IRQ:o还有由cla.c所创建的y虚拟文件系统文件:[root@FriedlyARMcla]#wd/y/cla[root@FriedlyARMcla]#ldiiutetci_geericvcfirmwareledci_hotvideo4liuxgrahicmemvru2oudvtcoolehwmomicrtcttyi2c-adatermmc_hotci_deviceuii2c-devmtdci_diku_device[root@FriedlyARMcla]#lrtcrtc0提示一下,该系统设备文件操作在RTC子系统核心rtc-dev.c文件中。taticcottructfile_oeratiortc_dev_fo={.ower=THIS_MODULE,.lleek=o_lleek,.read=rtc_dev_read,.oll=rtc_dev_oll,.ioctl=rtc_dev_ioctl,.oe=rtc_dev_oe,.releae=rtc_dev_releae,.fayc=rtc_dev_fayc,}3.MTD子系统层次相对而言,MTD会比较复杂,图1.10所示为Liux中MTD所处的层次。图1.10Liux中MTD所处的层次图1.11所示为MTD子系统框架图。图1.11MTD子系统框架图对于MTD子系统的优点,简单解释就是它实现了驱动设计者要去实现的很多功能。换句话说,有了MTD,使得你设计NadFlah的驱动所要做的事情要少很多很多,因为大部分工作都由MTD做好了。MTD比较复杂,在此只做简单介绍,后面有专门小节进行详细描述,这里可以按照前面介绍的方式对y/cla/mtd下的目录进行查看。[root@FriedlyARMcla]#lmtdmtd0mtd0romtd1mtd1romtd2mtd2ro[root@FriedlyARMcla]#catmtd/mtd0/ameBootloader[root@FriedlyARMcla]#catmtd/mtd0/ize4194304在Liux中,一个类别的设备驱动被归结为一个子系统,如PCI子系统、iut子系统、u子系统、ci子系统等。在内核文件结构中,driver目录下第一层中的每个目录都算一个子系统,每个目录都代表一类设备。每个子系统中都有一个uy_iitcall宏,例如:uy_iitcall(iit_ci)ci子系统uy_iitcall(iut_iit)iut子系统uy_iitcall(u_iit)u子系统uy_iitcall(mic_iit)mic子系统针对某个子系统内核使用uy_iitcall宏来指定初始化函数。使用uy_iitcall宏表示该部分代码比较核心,应该视为一个子系统,而不仅仅是一个内核模块。内核中将同类的驱动以子系统的方式进行管理,在子系统中抽象出共性部分,有些以core方式出现,如I2C-core,iut-core等,并对外提供主要接口函数,而对于驱动开发者来说就要最大限度地使用内核提供的子系统,对数据结构进行初始化并按照子系统提供的接口函数注册到相应的子系统中,简化驱动开发。关于子系统之间的消息传递,内核有自己的一套机制,称为内核通知链,内核通知链在后面章节介绍。1.2.3分离思想在内核大部分驱动中采用的是设备驱动模型,设备驱动模型中重要的三角关系就是总线、驱动和设备。其中,驱动和设备就是分离思想的体现,实现了驱动和资源的分离,如latform总线,在内核中支持了大部分驱动,抽象出来的就是设备的注册,往往需要做的接口就是Reource的传递。Reource是设备资源的体现,通过设备驱动模型传递到驱动中,采用设备和驱动都向总线注册的方式工作。这种分离思想所带来的好处就是驱动开发者真正要做的就是对资源的使用,将设备对应的资源注册到模型中,具体驱动的实现都是类似的。具体设备和相应驱动可以理解为成员和行为的关系,这两者的关系在设计上采用的就是分离思想。分离思想也为驱动设计带来很强的可移植性,同时也为驱动设计带来灵活性,另一方面也增加了系统的复杂度。在I2C驱动中采用适配器与从设备分离的设计方式是一个很好的说明。图1.12所示为I2C多控制器与多设备关系例图。图1.12I2C多控制器与多设备关系例图假如有3个CPU的I2C适配器A、B、C控制三个从设备a、、c,如果直接控制,则必须要实现9个读写函数,即A_ReadWrite_a()A_ReadWrite_()A_ReadWrite_c()B_ReadWrite_a()B_ReadWrite_()B_ReadWrite_c()C_ReadWrite_a()C_ReadWrite_()C_ReadWrite_c()可以看出,如果有N个适配器和M个从设备,那么将需要N×M个驱动,并且这N×M个驱动程序必然有很多重复代码,而且不利于驱动程序的移植。采用分离的思想是将适配器和从设备分离,通过总线驱动的方式进行管理,适配器和从设备分别注册到系统的I2C-core中。每个适配器和从设备都有相应的描述,分离之后只需要N+M个驱动描述,而且适配器和从设备之间几乎没有耦合性,增加一个适配器或者从设备并不会影响其余驱动。1.2.4总线思想总线是设备模型中核心三角关系之一,也是联系驱动和设备的纽带。采用总线管理方式作为处理器与设备之间的通道,将所有设备都通过总线相连。对于没有相应总线的设备可以归到“latform”虚拟总线上,如CPU上的片上外设。通过总线的管理,驱动和设备分别向某条总线注册,一旦两者匹配,设备就可以找到相应的驱动,这样对于多个设备来说,只要注册不同的设备device即可。总线的核心作用是:总线相关代码屏蔽了大量底层琐碎的技术细节,为驱动程序员提供了一组使用友好的接口,简化了驱动程序开发工作。关于总线,同样地利用y文件系统可以观察到系统已经存在的总线,图1.13所示为系统总线情况。图1.13系统总线情况这种思想的好处是可以在不同体系的CPU中进行快速移植,而且驱动与具体设备分开,另外一个最重要的好处就是对设备的管理。本章小结本章主要对驱动开发的情况在一定程度上进行描述,对Liux内核的一些思想进行总结,这些优秀的软件思想除了给我们学习使用内核、编写驱动提供很大帮助之外,很多优秀的设计思想也是软件开发中在总体设计上可以借鉴的。本章内容初学起来比较抽象,可以在后面章节学习之后再回过头来再学习一遍,或者在做了一段时间驱动之后再回过头来学习,对比编写过的驱动进行理解。第2章内核编程及基础知识点2.1内核线程内核线程就是内核的分身,一个分身可以处理一件特定事情。这在处理异步事件,如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的内核叫做多线程内核(Multi-ThreadKerel)。内核线程跟普通进程之间最大的区别就是只运行在内核态,不受用户态上下文的拖累。另外,内核线程没有独立的地址空间,mm(内存管理结构)指针被设置为NULL,它只在内核空间运行,从来不切换到用户空间中,并且和普通进程一样,可以被调度,也可以被抢占。内核线程与普通进程之间的比较如下。(1)内核线程只运行在内核态,而普通进程既可以运行在内核态(运行在内核态,如进行系统调用时进入内核态),也可以运行在用户态。(2)因为内核线程只运行在内核态,所以它们只使用大于PAGE_OFFSET的线性地址空间。另一方面,不管是在用户态还是在内核态,普通进程都可以用4GB的线性地址空间。(3)内核线程由系统内核负责创建、调度和管理。内核可以直接调度同一进程包含的所有线程,在多处理器系统中能使这些线程并发执行,同时克服了不同进程的线程之间的不公平。用户线程执行一个导致阻塞的系统调用时会导致整个进程阻塞,即使该进程的其他线程仍具备运行条件;另外,若操作系统是以进程为单位调度的,则分配给进程的时间片就由该进程的所有线程分享,在不同进程的线程之间会产生不公平现象。内核线程一旦启动起来会一直运行,除非该线程主动调用do_exit函数,或者其他进程调用kthread_to函数结束线程的运行。1.内核线程的编写1)所需头文件#iclude//wake_u_roce()#iclude//kthread_create()、kthread_ru()#iclude//IS_ERR()、PTR_ERR()2)模板句柄:tructtak_truct*kThread=NULL(1)线程函数(结合kerel_ru使用)taticitthreadFu(void*data){…while(!kthread_hould_to()){Doomethig()chedule_timeout(HZ)//让出CPU运行其他线程,并在指定的时间内重新被调度}资源释放retur0}(2)线程启动kerel_thread是主要的创建线程实现函数,为最原始函数,最终调用do_fork函数。kerel_thread需要使用deamoize释放资源并挂到iit下,还需要使用comlete等待这一过程的完成。模板:kerel_thread(fu,,CLONE_KERNEL)itfu(void*arg){wait_queue_twaitdeamoize("ked%",ame)iit_waitqueue_etry(amwait,curret)while(!atomic_read(am-gtkilled)){et_curret_tate(TASK_INTERRUPTIBLE)...chedule()}et_curret_tate(TASK_RUNNING)retur0}使用kthread_create不马上运行,需要wake_u_roce。使用kthread_ru函数实现线程的创建和启动,是kthread_create和wake_u_roce的组合。kThread=kthread_ru(threadFu,"helloworld",线程名称)kthread_ru函数是创建线程kthread_create()和激活线程wake_u_roce()的封装,内核提供比较简洁的接口kthread_ru,一步到位。(3)结束线程在模块卸载时,可以结束线程的运行。使用下面的函数:itkthread_to(tructtak_truct*k)模板:taticvoidtet_cleau_module(void){if(tet_tak){kthread_to(kThread)//发信号给tak,通知其可以退出了kThread=NULL}}module_exit(tet_cleau_module)在执行kthread_to时,目标线程必须没有退出,否则会oo。原因很容易理解,当目标线程退出时,其对应的tak结构也变得无效,kthread_to引用该无效tak结构就会出错。为了避免这种情况的发生,需要确保线程没有退出,其方法如代码中所示。thread_fuc(){while(!thread_could_to()){wait()}}exit_code(){kthread_to(_tak)//发信号给tak,通知其可以退出了}这种退出机制很温和,一切尽在thread_fuc()的掌控之中,线程在退出时可以从容地释放资源。3)注意事项(1)在调用kthread_to函数时,线程函数不能已经运行结束。否则,kthread_to函数会一直等待。(2)线程函数必须能让出CPU,以便能运行其他线程,同时线程函数也必须能重新被调度运行。在例子程序中,这是通过chedule_timeout()函数完成的。不能使用mdelay让出CPU,而应该使用chedule_timeout(),否则将导致系统无法响应。可以使用mlee_iterrutile让出CPU,在线程运行之后查看to可以看出,CPU的占用率很低,而使用chedule_timeout对CPU的占用率比较高。4)性能测试可以使用to命令来查看线程(包括内核线程)的CPU占用率。命令如下:to-线程号可以使用下面命令来查找线程号:aux|gre线程名注:线程名由kthread_create函数的第三个参数指定。2.内核线程例子创建内核线程,每隔1打印一次。#iclude#iclude#iclude#iclude#iclude#iclude#iclude#iclude#iclude#iclude#iclude#ifdefSLEEP_MILLI_SEC#defieSLEEP_MILLI_SEC(MilliSec)\do{\logtimeout=(MilliSec)*HZ/1000\while(timeoutgt0)\{\timeout=chedule_timeout(timeout)\延时不到,继续调度}\}while(0)#ediftatictructtak_truct*kThread=NULLtaticitkThreadFu(void*data){char*mydata=kmalloc(trle(data)+1,GFP_KERNEL)memet(mydata,'\0',trle(data)+1)trcy(mydata,data,trle(data))while(!kthread_hould_to()){SLEEP_MILLI_SEC(1000)ritk("%\",mydata)}kfree(mydata)retur0}taticit__iitiit_kthread(void){kThread=kthread_ru(kThreadFu,"lxlog","kThread")retur0}taticvoid__exitexit_kthread(void){if(kThread){ritk("tokThread\")kthread_to(kThread)}}module_iit(iit_kthread)module_exit(exit_kthread)MODULE_AUTHOR("lxlog")MODULE_LICENSE("GPL")2.2内核定时器内核定时器是基于软中断的基础实现的,其作用是在未来某个时间点到达时执行一个相应的动作,该相应的动作就是调用定时器绑定的函数。通常很多情况下需要定时执行一个动作,或者周期性地执行一个操作,如定时查询某个状态、定时打印、喂看门狗等,这在实际系统中应用很广泛。内核中维护定时器是通过一个定时器链表来实现的,一旦一个定时器被添加到系统中,即该定时器会被连接到定时器链表上,内核系统会不断查询该链表,检测在定时器链表上是否有时间到达的定时器,一旦发现定时器时间到达,即触发软中断去调用并执行该定时器绑定的函数。定时器在初始化时绑定的函数类似于定时器的中断服务程序。图2.1为内核定时器链表图。图2.1内核定时器链表图定时器包含文件:#iclude#iclude内核对象表征结构体:tructtimer_littimer初始化:iit_timer(amtimer)timer.data=time传给fuctio的参数timer.exire=jiffie+HZ1个jiffie大约为1m,1HZ为1timer.fuctio=timer_futioadd_timer(amtimer)将定时器添加到系统中绑定函数的实现:voidtimer_futio(uigedlogara){传入的参数uigedlogara为初始化时初始化的参数timer.data=time若需要重复周期性地执行该定时器,即调用mod_timer(amtimer,时间)}修改定时:mod_timer(amtimer,jiffie+(HZ*2))实际上是先杀死定时器,重新设置时间大小,再启动定时器定时器的删除:del_timer(amtimer);一般使用del_timer_yc()代替del_timer(),前者立即删除不执行,后者会继续执行到下一个到期定时器过期后会被系统自动删除,除非调用mod_timer函数重新启动定时器。del_timer(amtimer)在定时器没有过期的情况下才有意义。泛滥使用定时器会导致系统效率下降,因为定时器是基于中断实现的,并且在中断中定时器去操作硬件要考虑与进入定时器中断前的操作硬件之间的互斥问题。【案例分析】定时器使用不当。在驱动中使用定时器,加载驱动正常,运行正常。当卸载时出现:RmmodDrv系统崩溃出现以下错误:#[135.961105]Ualetohadlekerelagigrequetfordataataddre0xe30aade8[135.968588]Faultigitructioaddre:0xc0025d28[135.973548]Oo:Kerelacceofadarea,ig:11[#1]…[136.111687]Kerelaic-otycig:Fatalexcetioiiterrut分析加载驱动和卸载驱动过程:加载:dev_tdevodevo=MKDEV(DRV_MAJOR,0)reult=regiter_chrdev_regio(devo,1,"Drv")cdev_iit(amDrv_dev_P-gtDrv_c_dev,amDrv_o)reult=cdev_add(amDrv_dev_P-gtDrv_c_dev,devo,1)iit_timer(amDrv_dev_P-gttimer)Drv_dev_P-gttimer.fuctio=(void*)amdDogFuDrv_dev_P-gttimer.exire=jiffie+HZmod_timer(amDrv_dev_P-gttimer,jiffie+10)retur0卸载:cdev_del(amDrv_dev_P-gtDrv_c_dev)uregiter_chrdev(MKDEV(DRV_MAJOR,0),"DRV")卸载过程为加载过程的相反过程,在加载时申请的资源应该在卸载中释放。从以上过程来看,定时器在加载时初始化,但在卸载时没有注销,所以在rmmod该驱动时会出现系统崩溃。将卸载改为:del_timer(amDrv_dev_P-gttimer)cdev_del(amDrv_dev_P-gtm_c_dev)uregiter_chrdev(MKDEV(DRV_MAJOR,0),"DRV")编译之后加载,使用rmmod卸载成功。【小结】包含文件:#iclude#iclude对象:tructtimer_littimer初始化:iit_timer(amtimer)timer.data=time传给fuctio的参数timer.exire=jiffie+HZ1个jiffie大约为1m,1HZ为1timer.fuctio=timer_futio――gtvoidtimer_futio(uigedlogara)add_timer(amtimer)修改定时:mod_timer(amtimer,jiffie+(HZ*2))实际上是先杀死定时器,重新设置时间大小,再启动定时器定时器过期后会被系统自动删除。del_timer(amtimer)在定时器没有过期的情况下才有意义。按照毫秒或者微秒的量度:uigeditjiffie_to_mec(cotuigedlogj)uigeditjiffie_to_uec(cotuigedlogj)uigedlogmec_to_jiffie(cotuigeditm)uigedloguec_to_jiffie(cotuigeditu)2.3链表包含头文件:#iclude主要结构:tructlit_head{tructlit_head*ext,*rev}使用时将lit_head放在实际数据结构中,相当于lit_head承载一个数据结构。如:tructtudet{charame[100]itumtructlit_headlit}链表相关例子参考在所附光盘中。主要接口函数:tructlit_headtudet_lit初始化链表:INIT_LIST_HEAD(amtudet_lit)在链表尾部添加成员元素:lit_add(am(tudet[i].lit),amtudet_lit)扫描链表:tructlit_head*olit_for_each(o,amtudet_lit)到链表尾部才结束。取出链表元素:lit_etry(o,tructtudet,lit)Liux内核代码中已经提供了对链表的基本操作,在iclude/liux/lit.h中包含链表初始化、插入、删除、搬移、合并和遍历等操作,在驱动中需要时直接使用即可。2.4内存操作Liux2.6所有的内存分配函数包含在头文件中,而原来的不存在。老版本内存分配函数包含在头文件中。内核最下层申请函数为:get_free_age()lt----gtfree_age()常用内存分配函数如下。(1)__get_free_ageuigedlog__get_free_age(gf_tgf_mak,uigeditorder)__get_free_age函数是最原始的内存分配方式,直接从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。__get_free_age在实现上只是封装了alloc_age函数。(2)kmem_cache_alloctructkmem_cache*kmem_cache_create(cotchar*ame,ize_tize,ize_talig,uigedlogflag,void(*ctor)(void*,tructkmem_cache*,uigedlog),void(*dtor)(void*,tructkmem_cache*,uigedlog))void*kmem_cache_alloc(tructkmem_cache*c,gf_tflag)kmem_cache_create/kmem_cache_alloc是基于la分配器的一种内存分配方式,适用于反复分配释放同一大小内存块的场合。首先用kmem_cache_create创建一个高速缓存区域,然后用kmem_cache_alloc从该高速缓存区域中获取新的内存块。kmem_cache_alloc一次能分配的最大内存由mm/la.c文件中的MAX_OBJ_ORDER宏定义,在默认的2.6.18内核版本中,该宏定义为5,于是一次最多能申请(1ltlt5)*4KB,也就是128KB的连续物理内存。分析内核源码发现,kmem_cache_create函数的ize参数大于128KB时会调用BUG()。(3)kmallocvoid*kmalloc(ize_tize,gf_tflag)kmalloc是内核中最常用的一种内存分配方式,它通过调用kmem_cache_alloc函数来实现。kmalloc一次最多能申请的内存大小由iclude/liux/kmalloc_ize.h的内容来决定,在默认的2.6.18内核版本中,kmalloc一次最多能申请的大小为131072B,也就是128KB的连续物理内存。测试结果表明,如果试图用kmalloc函数分配大于128KB的内存,编译则不能通过。(4)vmallocvoid*vmalloc(uigedlogize)前面几种内存分配方式都是物理连续的,能保证较短的平均访问时间。但是在某些场合,对内存区的请求不是很频繁,较长的内存访问时间也可以接受,这时就可以分配一段线性连续物理不连续的地址,所带来的好处是一次可以分配较大块的内存。vmalloc对一次能分配的内存大小没有明确限制。出于性能考虑,应谨慎使用vmalloc函数。(5)dma_alloc_coheretvoid*dma_alloc_coheret(tructdevice*dev,ize_tize,ma_addr_t*dma_hadle,gf_tgf)DMA是一种硬件机制,允许外围设备和主存之间直接传输I/O数据,而不需要CPU的参与,使用DMA机制能大幅提高与设备通信的吞吐量。在DMA操作中,涉及CPU高速缓存和对应的内存数据一致性问题,必须保证两者的数据一致,在x86_64体系结构中,硬件已经很好地解决了这个问题,dma_alloc_coheret和__get_free_age函数的实现差别不大,两者最终都调用_alloc_age函数来分配内存,它们所分配内存的大小限制一样,另外两者分配的内存都可以用于DMA操作。(6)ioremavoid*iorema(uigedlogoffet,uigedlogize)iorema是一种更直接的内存“分配”方式,使用时直接指定物理起始地址和需要分配内存的大小,然后将该段物理地址映射到内核地址空间。iorema用到的物理地址空间都是事先确定的,和上面的几种内存分配方式并不太一样,并不是分配一段新的物理内存。iorema多用于设备驱动,可以让CPU直接访问外部设备的I/O空间。iorema能映射的内存由原有的物理内存空间决定。(7)BootMemory如果要分配大量的连续物理内存,则上述分配函数都不能满足,只能用比较特殊的方式在Liux内核引导阶段来预留部分内存。在内核引导时分配内存:void*alloc_ootmem(uigedlogize)可以在Liux内核引导过程中绕过伙伴系统来分配大块内存。使用方法是在Liux内核引导时,调用mem_iit函数之前用alloc_ootmem函数申请指定大小的内存。如果需要在其他地方调用这块内存,可以将alloc_ootmem返回的内存首地址通过EXPORT_SYMBOL导出,然后就可以使用这块内存。这种内存分配方式的缺点是,申请内存的代码必须链接到内核中的代码里才能使用,因此必须重新编译内核,而且内存管理系统看不到这部分内存,需要用户自行管理。测试结果表明,重新编译内核后重启,能够访问引导时分配的内存块。通过内核引导参数预留顶部内存:在Liux内核引导时,传入参数“mem=ize”保留顶部的内存空间。比如,系统有256MB内存,参数“mem=248M”会预留顶部的8MB内存,进入系统后可以调用iorema(0xF800000,0x800000)来申请这段内存。几种分配函数的比较如表2.1所示。表2.1几种分配函数的比较最函数大分配原理其他名内存_get_f4M适用于分配较大量的连续物理内ree_直接对页框进行操作B存agekmem_cach128适合需要频繁申请释放相同大小基于la机制实现e_alloKB内存块时使用c基于kmallo128最常见的分配方式,需要小于页kmem_cache_alloc实cKB框大小的内存时可以使用现物理不连续,适合需要大内存,vmallo建立非连续物理内存但是对地址连续性没有要求的场c到虚拟地址的映射合dma_alloc_c基于__alloc_age实4M适用于DMA操作ohere现Btiorema实现已知物理地址到适用于物理地址已知的场合,如虚拟地址的映射设备驱动alloc_在启动kerel时,预小于物理内存大小,内存管理要ootm留一段内存,内核看求较高em不见2.5I/O端口几乎每种外设都通过读/写设备上的寄存器来访问,外设寄存器也称“I/O端口”,通常包括控制寄存器、状态寄存器和数据寄存器三大类,而一个外设寄存器通常被连续编址,描述的就是CPU对外设访问的方式取决于CPU对外设I/O端口编址的方式。ARM、M68K等只有一个物理空间,统一编址,外设I/O端口物理地址被映射到CPU单一物理地址空间,成为统一编址的一部分,即访问这种I/O地址无须专门外设的I/O指令。硬件上的差异对软件来说是完全透明的,可以将内存映射方式的I/O端口和外设内存统一看作I/O内存资源。X86等为外设专门实现一个独立空间,称为I/O地址空间,独立编址,与内存地址空间分开,并有专门的I/O指令(如X86的IN和OUT指令)访问。Liux在io.h头文件中声明了iorema(),用来将I/O内存资源的物理地址映射到核心虚拟地址空间(3~4GB)中。相应的取消映射函数为iouma()。2.6内核相关宏1.__iit位置:/iclude/liux/iit.h定义:#defie__iit__attriute__((__ectio__(".iit.text")))注释:这个标志符和函数声明放在一起,表示gcc编译器在编译时需要把这个函数放在.text.iitSectio中,而这个Sectio在内核完成初始化之后就会被释放掉。2.__iitdata位置:/iclude/liux/iit.h定义:#defie__iitdata__attriute__((__ectio__(".iit.data")))注释:这个标志符和变量声明放在一起,表示gcc编译器在编译时需要把这个变量放在.data.iitSectio中,而这个Sectio在内核完试读结束[说明:试读内容隐藏了图片]点击下载...

    2022-04-04 内核Linux 如何理解kabi 内核linux4.4.22

  • [每天读本书]《贪婪的多巴胺》驱动爱、性和创造力

    向下看,你看到了什么?你的手、桌子、地板、一杯咖啡、一台笔记本电脑或一张报纸。他们有什么共同点?你可以触摸所有这些东西。当你向下看时,你看到的是你能够控制的东西,你可以移动和控制它们,而不需要计划、努力或思考。无论是你的工作来的,别人给的,还是运气好的,你低头时看到的大部分东西都是你拥有的。现在抬头看,你看到了什么?天花板,墙上的图片,或窗外的东西:树木、房子、建筑物和天空中的云,以及远处的东西。它们有什么共同点?要触摸它们,你必须计划、思考和计算,花一点精力来协调,即使只是一点点。与我们向下看到的不同,上面的东西是我们必须思考和付出一定努力才能得到的。这种区别听起来很简单,但实际上并不难。然而,对于大脑来说,这种差异是一条分界线,两边有两种非常不同的思维方式,这也代表了两种完全不同的应对世界的方式。在你的大脑中,向下的世界由一些被称为神经递质的化学物质控制,它们让你感到满意,享受你现在拥有的一切。但当你把注意力转向向上的世界时,你的大脑依赖于另一种化学物质——一个单一的分子,它不仅让你突破指尖所指的领域,而且激励你追求、控制和拥有你不能立即抓住的世界。它驱使你寻找遥远的东西,不仅包括物质的东西,还包括看不见的东西,如知识、爱和影响力。无论是拿着桌子对面的盐瓶,坐宇宙飞船飞向月球,还是崇拜超越时空的神,这种化学物质都可以跨越地理或想象的距离,给我们一个指令。我们称向下化学物质为当前神经递质,它们可以让你体验一切,让你立即品尝和享受,或做出战斗或逃跑的反应。向上的化学物质是不同的。它让你渴望你没有的东西,并驱使你寻找新的东西。如果你服从它,它会奖励你;如果你不服从它,它会让你痛苦。它是创造力的源泉,甚至是疯狂的源泉;它是上瘾的关键因素和康复的方式;它使雄心勃勃的管理者不惜一切代价追求成功,使成功的演员、企业家和艺术家在拥有梦想中的金钱和声誉后能够长期工作;它使幸福的丈夫或妻子绝望地寻找婚外刺激。这是一种不可否认的欲望来源。这种欲望驱使科学家寻找解释,哲学家寻找秩序、理由和意义。正因为如此,我们仰望天空寻求救赎;正因为如此,天堂在上面,地球在下面。这不仅是我们梦想引擎的燃料,也是我们失败后绝望的原因。这就是为什么我们不断探索和成功,也是为什么我们发现活富裕的原因。这就是为什么我们不会一直快乐。对你的大脑来说,这个单一的分子是一个超级多用途的设备,通过成千上万的神经化学过程,促使我们获得超越的乐趣,探索我们想象中的各种可能的宇宙。哺乳动物、爬行动物、鸟类和鱼类的大脑都含有这种化学物质,但没有一种生物拥有这么多人类。这既是一种祝福,也是一种诅咒;它既是一种动力,也是一种奖励。它的形式很简单,包括碳、氢、氧和氮原子,但结果非常复杂。它是多巴胺,一个讲述整个人类行为的故事。如果你现在想感觉到它,如果你想让它控制你,你可以这样做:抬起头,向上看。注:以上摘自本书前言。————————————–原作名:TheMoleculeofMore作者:[美]丹尼尔·迈克尔·E.朗译者:郑李遥评分:8.0我们的身体受到向上和向下两种物质的控制。向下是指控制当前的神经递质,它们决定了我们当前的感觉;向上是指决定我们长期计划、愿景和未来期望的多巴胺。因此,多巴胺并不像许多人认为的那样是一个快乐的分子。它实际上是一种欲望分子,当我们得到很多,让我们有更高的期望,更大的目标。多巴胺让我们从长远来看,追求更高的目标,但也让人们渴望无尽,不知道如何满足。它不仅能让你体验成功的喜悦,还能让成功变得平淡;它让你投入一段关系,但也让原来的深情被岁月磨平;它给了你超长的智商,但也让你远离疯狂……充分了解这种物质如何影响我们的情绪、决策和生活,可以帮助我们充分发挥大脑的潜在功能,提高效率,获得更好的表现。...

    2022-04-05 神经递质多巴胺升高会怎样 神经递质多巴胺分泌失调

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园