楼主:
w180112 ([NOOB]我超RETARD我超废 )
2017-07-11 23:31:52常常看到很多人有这些问题
用pd(或是vmware, vb)跑xx程式能顺跑吗或是已经切给vm所有的硬件资源了为何还是不顺
小弟献丑简单解释一下(资讯相关人员有计组,OS相关概念就左转吧)
PD, VMWare, Virtualbox都是常听到的Virtual Machine代表 也简称VM
Vm主要原理是在OS的kernelspace(系统核心、掌管电脑的重要功能,e.g.网络资讯传输、
系统输入输出、cpu执行程式的顺序等等,相对应跑不重要的游戏、绘图、文书是userspa
ce 两者之间会花费大量的时间消耗)
增加一个程序(hypervisor)来管理vm要用到的硬件资源
然后在上面开一个虚拟的空间跑另一个OS(又称作guest os相对原本的就叫做host os)
又因为在guest os里面所有的i/o(input output)都是经过hypervisor
而hypervisor又只是一个在host os里面的process(程序)
而os对每个process会让cpu平均分配一小段时间来轮流执行,等到所有process都执行完
再从头开始(假设一个process分配到1/60秒)
也就是说hypervisor分配到1/60秒来执行guest os
guest os里面又要再切1/60秒轮流执行
变成每次在guest os里面的process一次只能分配到1/360秒
又每次换下一个process(每1/60秒过去)执行时都会消耗大量时间
而且在guest os又有userspace跟kernel space转换的时间消耗
因此guest os里面会非常多冗余时间被消耗掉
也就会效能不佳
这在cs界是非常火热的议题 因为data center现在正为vm效能不佳所苦
结论:要效能好就是外接显卡或是买台桌电,vm就是免强凑合在用的,甚至程式开不起来
也不意外(这牵扯到vm的演进史)
题外话,macOS的kernel很稳的 绝对比windows的还稳,只是userspace的bug大概没差多
少