把 vt 和 vi 放在一起聊,感觉有点奇怪,像是把“发动机”和“方向盘”放一起做比较。它们俩名字里都有个 “v”,导致有些人会搞混,但实际上,这俩东西根本不是一个层面的概念。一个是硬件层面的技术,另一个是软件层面的一个工具。
vt:让一台电脑变成“很多台”的底层技术
vt 其实是“Virtualization Technology”的缩写,中文意思是虚拟化技术。 这不是一个你能下载安装的软件,而是内嵌在你的电脑 CPU 里的一个功能。 你可以把它想象成一种“分身术”。正常情况下,一台电脑的硬件(CPU、内存、硬盘)同一时间只能给一个操作系统用,比如 Windows。但是,如果 CPU 支持并开启了 vt 技术,就相当于给这台电脑的硬件加了一个“管理员”权限。
这个“管理员”,专业点叫虚拟机监视器(Virtual Machine Monitor, VMM),它能把一套硬件资源虚拟地分割成好几份,然后分配给不同的“虚拟机”(Virtual Machine, VM)。 每一台虚拟机都可以安装自己独立的操作系统,比如在一台 Windows 电脑上,同时运行一个 Linux 系统,再加一个旧版的 Windows XP。 对于每个虚拟机里的操作系统来说,它们感觉自己都独占着一台完整的电脑,拥有自己的 CPU、内存和硬盘,但实际上这些都是 VMM 从物理硬件资源里虚拟出来的。
这个技术有什么用呢?用处很大。
对于软件开发者和测试人员来说,简直是必需品。我以前做测试的时候,经常需要在一个干净的环境里验证软件功能,总不能每次都重装系统吧。有了 vt,我可以在我的主系统里开一个虚拟机,装上测试需要的系统,一顿操作猛如虎,测完直接把这个虚拟机删掉或者恢复到测试前的状态,对我的主系统一点影响都没有。有时候需要同时测试软件在 Windows 和 Linux 下的表现,开两个虚拟机就行了,来回切换非常方便。
对于一些公司来说,vt 技术能省下很多钱。一个物理服务器的性能通常是很强的,如果只跑一个服务,会造成很大的资源浪费。通过 vt 技术,一台高性能服务器可以虚拟出几十甚至上百台虚拟机,分别跑不同的业务,把硬件性能“压榨”干净。
在日常生活中,虽然你可能没直接“操作”过 vt,但很可能一直在享受它带来的便利。比如,很多安卓模拟器,像雷电、夜神这些,能让用户在电脑上玩手机游戏,它们的核心原理就是利用了 vt 技术创建了一个虚拟的安卓系统环境。 如果你的电脑没在 BIOS 里开启 vt 功能,这些模拟器要么运行不了,要么会卡得让你想砸电脑。
开启 vt 功能也很简单,通常是在电脑开机的时候,按特定键(比如 F2 或 Del)进入 BIOS 设置界面,找到类似 “Virtualization Technology” 或者 “Intel VT-x” 这样的选项,把它从 “Disabled”(禁用)改成 “Enabled”(启用)就行了。 需要注意的是,开启 vt 会让处理器负载稍微增加,可能会导致电脑发热量变大一点,但对于散热正常的电脑来说,这点影响基本可以忽略不计。
总结一下,vt 是一种硬件辅助技术,是底层基础,它让“一台电脑当多台用”成为可能,提高了硬件资源的使用效率。
vi:一个让新手头疼、老手着迷的文本编辑器
聊完了底层的 vt,我们再来看看 vi。vi 是一个文本编辑器,没错,就是像 Windows 里的“记事本”或者 Sublime Text、VS Code 一样的东西。 它的作用就是在各种操作系统里创建和修改纯文本文件。所有的 Unix-like 系统,比如 Linux 和 macOS,都会自带 vi。 很多时候,特别是在操作服务器时,你没有图形界面可用,只有一个黑乎乎的命令行窗口,这时候 vi 就成了你唯一的编辑工具。
vi 和我们现在常用的编辑器最大的不同在于它有三种模式:命令模式(Command Mode)、输入模式(Insert Mode)和底线命令模式(Command-Line Mode)。
- 命令模式:你一打开 vi,默认进入的就是这个模式。在这个模式下,你敲键盘的按键不会直接输入成文字,而是会被当作命令来执行。 比如,你按一下
x键,会删除光标所在的那个字符;按两下d键(dd),会删除光标所在的整行。 - 输入模式:在命令模式下,按
i、a或o等键,就会进入输入模式。 这时候 vi 就变得和普通记事本一样了,你敲什么,屏幕上就显示什么。想从输入模式退回到命令模式,按一下Esc键就行。 - 底线命令模式:在命令模式下,按冒号
:键,光标会跑到屏幕最下面一行,进入这个模式。 在这里你可以输入更复杂的命令,比如保存文件(:w)、退出编辑器(:q)、强制退出不保存(:q!)或者查找替换文本。
这种模式切换的设计,是很多新手觉得 vi 难用的主要原因。刚开始接触的时候,经常会搞不清楚自己在哪种模式下,想打字结果执行了一堆命令,或者想执行命令结果打出了一堆字母。我刚学 Linux 的时候,第一次用 vi 打开一个配置文件,想修改点东西,结果怎么也输入不了,还把文件内容删得乱七八糟,最后连怎么退出都不知道,只能强制关闭终端窗口。
但是,一旦你熟悉了 vi 的操作逻辑,就会发现它的效率极高。 它的设计哲学就是让你的手尽可能少地离开键盘主键区。 比如,我想把光标往下移动 10 行,在普通编辑器里我可能需要按 10 次向下箭头,或者用鼠标去点。在 vi 的命令模式下,我只需要输入 10j 就行了。这种纯键盘的操作在熟练之后,速度远超鼠标点点点。
现在我们通常说的 vi,更多时候指的是它的增强版——vim(Vi IMproved)。 vim 继承了 vi 的所有操作,还增加了很多新功能,比如代码高亮、代码补全、多窗口编辑等,对于程序员来说特别好用。
所以,vi (或 vim) 是一个具体的软件应用,一个强大的文本编辑工具,尤其是在命令行环境下。
本质区别:地基与房子的关系
现在再把 vt 和 vi 放在一起看,区别就很清楚了:
- 层级不同:vt 是 CPU 提供的硬件层面的技术,是底层支持。 vi 是一个运行在操作系统之上的应用软件,是上层工具。
- 功能不同:vt 的功能是虚拟化,用来创建和管理虚拟机,实现资源的分割和隔离。 vi 的功能是编辑文本文件。
- 关系:你可以用一台开启了 vt 技术的电脑,创建出一个 Linux 虚拟机,然后在那个虚拟机里面,用 vi 编辑器去修改一个配置文件。vt 提供了运行环境(房子),vi 是你在环境里使用的工具(家具)。它们之间没有直接的可比性,但可以协同工作。
简单来说,vt 决定了你的电脑能不能“分身”,而 vi 只是你“分身”之后,或者在主系统里用来修改文件的一个工具。一个是关于“如何运行系统”的技术,另一个是关于“如何编辑文本”的软件。把它们搞混,就像分不清操作系统和聊天软件一样。

本站部分图片和内容来自网友上传和分享,版权归原作者所有,如有侵权,请联系删除!若转载,请注明出处:https://www.rzedutec.com/p/64845/