书名:操作系统基础与实践——基于openEuler平台
ISBN:978-7-115-64787-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
主 编 郝家胜
副 主 编 肖寅东 周文建 王培丞
责任编辑 邓昱洲
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书围绕操作系统基础、UNIX设计思想和openEuler实践3个方面展开,并将理论知识、设计思想和应用实践紧密结合。本书内容涵盖绪论、操作系统初识、openEuler使用入门、操作系统原理与实践、openEuler开发环境、嵌入式操作系统开发、网络基础与管理、服务器操作系统管理,以及openEuler开源创新等。本书合理安排理论知识、精心设计操作实例,注重有机结合、循序深入,以帮助读者深入理解Linux优秀设计思想,灵活运用其高效系统功能,并从开源社区中更好地学习和成长。
本书适合作为高等院校计算机、自动化、电子测量等专业方向本科生和研究生学习操作系统的教材或参考书,也适合 Linux 系统开发和运维人员阅读,对从事计算机相关工作的专业人员具有参考价值。
主 任:吕卫锋 北京航空航天大学副校长
副主任:马殿富 北京航空航天大学计算机学院教授
何钦铭 浙江大学计算机科学与技术学院教授
何炎祥 武汉大学计算机学院教授
彭红华 华为ICT战略与业务发展部总裁
卢 广 华为中国战略与Marketing部部长
孙 虎 华为服务Fellow、首席项目管理专家
孙 刚 华为ICT人才伙伴发展部部长
编 委:(按姓氏音序排列)
范 举 中国人民大学信息学院教授
方 娟 北京工业大学计算机学院副院长
郭 耀 北京大学计算机学院副院长
刘耀林 华为ICT人才伙伴发展部校企合作总监
苏统华 哈尔滨工业大学软件学院副院长
孙海龙 北京航空航天大学软件学院教授
王 菡 北京邮电大学叶培大创新创业学院副院长
王景全 华为基础软件人才发展总监
王 新 华为中国人才生态发展总监
魏 彪 华为ICT学院解决方案架构师
周 烜 华东师范大学数据科学与工程学院副院长
当下,信息技术的浪潮正以惊人的速度重塑着全球社会经济的版图。云计算、大数据、人工智能、物联网等新一代信息技术不断涌现,推动产业结构经历深刻的变革。在这场技术革命中,基础软件扮演着至关重要的角色,它不仅是信息系统的基石,更是技术创新的源泉和信息安全的守护者。
回首数十年来我国基础软件的发展历程,国家在这一领域倾注了大量资源。得益于国家科技重大专项和政策的有力支持,我国的基础软件实现了迅猛发展,步入了快车道。国产软件阵营蔚为壮观,操作系统、数据库管理系统、中间件等核心领域硕果累累,不仅在国内市场占据了一席之地,更在多个关键领域跻身国际先进行列。随着开源生态的逐步繁荣,我国也积极响应,拥抱开源生态建设。我们目睹了openEuler、OpenHarmony等国产操作系统的蓬勃发展,见证了MindSpore人工智能框架的突破性创新,以及openGauss数据库和Ascend C编程语言的闪亮登场,在华为等科技企业和广大开发者的共同努力下,基础软件在开源生态蓬勃发展的推动下取得了更大的成就。这些成就是我国基础软件实力的有力证明,也是自主创新能力的生动展示。它们不仅彰显了我国在全球化技术竞争中的坚定立场,更体现了对技术自主权的坚守与对自主创新的决心。
在全球化的技术竞争中,自主创新是我们的必由之路,开源生态建设是关键一环。开源生态支持多元化的技术体系和发展路径,有助于形成多样化的产业生态系统,满足不同行业和领域的需求;推动了技术和接口的标准化,使得不同软件之间能够更容易地实现互操作和集成;促使资源共享,减少了重复开发和资源浪费,提高了资源的利用效率。因此,未来基础软件的发展离不开开源生态的建设。
当前,在核心技术、产业生态和国际标准制定上,我国的基础软件与国际先进水平仍有一定的差距。我们必须深化对基础软件的认识,加大研发投入,更加积极地拥抱开源生态建设,培育卓越人才,以确保在科技革命和产业变革中占据有利地位。当下,各大高校正在构建相关课程体系,强化理论与实践结合,建立先进的基础软件实验室,通过校企合作,推动学术与产业的融合,致力于培养具有国际视野的高水平基础软件人才。
由此,我们精心编纂了这一丛书,以响应国家对基础软件国产化替代的战略需求,为信息技术行业的人才培养提供有力的知识支持。本丛书以国产基础软件为核心,全面覆盖操作系统、数据库、编程语言、人工智能等关键技术领域,深入剖析基础软件的发展历程、核心技术、应用案例及未来趋势,力图构建多维度、立体化的知识架构,为读者提供全方位的视角。
本丛书在内容布局上,注重系统性与实用性的结合,侧重于培养读者的实践能力和创新思维。我们不仅深入探讨基础软件的理论基础与技术原理,更通过丰富的实际案例与应用场景,展示华为等企业在该领域的最新成果与创新实践,引导读者将理论知识转化为解决实际问题的能力。本丛书的编撰团队由国内一流院校的教师和业界资深专家组成,他们深厚的学术背景和丰富的实践经验,为丛书内容的权威性和实用性提供了坚实保障。
我们期望通过这套丛书,传播国产基础软件的先进理念与优秀成果,激发广大师生与从业人员的使命感,鼓励他们投身于我国基础软件国产化的创新征程。我们坚信,唯有汇聚全社会的智慧与力量,持续推动创新,才能实现我国基础软件的自主可控与高质量发展。让我们携手并进,共同推动新一代信息技术的繁荣发展,助力我国从信息技术大国迈向信息技术强国。
北京航空航天大学副校长 吕卫锋
当下,AI创新风起云涌,大模型“百花齐放”,云计算步入“黄金时代”……我们看到,以人工智能、云计算、大数据等为代表的新一代信息技术加速突破应用,推动社会生产方式变革、创造人类生活新空间。基础软件作为新一代信息技术的底座,为信息产业和数字经济的发展提供了强有力的支撑。它不仅是各种应用软件运行的平台,还承载数据处理、网络通信、系统安全等核心功能。一个强大、稳定、高效的基础软件体系,能够确保整个信息产业和数字经济的顺畅运行,为各种创新应用提供坚实的土壤。因此,基础软件技术也被称为“根技术”。
为构筑软件行业的根基,华为与全球伙伴一起,围绕鲲鹏、昇腾、欧拉、CANN、昇思等产品,构建数字基础设施生态,打造数字世界的算力底座。同时,华为秉持包容、公平、开放、团结和可持续的理念,共建世界级开源社区,加速软件创新和共享生态繁荣。
人才是高科技产业的关键资源。基础软件作为底层技术,通用性和专业性更强,因此需要更多对操作系统领域有深入研究、有自主创新能力的人才。
在ICT人才培养方面,华为已沉淀了30多年的丰富经验。华为将这些在ICT行业中摸爬滚打积累而来的经验、技术、人才培养标准贡献出来,联合教育主管部门、高等院校、教育机构和合作伙伴等各方生态角色,通过建设人才联盟、融入人才标准、提升人才能力、传播人才价值,构建良性ICT人才生态,从而促进科技进步、产业繁荣,助推社会可持续发展。
为培养高校ICT人才,从2013年起,华为携手全球高校共建华为ICT学院。这一校企合作项目通过提供完善的课程体系,搭建线上学习和实验平台,培养师资力量,携手高校培养创新型和应用型人才;同时,通过例行发布ICT人才白皮书,举办华为ICT大赛、华为ICT人才双选会等,营造人才成长的良好环境,促进人才培养良性循环。
教材是知识传递、人才培养的重要载体。华为通过校企合作模式出版教材,助力高校人才培养模式改革,推动ICT人才快速成长。为培养基础软件人才,华为聚合技术专家、高校教师等,倾心打造华为ICT学院教材。本丛书聚焦华为基础软件,内容覆盖 OpenHarmony、openEuler、openGauss、MindSpore、Ascend C这5个方向,系统梳理和融合前沿基础软件技术;包含大量基于真实工作场景编写的行业实际案例和实操案例,理实结合;将知识条理清晰,由浅入深地拆解分析,逻辑严谨;配套丰富的学习资源,包括源代码、实验手册、在线程、测试题等,利于学习。该丛书既适合作为高等院校相关课程的教材,也适合作为参与相关技术方向华为认证考试的参考书,还适合计算机爱好者用以学习、探索基础软件开发和应用。
智能化的大潮正在奔涌而来,未来智能世界充满机遇和挑战。亲爱的读者们,请在基础软件的知识海洋中遨游,完成知识积累,拓展实践能力,提升软件技能,为未来职场蓄力。华为也期待与你们携手,共同打造根深叶茂的操作系统基座和开源生态系统,为促进基础软件根技术生态发展、实现科技创新、促进数字经济高速增长贡献力量。
华为ICT战略与业务发展部总裁 彭红华
随着ICT(Information and Communication Technology,信息通信技术)与“云边端”技术的迅猛发展,操作系统作为基础软件在各行各业扮演着越来越重要的角色。为满足广大读者学习当代操作系统基础知识和应用技能的需求,我们基于产教融合教学改革的优秀成果编写了本书。
本书注重理论知识、设计思想与应用实践的紧密结合,精简组织必要的理论基础知识,力求化繁为简;精心设计经典的实践案例,力求画龙点睛;“分而治之”的设计思想贯穿全书。全书共9章,分别介绍了操作系统发展、操作系统初识、openEuler使用入门、操作系统原理与实践、openEuler开发环境、嵌入式操作系统开发、网络基础与管理、服务器操作系统管理,以及openEuler开源创新等内容,并提供文件系统操作、进程监控与进程管理、Shell脚本编程、my-utils跨平台构建、嵌入式开发环境构建、创建VLAN、配置firewalld、WordPress建站等应用案例。本书将这些知识有机地联系起来,用案例来诠释相关设计思想和理论知识,以期帮助读者学以致用、格物致知。
本书选择openEuler作为实践环境。openEuler是对Linux操作系统的创新和发展,在内核和应用上都体现了ICT与“云边端”时代操作系统的新型特征,在使用上则兼容其他Linux操作系统。作为面向数字基础设施的新一代开源操作系统,它支持服务器、云计算、边缘计算、嵌入式等应用场景,有利于推动多样性计算、促进生态繁荣、加速技术创新,对人工智能与物联网领域新型创新人才的培养具有重要的意义。
本书具有两个突出特色,可帮助读者深入理解Linux的优秀设计思想,并灵活运用其高效的系统功能。一是致力于将操作系统的基本原理、经典设计原则与实际应用相结合。通过讲述Linux操作系统基本原理和UNIX“分而治之”的设计哲学(例如“只做一件事,并做到极致”等),帮助读者深入理解wc、sort、find、Vim、grep、sed、gawk、管道、重定向等经典UNIX工具和机制,做到“知其所以然”并灵活运用。即使对于日志管理等系统维护方面的内容,本书也深入分析了Rsyslog等软件的优秀设计逻辑。二是基于openEuler操作系统,提供了丰富的实用案例,涉及系统日常使用、文本流处理、应用开发、嵌入式Linux开发、网络配置、系统安全等内容,可帮助读者快速掌握和灵活运用Linux操作系统。
本书的编写团队由具有丰富教学经验和深厚工程背景的教师组成。团队成员均具有长达近30年的UNIX类操作系统开发经验,近年来支持并完成了机器人系统、虚拟仪器等多项嵌入式Linux应用科研课题,以及教育部产学合作协同育人项目、教育部-华为“智能基座”合作课程等项目。但由于编者水平所限,书中难免存在错误或疏漏之处,恳请读者批评指正。
感谢华为公司提供优质的产教融合资源,赵小虎、杨磊、李洋等众多工程师提供了openEuler 相关资料与技术支持,并在本书的撰写过程中提出了非常详尽的意见和建议。感谢张天丽、马镭、汪洋等研究生在图表制作和文字校对等工作上的贡献。
希望本书能够成为读者学习和应用openEuler操作系统的“良师益友”,帮助读者在ICT与“云边端”时代的深造和实践创新中打下坚实的基础。
编者
2024年8月
学习目标
1 了解操作系统的基本功能和对行业的影响
2 了解操作系统发展的基本脉络
3 了解openEuler操作系统的历史与现状
OS(Operating System,操作系统)的发展与ICT时代存在着密切的关系。操作系统作为最重要的基础软件,直接影响数字基础设施发展的水平,已成为ICT时代产业发展的重要基石,并对ICT时代的演进产生深刻影响。
操作系统是计算机的系统软件,它像一个大管家一样管理和控制计算机的各种硬件和软件资源,为应用程序提供通用的计算平台,并为用户提供操作界面。操作系统是计算机系统和应用程序的中介,负责协调和分配各种资源,以保障计算机系统高效、可靠和安全地运行。例如,在台式计算机、笔记本电脑等PC(Personal Computer,个人计算机)中,Microsoft Windows就是一种非常流行的操作系统。它支持磁盘、显卡、声卡、网卡多种硬件设备,提供文件系统、网络连接等系统服务和管理工具,以及易于使用的用户界面。此外,在含有电子设备的各种产品中,如手机、汽车、飞机等,也运行着操作系统。
如今,在以信息技术和通信技术为主旋律的ICT时代,大数据、人工智能和物联网等应用高速增长,现有计算系统的能力和规模面临严峻挑战。一方面,CPU、GPU、TPU、NPU等多种不同体系的新型芯片不断涌现,计算系统呈现出体系结构、性能规模等硬件的多样性,如高性能服务器、AI边缘设备和低功耗的嵌入式系统等;另一方面,云边端协同、万物互联等新型计算架构和人工智能赋能的新型计算业务不断迭代,计算系统呈现出资源调度、服务架构等场景的多样性,如云原生计算、多核并发和智能交互等。ICT时代呈现的这些复杂变化,对操作系统提出了全新的要求。
操作系统的重要性使得各企业、高校、研究所都投入了大量精力来研究它、使用它,使操作系统成为 ICT 时代的基础设施。万丈高楼平地起,本章将简要介绍操作系统的起源和发展。
计算机刚出现时,为了管理计算机具备的资源,为程序员提供一个可以快速开发程序的环境,业界涌现出了很多操作系统,包括IBM OS/360、DEC VMS、MS-DOS等。经过漫长的演进,目前的操作系统主要包含两个系列:一是从MS-DOS发展过来的Windows操作系统;二是以UNIX为基础的各类操作系统,如开源的Linux、BSD,为便携设备设计的Android、macOS、iOS等移动操作系统,这些操作系统均符合POSIX(Portable Operating System Interface,可移植操作系统接口)协议要求,可统称为UNIX类操作系统。
1965 年,美国麻省理工学院和通用电气公司、贝尔实验室共同参与 Multics(Multiplexed Information and Computing Service)项目,旨在开发一套能运行在GE-645等大型主机上的多用户、多任务分时操作系统。这些参与者是当时全球领先的研究机构和企业,通用电气公司具有设计和生产全新硬件的能力,能够更好地支持分时和多用户体系计算机;贝尔实验室则是业界著名的研究机构,且在20世纪50年代就打造了自己的操作系统。但Multics的过度设计导致其太过复杂,开发周期长、成本高昂,并且由于系统庞大且运行缓慢,不被市场看好,于1969年宣告失败。尽管Multics项目失败了,但它对后续操作系统的发展产生了深远影响。
1969年,贝尔实验室退出Multics项目后,项目组成员肯·汤普森(Ken Thompson)在闲置的DEC PDP-7小型机上写了一个叫“太空旅行”的游戏,并沉溺其中。然后,他发现只需要再编写3个程序,就可为PDP-7提供一个完整的操作系统。汤普森利用妻子带孩子度假的3周时间,用汇编语言实现了这个大胆的想法。这3个程序分别是一个用来创建代码的编辑器,一个将代码转换为机器可运行文件的汇编器,以及一个包含执行调用功能、Shell交互程序的“内核外层”。这个新的操作系统吸取了Multics的失败教训,设计非常简单精巧,受到丹尼斯·里奇(Dennis Ritchie)等人的关注,很快就有了一小群用户。
这个新的操作系统被命名为UNICS(UNiplexed Information and Computing Service),表示它提供的是“毫不复杂的信息与计算服务”,以突出与 Multics 完全不同的设计思想。UNICS吸引了贝尔实验室的一群天才程序员,他们不断提升UNICS的功能,添加新的工具。不久之后,这个年轻的多用户、多任务操作系统改名为UNIX。
UNIX的第1版于1971年11月发布,附带了Fortran 编译器。许多被沿用至今的经典小程序也都有了雏形,如ar、cat、chmod、chown、cp、dc、ed、find、ln、ls、mail、mkdir、mv、rm、sh、su和who等。由于具备优秀的特性,UNIX在发布初期,就得到迅速传播。
此外,由于汇编语言限制了UNIX的功能扩展和应用传播,汤普森和里奇决定使用BCPL(Basic Combined Programming Language,基本组合编程语言)进行开发。在开发过程中,他们对BCPL做了进一步的改进,推出了B(取BCPL中的第一个字母)语言,后来发现使用B语言还是无法达到预期要求。随后,里奇和布莱恩·柯林汉(Brian Kernighan)在B语言的基础上重新设计了一种新语言,支持丰富的数据类型和大量运算符的编程语言。这种新语言较B语言有质的飞跃,被命名为C语言。1973年,C语言基本成型,UNIX也完成了用C语言的重写,功能稳定且具有良好的可移植性和可维护性,为UNIX的进一步推广和普及奠定了坚实的基础。
像所有起步工作一样,UNIX的早期开发也遇到了各种各样的困难,起初它运行在PDP-7这样的“旧设备”上,在那个以大型机器为主的年代,小型机器可做的事情非常有限,而且贝尔实验室高层并没有对操作系统开发表现出过多兴趣,造成UNIX的开发者们“无机可用”。当然,历史的巧合总是相似的,机遇出现了。当时,贝尔实验室需要申请大量专利,编写具有行号标注需求的文档使得专利申请团队非常痛苦。因此,贝尔实验室同意购置性能一般的PDP-11用于准备专利申请材料,UNIX小组负责编写所需的程序。UNIX就这样作为专利申请文档工具成功地“存活”了下来。这个专利排版工具就是Nroff,后来广泛应用于各类UNIX操作系统,并对后续的文档排版系统产生了深远的影响。图1.1所示为肯·汤普森和丹尼斯·里奇在PDP-11上运行早期的UNIX。
图1.1 肯·汤普森和丹尼斯·里奇在PDP-11上运行早期的UNIX
当UNIX发展到第6版时,这个系统已经成为广泛应用的通用、多用户、交互式操作系统。该系统核心特色在于其分层设计的可拆卸文件系统,具有高度兼容性的文件、设备输入输出接口。同时,它还支持100多个子系统和十几种语言。UNIX借助可移植的C语言获得了在多种机器之间移植的能力,这一能力对操作系统的发展非常重要。当时的形势和现在的不同,计算机行业远没有现在发达,也没有形成垄断性的商业机构,不同公司设计的计算机使用的硬件各不相同,操作方式也百花齐放。程序员需要为每种计算机编写不同的程序来适应不同硬件各自的特点,非常痛苦。而操作系统提供了统一的可移植接口,使编写程序的过程大大简化,“拯救”了广大计算机程序设计人员,为后来计算机行业的发展奠定了基础。
操作系统的发展按照用户界面划分大致可分为3个时期。第一个时期是以控制台为代表的字符时期,控制台最开始是由显示屏和键盘构成的机器,人们通过它访问计算机,看到的界面是由字符构成的,没有图形元素;第二个时期是以Windows等操作系统为代表的图形化桌面时期,这个时期的计算机操作系统普遍具有图形化桌面,此时的计算机因为简单的操作、强大的功能走入了千家万户、各个行业;第三个时期是以万物互联为特征的ICT时代,此时操作系统具有形态各异的用户界面,用户可通过设备互联的方式使用操作系统。
早期UNIX在全世界范围内的推广方式与后来的开源社区有着异曲同工之妙,当时AT&T公司和高校签署了商业保密协议,高校通过支付象征性的“许可费”就能够获取该系统的源码。很多高校对其展开了深入研究,自由地对其进行分析和改进,相互交流意见和成果,由此促进了UNIX的发展。UNIX家族如图1.2所示。
图1.2 UNIX家族
UNIX的发展速度超乎想象,用户群体在世界各地涌现,并出现了许多重大技术革新。开源社区还建立了USENIX这样的UNIX用户组,针对许多主题开展会议演讲并推出教程,大大促进了UNIX的传播。当然,这种推广模式也为后来的版权之争埋下了隐患。
BSD(Berkeley Software Distribution,伯克利软件套件)又称为Berkeley UNIX,诞生于加利福尼亚大学伯克利分校,它以完整源码的形式发布。作为“UNIX家族”举足轻重的一个分支,为UNIX的发展做出了重要贡献,如UNIX V5中包含TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)堆栈等最初由BSD编写的大量代码。BSD还有一个不那么有名的解释“Because Sleep is Dumb”。因为早期的BSD开发者们经常在伯克利分校的计算机实验室里通宵达旦地工作,这种作息导致很多人都开玩笑地说“BSD是在夜间开发的”。这也反映了开发者们对于创造和探索的热情,以及他们对技术的投入。
从1979年的V7版本开始,UNIX的许可证开始禁止高校使用UNIX源码,包括在课堂中学习。如果想要继续使用,就要支付价格不菲的费用获得授权。1984年AT&T公司分解后,终于放弃了“垄断”,立即将UNIX进行商业化。到了20世纪80年代后期,UNIX日益流行,AT&T公司将许可费从最初的99美元稳步提高到250000美元。
UNIX在发展过程中逐步形成了两大流派:AT&T公司的商业化闭源UNIX版本和BSD的开源系列。这种格局在20世纪90年代初期达到极盛,不同的UNIX版本有100多种,其中包括SunOS、IBM AIX、HP-UX、Xenix OS、Solaris等,这些变种均基于UNIX开源版本派生而来,多发展为闭源的商业版。
20世纪90年代初期,伯克利分校的CSRG(Computer Systems Research Group,计算机系统研究组)创立了BSDi公司,销售自己的BSD发行版,这无疑触动了UNIX版权持有者的商业利益,从而引发了一场“专利战争”。1992年,UNIX的版权持有者AT&T公司起诉了BSDi公司,指控他们将UNIX的代码与BSD的代码混合使用,侵犯了AT&T公司的UNIX版权。这场诉讼持续了多年,最终于1994年结案。解决方案包括从BSD代码中移除涉及UNIX的部分,并支付AT&T公司提出的赔偿诉求。从此之后,BSD就成了一个完全重新编写的操作系统。
UNIX的版权争议一直存在并发酵,SCO(Santa Cruz Operation)公司通过购入Novell公司(贝尔实验室的合作方)间接获取了部分UNIX版权,2003年该公司起诉IBM,声称IBM将SCO的UNIX代码非法插入了Linux操作系统,并通过这种方式削弱了SCO UNIX的市场份额,要求IBM支付50亿美元的侵权赔偿。当时,若SCO公司胜诉则可认定该公司拥有对UNIX的版权,IBM自有的AIX、Sun公司的Solaris等一系列操作系统均会受到影响。这场“专利战争”持续了7年之久,诉讼期间这个问题引发了广泛的关注和讨论,直到2010年才以SCO公司败诉而结束。值得一提的是,这场“专利战争”对开源软件运动产生了重要影响,它不仅提高了当时刚诞生的Linux操作系统(一种开源UNIX变种)的法律地位,还为Linux的快速发展提供了重要的历史时机。
BSD开创了现代计算机的潮流。伯克利分校的UNIX率先包含库,以支持互联网协议栈(Stack)、伯克利套接字(Socket)。通过将套接字与UNIX操作系统的文件描述符相整合,库用户可以通过计算机网络读写数据,跟直接在硬盘上操作数据一样容易。
随着微处理器的发展和个人计算机的问世,新型的桌面操作系统出现并迅速发展。若字符时期的计算机还是专业人士独享的“玩具”,那么图形化桌面时期的计算机则成为人们工作、生活必不可少的部分。形成这一局面的原因,除了制造商将硬件成本不断降低,快捷、操作方便的操作系统是更重要的“功臣”。
1984 年,苹果公司推出了非常成功的一代计算机 Macintosh,它上面运行的 Macintosh System 1(见图1.3)具有便捷的图形化功能,支持窗口显示、鼠标操作、文件夹访问和拖放等功能,使它成为当时风靡一时的计算机。可以说正是这台计算机的问世和推广开启了计算机的图形化桌面时代。macOS借鉴了部分BSD代码,仍可视为UNIX操作系统的延续。不过,苹果公司一贯的封闭特点,使其操作系统不兼容其他厂商的硬件,仅在平面设计、音视频制作等专业领域内使用。当今,macOS仍是非常受欢迎的桌面操作系统之一,它具有非常高的稳定性和安全性,以及独特的用户界面和设计风格。macOS具备出色的设备兼容性,提供广泛的应用程序支持,以及与iCloud等多种应用服务的无缝集成。
图1.3 苹果Macintosh System 1的GUI
1985年,微软公司发布了1.0版本的Windows,将兼容IBM个人计算机的操作系统带入图形化桌面时代。Windows 3.1的GUI如图1.4所示。Windows提供操作简便的图形化界面、优秀的游戏和多媒体体验,受到了企业和个人用户的青睐,迅速成长为桌面操作系统领域当之无愧的“霸主”,直至今天。1.0版本的Windows并没有得到广泛应用,微软公司快速对界面和功能进行了改进和扩展,陆续推出了一系列版本。1995年,微软公司发布了划时代的Windows 95,其具有更加稳定和成熟的系统架构,以及更多实用的功能和工具,如Internet Explorer、MSN Messenger等。2001年,微软公司发布了Windows XP,这是Windows发展史上非常经典的一个版本,是个人计算机的里程碑。Windows 10是目前全球最受欢迎的桌面操作系统之一,它拥有强大的功能和广泛的应用范围,包括对各种设备的支持、AI(Artificial Intelligence,人工智能)助手、云服务、虚拟化技术,以及更好的游戏和多媒体体验等。微软公司在2021年发布了最新一代操作系统Windows 11,在底层架构、系统功能和安全性等方面进行了优化和增强,但稳定性和兼容性还有待提升。
图1.4 Windows 3.1的GUI
GNU/Linux的蓬勃发展也是UNIX的涅槃重生。到了20世纪80年代,几乎所有的软件都是专属软件,这意味用户必须付费才能使用,并且无法对软件进行修复和扩展,在技术层面阻碍了UNIX的应用和发展。
一些黑客程序员发起了开源运动,迎来了操作系统的开源创新与发展新模式。在这个过程中,有两个里程碑式的开源项目起到了至关重要的作用,一个是BSD项目,另一个是GNU项目。
BSD项目发起于加利福尼亚大学伯克利分校。在这个以自由著称的学校,校友肯·汤普森创造并带回了UNIX,他的在校研究生学弟比尔·乔伊(Bill Joy)在1977年编译了第一版BSD。BSD开启了开放源码的传统,每一个发行版包含每个部分的完整源码。BSD在1989年对所有人开放了操作系统网络部的源码,这是早期开源运动的重要里程碑之一,推动了BSD家族的发展和广泛应用,并对后来的开源软件运动产生了深远影响。
在1999年的DEF CON黑客大会上,OpenBSD的创始人西奥·德若特(Theo de Raadt)公开讨论了微软公司的后门程序Back Orifice 2000,并对其进行了严厉批评。作为回应,他承诺将在OpenBSD操作系统中加入对抗后门程序的安全措施。这个事件引起了广泛关注,OpenBSD因此成了安全性和反后门的代名词之一。操作系统安全越来越受到人们的重视,开源也成为操作系统业界应对此类信任危机的一个重要手段。
GNU项目是由理查德·斯托曼(Richard Stallman)于1983年发起的一个免费的软件项目,旨在开发出一个完整的UNIX类操作系统,其源码能够不受限制地被修改和传播。为了支持GNU项目,理查德·斯托曼还创立了自由软件基金会(Free Software Foundation),专门用于资助开源软件社区的发展。到了1990年,GNU项目已经开发出了一个包含UNIX操作系统的所有主要部件的环境,包括编译器、编辑器、调试器等必要的部件,但还缺乏一个可用的内核。
GNU/Linux是开源创新模式下诞生的一个新型操作系统。1991年,一个叫林纳斯·托瓦兹(Linus Torvalds)的计算机专业的学生编写了一个命名为“linux”的内核,将其免费发布在互联网上。这个内核与GNU项目已经开发的软件组成了一个新的操作系统,即GNU/Linux,通常直接简称为Linux。这个操作系统使用GNU GPL(General Public License,通用公共许可证),授权任何人都可修改、发布和使用,这一特性使得该操作系统随着互联网的发展快速传播,并形成了一个庞大的开源社区。
GNU项目已经取得了优秀的成绩,却常常被忽略。GNU项目的成功在于其提供了一套完整的工具链,使开发者可以自由地使用、修改和分发软件,从而推动了开源软件和自由软件运动的发展。
在开源社区的推动下,人们围绕Linux内核创作了多个优秀的发行版,如最初的Slackware Linux、大名鼎鼎的Debian、Red Hat Linux等。这些发行版将各种应用程序和Linux内核打包在一起,为用户提供了非常方便的安装、升级等管理手段,极大加快了Linux的推广。除了开源软件采购和许可成本低的优势外,庞大的社区和用户群体使得软件的安全性、可信度和稳定性都得到了较好的保证,厂商还可根据自己的业务要求对软件进行定制和优化,提高系统的性能和适应性。正因如此,华为、谷歌、IBM、英特尔等许多国内外企业都投入了大量人力、物力资助自由软件基金会,这些贡献支撑了开源软件行业的蓬勃发展。
在ICT时代,用户可通过各种互联手段使用操作系统,从人们天天用的手机、工厂中的机器人、各种设备上的传感器,到服务器上的云容器,都运行着操作系统,可以说有计算的地方就有操作系统。操作系统无时无刻不在默默地为人们管理着他们的各种资产和设备。
(1)移动计算操作系统
21世纪初,非常火热的行业当属手机行业,自从苹果公司在2007年推出第一代iPhone(见图1.5)以后,这种具有多点大尺寸触控功能、快速稳健的网络能力、丰富多彩的应用生态,并能提供丝滑流畅操作体验的手机迅速风靡世界。这种拥有操作系统,可自由安装、卸载应用程序的手机被人们亲切地称为智能手机,iPhone 的出现促使智能手机迅速普及,开启了移动计算的新时代,也为操作系统带来了新的发展。
图1.5 苹果公司发布的iPhone智能手机
在iPhone推出之前,移动设备上已经存在一系列操作系统,例如Palm公司的Palm OS、微软公司的Windows Mobile、诺基亚公司的Symbian等。这些操作系统的设计目的是管理好手机上的各类资源,为用户提供的应用程序相对比较简单。而iPhone搭载的iOS在用户界面、应用程序生态环境和性能方面取得了巨大进步,一举成为当时最流行的智能手机操作系统。iOS带来了绝佳的用户体验,操作非常直观,且手机上的动画效果流畅,用户在轻松上手的同时还可享受无缝切换体验;此外,苹果公司为iOS打造了一个庞大的应用程序生态环境,用户可通过手机提供的应用程序商店下载、安装数以万计的高质量应用程序,这些应用程序经过了苹果公司严格的评估,安全性和质量均有保证。苹果公司则通过iOS这个操作系统进一步提供了卓越的软硬件整合能力,使得在iOS上运行的应用程序具有优秀的性能表现,再配合该操作系统对整体电池的控制策略,最终使得iPhone手机在性能、稳定性、电池寿命等各方面都具有远超对手的优势。
iPhone出现后,智能手机进入一个新的时代,也为UNIX类操作系统开启了一个新的纪元。iOS是从苹果公司的Mac OS X发展而来的,其源头还是之前介绍的BSD操作系统,但它是闭源系统,只有苹果公司生产的设备可使用该操作系统。2003年,另一个UNIX类操作系统登上了历史舞台,成了后来开源移动计算操作系统的代表,它就是Android。Android是基于Linux内核开发的,该操作系统的硬件访问通过Linux内核完成,并为应用程序提供一个独立的基于Java虚拟机的环境。开发者使用Java调用Android提供的更高层接口就能编写可在手机上运行的程序,这大大简化了开发移动应用的过程。为了应对iOS的强大竞争,Android进行了长期的改进以不断提升性能,在Android 5.0后该系统采用了ART(Android Runtime,Android运行时)技术,将Java程序预编译成可执行文件,大大加快了应用程序响应和启动速度。Android被谷歌公司收购后得到了广泛应用,且其开放源码的特性受到了手机厂商的热烈欢迎,当前已经广泛应用于各厂商制造的手机上,成为移动计算领域的“霸主”。
(2)物联网操作系统
早在20世纪末,就有学者提出“万物互联”的概念,即将传感器附着在任何物体上获取物体的各类参数,监控物体的实时变化情况,达到分析、调控物体状态的目的。将所有物体都连接在一起的网络被称为物联网。为了管理这些用于检测物体状态的设备,提供快捷方便的通信能力,业界开发了具有针对性的各类操作系统。通常这些操作系统需要适应这些设备中通信方式各异、能源有限的特点,具有鲜明的特色。
物联网操作系统乃至整个物联网行业都还处于发展初期阶段,尚未形成较为稳定的生态体系。FreeRTOS是物联网领域应用较多的操作系统之一。它实际上采用了RTOS(Real-Time Operating System,实时操作系统)内核,并不是真正意义上的物联网操作系统。真正的物联网操作系统需要解决物与物相联,或物与云、物与人之间的交流,真正实现互联互通。
华为公司作为行业领先的通信设备厂商也推出了自己的开源物联网操作系统,如LiteOS和OpenHarmony。其中LiteOS 专注于为轻量级、高效的物联网设备提供服务,而OpenHarmony 则旨在构建统一开放的分布式操作系统平台(见图1.6),更注重设备之间的协同工作和互操作性。它们都被广泛用于智能家居、智慧城市、智能交通和工业互联网等领域,为万物互联和智能提供了有力支撑。
图1.6 OpenHarmony系统界面
(3)云操作系统
随着互联网的不断发展,为了给本地用户提供优质的计算服务,很多企业使用CDN(Content Delivery Network,内容分发网络)等机制将服务器放置在离用户物理距离较近的数据中心。业界涌现了一批专门为这些企业提供云服务器租赁的公司,它们提供的服务被称为云服务。租赁这些云服务器的企业并不关心服务器的维护,它们仅需要租赁提供商保证7×24h在线的计算资源。因此,这些提供商将各种计算资源动态地售卖给租赁方,这些资源包括计算机中的CPU(Central Processing Unit,中央处理器)/GPU(Graphics Processing Unit,图形处理单元)算力、内存容量、硬盘容量、网络带宽等。这对管理资源的操作系统提出了新的要求,使得业界出现了一批以管理云服务器为目的的云操作系统。
云操作系统也被称为云平台操作系统或云计算操作系统,是云服务平台的底层支撑与核心。云操作系统分为专有云操作系统、商业云操作系统和开源云操作系统。亚马逊等云服务提供商采用了自主研发的专有云操作系统,商业云操作系统有 VMware vSphere 和 Microsoft Azure Stack等,开源云操作系统有OpenStack和CloudStack等。
华为公司开发了FusionSphere这一云操作系统,旨在为企业提供全面的云计算解决方案。它集成了虚拟化、存储、网络和管理等关键技术,提供了高效、灵活和安全的云平台。FusionSphere主要提供高性能、高可靠的虚拟化环境,灵活可靠的分布式存储,强大的网络虚拟化能力等。这些功能专门为云计算平台提供支撑,能够灵活地调度云上的计算资源,为云租赁提供商提供了方便、快捷的云管理能力。
(4)云边端协同的新兴操作系统
ICT时代迎来了更为复杂的计算架构,数据处理及基于数据的智能服务变得越来越重要。云边端协同是一种新的计算框架,它结合了云计算、边缘计算和终端设备的优势,以实现更高效、实时的数据处理和分析。这种协同工作的模式能够带来多种好处,如减少延迟、提高可扩展性、增强对信息的访问量,并使业务开发变得更加敏捷。
云(Cloud):指的是传统的云计算中心节点,即云端数据中心。它负责处理全局性的、非实时的、长周期的大数据处理与分析,擅长维护、业务决策支撑等领域。
边(Edge):指的是云计算的边缘侧,包括基础设施边缘和设备边缘。边缘计算更适合局部性、实时、短周期数据的处理与分析,能更好地支撑本地业务的实时智能化决策与执行。
端(Endpoint):指的是终端设备,如手机、智能化电气设备、各类传感器、摄像头等。这些设备通常位于网络的边缘,可以快速收集数据并对其进行初步处理。
在云边端协同的架构中,操作系统可能分别部署在云端、边缘侧和终端设备上,各自承担着不同的角色和功能。
云端操作系统:负责管理和调度云端资源,包括计算资源、存储资源和网络资源等。它可能是一个高度虚拟化、可扩展且安全的操作系统,能够支持大规模的数据处理和分析任务。
边缘侧操作系统:针对边缘设备的特定需求进行优化,如实时性、低功耗、高可靠性等。它可能集成了边缘计算框架和中间件,以便更好地支持边缘应用的部署和运行。
终端设备操作系统:负责管理和控制终端设备的硬件和软件资源,确保设备能够正常运行,并与其他设备进行通信。它可能是一个轻量级的、易于部署和更新的操作系统,能够支持多种传感器和设备的接入。
因此,云边端协同的操作系统并不是特指某一具体产品或系统的术语,而是描述云计算、边缘计算和终端设备之间协同工作的新型操作系统框架。在这个框架下,云边端的操作系统都扮演着更为重要的角色,既要高效实现这三者之间的无缝协同,还要应对异构性、实时性、安全性等诸多要求。
云边端协同的操作系统刚刚兴起,将成为ICT时代的新型基础软件平台。亚马逊、阿里云、华为云和苹果iCloud等服务商都在其服务和产品中融入了云边端协同的理念和技术,积极探索云边端协同的操作系统生态体系。
openEuler新生态是指以openEuler操作系统为核心的开源社区、硬件和软件所组成的生态系统,致力于为云边端协同的ICT时代构建新一代数字基础设施。
openEuler是基于Linux内核创新开发的全场景开源操作系统,具有多架构支持、高安全性、智能性,适用于服务器、云原生、边缘和嵌入式等多种应用场景。openEuler 由中国开放原子开源基金会主导,华为公司深度参与,致力于为开发面向新一代数字基础设施的操作系统平台。
openEuler 支持丰富的硬件架构,可形成更完善的硬件生态,主要硬件架构有广泛应用的x86处理器,低功耗、高性能的鲲鹏系列等ARM处理器,新兴的RISC-V处理器,LoongArch等中国自主研发的处理器,等等。
openEuler通过每半年发布一次创新版本,快速集成社区的最新技术成果,社区发行版通过用户的反馈反哺技术,激发社区创新活力,从而不断孵化新技术。发行版和技术孵化器互相促进、互相推动,牵引版本持续演进,openEuler操作系统的版本管理如图1.7所示。
图1.7 openEuler操作系统的版本管理
openEuler 24.03 LTS(Long Term Support)是当前的长生命周期版本。该系统基于Linux 5.10 内核构建,集成了分布式软总线、KubeEdge+边云协同框架等功能特性,具有优秀的数字基础设施协同能力,可为企业级用户提供安全、稳定、可靠的基础软件平台。
openEuler社区是以openEuler操作系统开发为核心任务的开源社区,致力于通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系,孵化支持多种处理器的架构、覆盖数字基础设施全场景,推动企业数字基础设施软硬件、应用生态繁荣发展。
2010年左右,华为开始研发EulerOS。经过长达10年的研发,EulerOS在华为内部已经成熟并大规模应用。2019年,华为将EulerOS贡献到开源社区,命名为openEuler操作系统,与行业伙伴共同构筑共建、共享、共治的全面数字基础设施。
openEuler社区现已成为国内最具活力的开源社区之一。自开源以来,openEuler社区持续高速发展,其生态架构如图1.8所示,openEuler社区吸引了超万名贡献者、900多家合作伙伴,建立超过100个SIG(Special Interest Group,特别兴趣组),其发展速度放眼全球都是极快的。openEuler社区积极对接全球四大开源基金会,目前已完成95%的项目兼容性支持。对于平台型开源软件,例如OpenStack、KubeEdge、OpenHPC、Hadoop、Spark等,已经实现了上游社区的原生支持,覆盖了包括云原生、大数据、分布式存储、数据库、HPC(High Performance Computing,高性能计算)等主流应用场景,让全球用户可便捷地部署、使用openEuler。
未来,openEuler社区将进一步与国际开源基金会展开生态合作,持续融入全球开源体系,为全球开源贡献openEuler的力量。
图1.8 openEuler生态架构
openEuler社区与上下游生态建立连接,构建多样性的社区合作伙伴和协作模式,共同推进版本演进。中国主流的操作系统厂家麒麟软件、统信软件、普华基础软件、麒麟信安、拓林思软件等已加入openEuler社区,在积极参与社区事务的同时,还基于openEuler发布了多个商业发行版操作系统。
● 麒麟软件基于openEuler内核打造的银河麒麟高级服务器操作系统,可面向多核异构计算场景,应用于关键业务和数据负载。
● 普华基础软件推出基于openEuler的首个商业发行版——普华服务器操作系统(鲲鹏版)。
● 统信软件基于openEuler发布deepinEuler V1.0,是支持鲲鹏处理器的服务器操作系统,全面支持鲲鹏处理器的新特性,并拥有优良的性能。
openEuler社区不断组建面向场景化的 SIG,推动openEuler 应用边界从最初的服务器场景,逐步拓展到云计算、边缘计算、嵌入式等更多场景,例如,新增了面向边缘计算的openEuler Edge、面向嵌入式的openEuler嵌入式操作系统。
openEuler致力于与广大生态伙伴、用户、开发者一起,通过联合创新、社区共建,不断增强场景化能力,最终实现同一操作系统支持多设备,应用一次开发覆盖全场景。
本章首先介绍了ICT时代对操作系统的新要求,然后回顾了操作系统的起源、UNIX的诞生和现代操作系统的发展历程,介绍了以Linux为代表的开源操作系统及ICT时代的新型操作系统,最后介绍了openEuler开源社区的发展及openEuler新型操作系统的应用场景和技术生态。如今,数字基础设施正在向万物互联的方向发展,云计算、边缘计算、嵌入式等场景成了openEuler的新“阵地”。与以往不同的是,这些新场景需要面对更加开放、适配多种硬件平台和架构、更注重端云协作的生态需求。
通过本章,读者可了解操作系统的起源与发展历程,认识到操作系统对于社会各行各业发展的深刻影响。在ICT时代的新背景下,了解并参与操作系统的开源创新具有重要的意义。