为什么操作系统在 2017 年更加重要

操作系统在短期内不会消失。
900 位读者喜欢这篇文章。
Why the operating system matters even more in 2017

Internet Archive Book Images。由 Opensource.com 修改。CC BY-SA 4.0

操作系统并非起源于计算机的诞生之初,但其历史也相当悠久。大型机客户在 20 世纪 50 年代后期编写了最早的操作系统,随后在接下来的几十年中,出现了我们今天更清晰地认识到的操作系统——包括 IBM 的 OS/360 和贝尔实验室的 Unix。

操作系统在系统中执行各种有用的功能,但将其归纳为三个通用类别会很有帮助。

首先,操作系统位于物理系统的顶层,并与硬件进行通信。这使应用软件免受许多硬件实现细节的影响。 除此之外,这为硬件创新提供了更大的自由度,因为是操作系统承担了支持新处理器和服务器设计其他方面的大部分负担,而不是应用程序开发人员。 可以说,硬件创新将变得更加重要,因为机器学习和其他关键软件趋势不能再依赖 CMOS 工艺扩展来实现可靠的逐年性能提升。 随着混合云架构的日益普及,这种抽象层提供的可移植性变得越来越重要。

其次,操作系统——特别是内核——执行应用程序所需的常见任务。 它管理进程调度、电源管理、root 访问权限、内存分配以及保持系统高效安全运行所需的所有其他底层内务处理和操作细节。

最后,操作系统充当其自身的“用户空间”程序(例如日志记录、性能分析等系统实用程序)和用户编写的应用程序的接口。 操作系统应通过基于开放标准的 API(应用程序编程接口)为应用程序提供一致的接口。 此外,商业支持的操作系统还带来了与第三方应用程序提供商的业务和技术关系,以及将其他可信内容添加到平台的内容渠道。

在过去的几年中,计算技术格局发生了很大变化。 这产生了改变我们对操作系统及其功能的看法的效果,即使它们仍然像以往一样重要。 考虑一下应用程序打包方式的变化、计算基础设施的快速增长以及威胁和漏洞形势。

容器化

Linux 容器中运行的应用程序在物理服务器上运行的单个操作系统副本中隔离。 这种方法与基于 hypervisor 的虚拟化形成对比,在基于 hypervisor 的虚拟化中,每个应用程序都绑定到客户操作系统的完整副本,并通过介入的 hypervisor 与硬件通信。 简而言之,hypervisor 虚拟化硬件资源,而容器虚拟化操作系统资源。 因此,容器消耗的系统资源(如内存)很少,并且基本上不会对应用程序造成性能开销。

容器化在很大程度上依赖于熟悉的操作系统概念。 容器构建在 Linux 内核的进程模型之上,并辅以额外的操作系统功能,例如命名空间(例如,进程、网络、用户)、cgroup 和权限模型,以隔离容器,同时给人一种每个容器都是完整系统的错觉。

最近,由于添加了将应用程序可移植地组合为一组层并在环境中以低开销移动它们的机制,容器变得非常有趣。 在这方面,容器是通用概念的实现,该概念以各种形式存在已有一段时间,但从未真正成为主流。 (例如,考虑应用程序虚拟化。) 今天一个重要的变化是开源和开放标准的作用大大增加。 例如,开放容器倡议是 Linux 基金会下的一个协作项目,专注于围绕容器格式和运行时创建开放的行业标准。

同样重要的是,容器技术与软件定义的基础设施(例如 OpenStack)一起被构建到 Linux 中并与 Linux 一起设计。 计算机软件的历史清楚地表明,将技术集成到操作系统中往往会导致更广泛的采用,并在这些技术周围形成生态系统发展的良性循环——例如网络中的 TCP/IP 或各种安全相关功能。

规模

另一个重大转变是我们越来越多地从数据中心的规模而不是单个服务器的角度来考虑计算资源。 当然,这种转变从 Web 的早期就开始了。 然而,今天我们看到高性能计算“网格”技术正在被重新构想,既适用于传统的批处理工作负载,也适用于更新的面向服务的风格。

与容器完美结合,基于松散耦合的“微服务”(在容器中运行)的应用程序——无论是否具有持久存储——正成为一种流行的云原生方法。 这种方法虽然让人联想到面向服务的架构 (SOA),但它展示了一种更实用和开放的方式来构建复合应用程序。 微服务通过细粒度的松散耦合架构,允许应用程序架构反映单个明确定义的应用程序功能的需求。 快速更新、可扩展性和容错能力都可以在复合应用程序中单独解决,而在传统的单体应用程序中,要防止对一个组件的更改对其他地方产生意外影响要困难得多。

从操作系统的角度来看,这种转变的一个重要方面是,将“计算机”视为数据中心资源的聚合集合越来越有意义。 当然,底层仍然有单独的服务器,它们仍然必须进行操作和维护——尽管是以高度自动化和无需人工干预的方式进行。 然而,容器调度和管理有效地构成了工作负载运行位置以及多层应用程序如何组成(而不是服务器)的新的相关抽象。

云原生计算基金会 (CNCF) 也隶属于 Linux 基金会,其创建目的是“推动采用一种新的计算范例,该范例针对能够扩展到数万个自我修复的多租户节点的现代分布式系统环境进行了优化”。 CNCF 下的一个项目是 Kubernetes,这是一个开源容器集群管理器,最初由 Google 设计,但现在有来自 Red Hat 和其他地方的广泛的贡献者

安全

适用于虚拟化世界的所有安全强化、性能调优、可靠性工程和认证仍然适用于容器化世界。 事实上,在容器化和软件定义的基础设施世界中,操作系统在提供安全性和资源隔离方面承担着比专用硬件或其他软件可能正在处理其中一些任务的情况更大的责任。 Linux 一直是使用开源模型构建的全面安全强制功能工具箱的受益者,包括用于强制访问控制的 SELinux、各种用户空间和内核强化功能、身份管理和访问控制以及加密。

然而,今天,信息安全也必须适应不断变化的形势。 无论是为客户和合作伙伴提供对某些系统和数据的访问权限,允许员工使用自己的智能手机和笔记本电脑,使用来自软件即服务 (SaaS) 供应商的应用程序,还是利用公共云提供商的按需付费的实用程序定价模式,都不再存在单一的边界。

开放式开发模型允许整个行业就标准达成一致,并鼓励他们最优秀的开发人员不断测试和改进技术。 大量公司和其他组织为 Linux 和其他开源软件提供及时的安全反馈,这清楚地证明了在社区内部和社区之间协作解决问题是技术的未来。 此外,开源开发过程意味着,当发现漏洞时,整个开发人员和供应商社区可以协同工作,以协调一致的方式更新代码、安全公告和文档。

随着操作系统的作用不断发展和扩展以包括 Linux 容器等新功能,这些相同的流程和实践也适用于混合云基础设施。 此外,当组件以微服务和其他松散耦合架构的形式重用时,维护对这些组件及其依赖项(在构成应用程序时)来源的信任变得更加重要,而不是更不重要。

有些事情改变了,有些事情没有改变

与操作系统开发和操作相关的优先级肯定发生了变化。 今天的重点更多地是关于大规模自动化部署,而不是自定义、调整和优化单个服务器。 与此同时,对不再明确界定的安全边界的威胁的速度和普遍性都在增加——需要系统地了解风险以及如何快速缓解漏洞。

将所有这些加在一起,应用程序变得更具适应性、更具移动性、更具分布式、更强大且更轻量级。 它们的放置、配置和保护必须变得更加自动化。 但它们仍然需要运行在某些东西上。 坚固的东西。 开放的东西。 能够为新需求和新型工作负载而发展的东西。 而那东西就是一个(Linux)操作系统。

User profile image.
Gordon Haff 是红帽技术布道师,是客户和行业活动中经常受到高度赞扬的演讲者,并且专注于包括红帽研究、开源采用和广泛的新兴技术领域。

5 条评论

对“云”计算或存储说不! 它真正的含义是将您的数据存储在别人的计算机上,您无法控制谁可以访问、复制或窃取它! 就说不!

那你打算在哪里托管你的网站? 在家吗? 那么你必须将你的互联网服务升级到某种商业级,并且在大多数情况下要花数百美元才能获得更差的连接。 而且这并不意味着你的 HTML 会被神奇地保护起来,它反正都是公开的。 这不是非黑即白的。 内部和云解决方案都有其理由和位置。

回复 作者:Nonya (未验证)

非常棒的文章和帖子,真的。 力量与荣耀!

操作系统很重要。 这篇文章不仅说明了它们为什么重要,还说明了为什么操作系统是开源的很重要,就像堆栈的其余部分一样。

很棒的文章,感谢撰写。

感谢这篇内容丰富的文章 :))

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.