
虚拟内存是计算机系统内存管理的一种技术。使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数 *** 作系统都使用了虚拟内存,如Windows家族的"虚拟内存"Linux的"交换空间"等。
Windows 8/8.1 *** 作系统如出现开机时卡在Windows徽标页面,无法进入系统,必须强制关机再重启才能打开时,可适当调整虚拟内存设置解决。
1.打开/dev/fbXfp = open ("/dev/fb0",O_RDWR)
2.获取可变参数,固定参数
ioctl(fp,FBIOGET_VSCREENINFO,&vinfo) 可变参数
ioctl(fp,FBIOGET_FSCREENINFO,&finfo) 固定参数
3.内存映射(mmap)
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8
/*这就是把fp所指的文件中从开始到 screensize 大小的内容给映射出来,得到一个指向这块空间的指针*/
fbp =(unsigned char *) mmap (0, screensize,
PROT_READ | PROT_WRITE,
MAP_SHARED, fp,0)
4.使用映射后的地址对屏进行 *** 作。
使用上面得到的 fbp 指针来 *** 作显示缓冲区了。
把lcd看成是一块内存,使用mmap函数把它的缓冲区映射到进程空间中,然后通过映射后的地址直接 *** 作驱动中的显示缓冲区,往这块缓冲写数据,lcd就会按数值转换成相应颜色显示在LCD屏上。
首先我的观点是:Linux上运行虚拟机要比在Windows上更高效。主要原因有一下几点:
1、Linux 可以高度定制,因此可以对系统进行裁剪,保证 host os (也就是装在真机上的那个系统)没有无谓的资源浪费。相比之下windows就没那么好办了,看看现在的 win7,开机之后动不动就是 1GB 以上的内存占用,而我的 linux 只有不到 600MB。CPU占用也是一样,Linux小于windows。
2、Linux系统具有内存缓存机制,简单来说就是系统的内核利用一部分物理内存分配出缓冲区,用于缓存系统 *** 作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 *** 作磁盘,提高了文件系统的性能。windows似乎就没有这样的机制。尽管在VM面大部分软件都不是I/O密集型,但是较高的读写性能对VM的性能还是有一定影响的。
3、Linux的内核质量优于windows。
上面这3点都是 *** 作系统层面的,除此之外,硬件因素的影响也是很大的,简单列举几点作为补充:
1、对于CPU,一般来讲,支持硬件虚拟化技术(VT)的CPU在性能上优势明显。如果你的CPU支持VT,那么在VM中碰到需要执行CPU的特权指令的时候,虚拟机软件可以利用硬件层面的VT支持完成相关 *** 作,否则需要靠软件模拟,而软件模拟,效率差太多了。除此之外,在多VM同时运行的情况下,CPU的核心数多多益善。
2、内存,越大越好。这个也没什么好说的,内存大,可以同时跑的VM数就越多,并且内存充裕也可以避免内存吃紧时导致的虚存频繁换页,要知道虚存频繁换页会导致大量的磁盘IO,最终拖慢系统运行。
3、硬盘没必要刻意追求SSD,除非你运行的软件属于IO密集型。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)