虚拟机的发展史:从分时系统到容器化

news2024/11/24 13:43:46

一、前世

早期计算机的价格非常昂贵,一台计算机可能需要花费几十万甚至上百万美元。例如,ENIAC计算机,作为世界上第一台通用电子数字计算机,当时的造价约为48万美元。科学家或者工程师们需要计算机的能力,但是买不起整台计算机。

因此,为了尽可能地利用这一宝贵的资源,分时系统应运而生。在这个系统中,终端本身并没有计算能力,它们通过电话线连接到中心计算机,然后中心计算机会自动给程序分配计算时间,如同一位严格的时间管理员。这有点操作系统的感觉,只不过分时系统更原始一些。

随着技术的发展,计算机的处理能力日益强大,价格也越来越亲民,普通人就可以拥有一台自己独立的计算机。但是单个计算机内运行的程序也越来越复杂,为了更好的在多个程序之间分配计算资源,后边又发展出了操作系统,特别是操作系统提供的进程和线程技术。

进程为程序可使用的资源划定了一个边界,比如程序可使用的内存、可访问的API,都被限定在一个范围之内;线程则为CPU资源的分配提供了便利,根据分配算法,每个程序可以获取一定的CPU执行时间。

二、虚拟机的需求

虽然拥有计算资源的成本降低了很多,操作系统也提供了很好的软件治理方法,但是我们仍面临一些挑战。

首先是成本和效率方面:

  1. 资源闲置:想象一下,如果你有一台超级计算机,但只在某些时段需要大量的计算,却需要一直准备着它,那么在其他大量的闲置时间,你可能会想把它们租出去,让这些时间也能创造价值。比如对于阿里巴巴来说,为了应对双十一可能需要准备大量的计算资源,但是一年中的其它时候很多计算资源就闲置起来了。

  2. 需求和供给不匹配:如果你的计算机是8核32G,但租户只需要1核2G,这就好比你有一栋大楼,但租户只需要一间房。同样的,如果你的计算机出租的最小时间单位是3个月,而租户只需要使用3分钟,这就如同租户只想在你的大楼里开一个小时的会议,但你却要求他租一个季度。这显然会导致资源的浪费。

其次是多租户延伸出来的隔离方面的更高要求:

  1. 隔离的需求:不同的应用程序可能会产生冲突或影响彼此的正常运行。如果没有进行有效的隔离,一个应用程序的错误或异常可能会影响到其他应用程序,甚至导致整个系统的不稳定或崩溃。比如对于Python这种程序,不同的版本无法运行在同一个环境中,必须进行某种隔离。这个问题对于多租户系统尤为重要,不仅要降低相互之间的影响,还要严格限制相互之间的资源访问权限,避免出现信息泄漏。操作系统自身提供的隔离能力不能完全满足这种需求。

虚拟机技术就是为了解决这些问题而出现的。

三、虚拟机的发展史

1. 模拟器

模拟器是虚拟机的前身,它通过在宿主机上运行一个应用程序,模拟客户机计算机系统的API和指令,一条条解释执行。就像是一个翻译,把客户机的指令翻译成宿主机能理解的语言。像我们常见的Android模拟器、街机游戏模拟器就是这样的例子。

但模拟器也有其局限性,如果客户机依赖特定电路,则很难模拟;而且运行起来太慢,不能满足用户需求。然而,它的优点也很明显,那就是可以跨硬件平台。

2. 虚拟机

虚拟机的诞生标志着我们向全虚拟化迈出了一大步。在虚拟机中,我们引入了虚拟机监视器,它可以完整映射客户机的CPU指令集、IO操作和中断,而不需要跨硬件平台,也无需更改客户机操作系统。

虚拟机分为Type2和Type1两种类型。在Type2虚拟机中,所有的客户机都通过虚拟机监视器与宿主机交互,虚拟机监视器是宿主机上的一个应用软件,收到客户机的指令时转交给宿主机处理。这种模式和模拟器的处理模式类似,一般只用在个人电脑上。好处就是比较通用,可以跨硬件平台,缺点还是效率比较低,运行较慢。

而在Type1虚拟机中,所有的客户机都通过虚拟机监视器与宿主机交互,但虚拟机监视器是宿主机操作系统内核的一个模块,收到客户机的指令时直接提交给硬件执行。这就好像是把虚拟机监视器提升为了操作系统的一部分,使其能更高效地处理客户机的请求。这特别适合对硬件和软件系统要求比较固定的场景,比如服务器程序。

3. 容器

随着技术的进步,我们又迎来了容器时代,这个时代以Docker的诞生为始。Docker可以称为操作系统级的虚拟机,其本质是一种资源隔离技术。它类似于早年的虚拟主机技术,但在资源管理方面做得更好。最大的优点是它无需客户机操作系统,可以直接在宿主机操作系统上运行,大大提高了资源的利用率。

随着容器化技术的大规模普及,容器管理技术也蓬勃发展起来。为了解决在大规模、分布式环境下如何有效地管理和调度容器的问题,Kubernetes(简称K8s)应运而生,它是一个开源的容器编排系统,在微服务架构日益流行的今天,它的出现无疑提供了一种高效、灵活的解决方案。从某种角度上看,Kubernetes也是一个虚拟机,只不过是把之前的虚拟化方案反了过来,之前都是在单个物理机中虚拟多个系统,而Kubernetes是把众多容器虚拟化为一个系统。

四、虚拟机的未来

虽然虚拟机技术已经相当成熟,但我们仍可以期待未来会有更多创新和突破。

虚拟化与人工智能结合:虚拟化技术可以与人工智能相结合,提高虚拟机的自动化管理和优化能力,提升使用效率,降低运维成本。

虚拟机的性能优化:虽然Docker等轻量级虚拟化技术已经大大提高了资源的利用率,但在某些场景下,如高性能计算和实时系统中,虚拟机的性能开销和资源分配仍然是一个问题。因此,如何通过优化虚拟机监视器和虚拟化技术,进一步提升虚拟机的使用效率,将是未来的重要研究方向。

虚拟化技术的安全性增强:随着虚拟机技术的普及,如何保证虚拟机的安全性也将成为一个重要的问题。例如,如何防止虚拟机逃逸攻击,如何在容器之间实现安全的数据隔离等,都需要我们进行深入的研究。

总结

虚拟机的发展历程充分体现了技术的不断进步和我们对资源利用率提升的不懈追求。从分时系统到模拟器,再到虚拟机,最后到Docker,每一步都是为了更好地解决资源浪费和需求与供给不匹配的问题。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1091888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C. JoyboardCodeforces Round 902

C. Joyboard 样例1列表找规律&#xff1a; #include<iostream> #define int long long using namespace std; signed main() {int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;if(k1){cout<<1<<endl;}else if(k2){cout<<m…

vue2时间处理插件——dayjs

在vue时间处理上有很多的方法和实现&#xff0c;可以自己实现&#xff0c;但是效率不高&#xff0c;所以&#xff0c;在框架开发中我们一般不会手写&#xff0c;一般是使用集成的第三方插件来解决我们的问题&#xff0c;在vue3中大家一般都使用Moment.js来处理&#xff0c;所以…

Defects4j数据集安装及使用

一、Defects4j数据集安装 在Ubuntu系统上进行操作&#xff0c;具体的在&#xff1a;Defects4j数据集安装 二、Defects4j数据集的使用 1. 常用命令 Getting started ---------------- #### Setting up Defects4J 1. Clone Defects4J:- git clone https://github.com/rjust/d…

JOSEF约瑟 可调漏电继电器RT-LB230KS+Q-FL-100 导轨安装 配套零序互感器

一、产品用途及特点 RT-LB230KS漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压为660V.至1140V电压系统中,频率为50Hz,电流15~4000A线路中做有无中性点漏电保护. 该继电器可与带分励脱扣器或失压脱扣器的断路器、交流接触器、磁力启动器等组成漏电保护装置&…

【ELK 使用指南】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

端到端的机器学习项目(Machine Learning 研习之六)

使用真实数据 当你在研习机器学习时&#xff0c;最好是使用真实世界中的数据&#xff0c;而不是采用人工数据。巧的是&#xff0c;数以千计的数据集可供选择&#xff0c;涵盖了各种领域。 流行的开放数据存储库&#xff1a; OpenML.orgKaggle.compaperswithcode.com UC Irvin…

阿里云服务器不能访问网络之安装mysql 提示连接超时

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 过了一段时间后提示 fail .......time out 链接超时 有可能你的服务器不能访问网络 因为宽带套餐 我购买的时候没有购 重新购买就行了

python爬取boss直聘数据(selenium+xpath)

文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站&#xff0c;主要目的是爬取下图中的所…

【Candence报错】Discrepancy #i in TASK

问题描述 Candence LVS仿真提示网络不匹配 问题解决 检查原理图和Layout 注意&#xff1a;

穿越功耗墙,我们该从哪些方面提升“性能”?

目录 背景 功耗&#xff1a;CPU 的“人体极限” 并行优化&#xff0c;理解阿姆达尔定律 总结延伸 背景 我们知道 CPU 的性能时&#xff0c;我们提到了这样一个公式&#xff1a; 程序的 CPU 执行时间 指令数CPIClock Cycle Time 这么来看&#xff0c;如果要提升计算机的…

tracy 学习

https://github.com/wolfpld/tracy 适用于游戏和其他应用的实时、纳秒分辨率、远程控制、支持采样和帧率检测 Tracy 支持分析 CPU&#xff08;为 C、C 和 Lua 集成提供直接支持。同时&#xff0c;互联网上存在许多其他语言的第三方绑定&#xff0c;例如 Rust 、Zig、C # 、 OC…

【git】gitlab安装、备份

gitlab官网 官网&#xff1a;官网 中文官网&#xff1a;中文官网 作为一个英文不好的程序员&#xff0c;所以我都去中文网站去看了。下面也是带着大家去走走 安装gitlab 我不想写具体的安装方法&#xff0c;直接去逛网看下面是我的截图。步骤非常详细。 安装文档地址&…

Apacheb Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

Apache Shiro 1.2.4反序列化漏洞&#xff08;CVE-2016-4437&#xff09; 1 在线漏洞解读: https://vulhub.org/#/environments/shiro/CVE-2016-4437/2 环境搭建 cd /home/kali/vulhub/shiro/CVE-2016-4437启动&#xff1a; sudo docker-compose up -d # 拉取下载并启动sud…

谢邀,ADconf安全大会

儒道易行 道虽远&#xff0c;行则易至&#xff1b;儒虽难&#xff0c;坚为易成 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失&am…

Linux:mongodb数据库源码包安装(4.4.25版本)

环境 系统&#xff1a;centos7 本机ip&#xff1a;192.168.254.1 准备的mongodb包 版本 &#xff1a; 4.4.25 全名称&#xff1a;mongodb-linux-x86_64-rhel70-4.4.25.tgz 下载源码包 Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/downloa…

02.机器学习原理(复习)

目录 机器学习的本质机器学习的类型Regression/回归Classification/分类Structured Learning/结构化学习 ML的三板斧设定范围设定标准监督学习半监督学习其他 达成目标小结达成目标设定标准设定范围 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》&#xff0c;B站自行搜…

竞赛选题 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…

编译linux的设备树

使用make dtbs命令时 在arch/arm 的目录Makefile文件中有 boot : arch/arm/boot prepare 和scripts是空的 在文件scripts/Kbuild.include中 变量build : -f $(srctree)/scripts/Makefile.build obj 在顶层Makefile中 $(srctree)&#xff1a;. 展开后-f ./scripts/Mak…

恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题

恢复Windows 11经典右键菜单&#xff1a;一条命令解决显示更多选项问题 恢复Windows 11经典右键菜单&#xff1a;一条命令解决显示更多选项问题为什么改变&#xff1f;恢复经典右键菜单 我是将军我一直都在&#xff0c;。&#xff01; 恢复Windows 11经典右键菜单&#xff1a;一…

docker入门加实战—Docker镜像和Dockerfile语法

docker入门加实战—Docker镜像和Dockerfile语法 镜像 镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。 镜像结构 我们要从0部署一个Java应用&#xff0c;大概流程是这样&#xff1a; 准备Linux运行环…