㈠ 华硕主板BIOS设置ram共享内存媲美硬盘达到万兆网
核心显卡共享内存作为显存是分两个部分的。
一个部分是定死的,最低限制就是这个,比如鲁大师识别的就是定死的显存,128MB
其余的是动态的,系统想分就分,想收就收,如果核心显卡这128MB不够用,系统自动在内存充足的情况下分内存给核心显卡。
具体动态显存以及最大显存容量,可以在显示适配器中查看
具体操作为---桌面===鼠标右键===显示设置===高级显示设置===显示适配器属性
㈡ 显存容量“共享系统内存”是什么意思
共享系统内存意思就是拿一部分内存当显存,集成显卡和独立显卡都可以共享系统内存。
显存共享技术多数用在主板集成显卡的主板上,也有使用在独立显卡但固态显存比较少的情况下。为了节约硬件成本集成显卡省去固态显存,直接使用内存作为显存就是显存共享内存的技术。
(2)网络共享内存扩展阅读
系统内存是动态划分的,会按照当前系统的要求划给系统所需要的内存,可以由计算机自动调节以提高资源利用率。
电脑的主内存中划取一部分作为显卡的显存。但是,这样势必会浪费系统的内存,占用系统的资源。动态共享内存就这样孕育而生。比如在文字处理的时候,并不需要显卡太大的工作量,也不需要太多的显存。这时,系统就尽可能少的划给显卡内存,保证系统资源的不浪费。
但当要玩3D游戏的时候,显卡就需要大量的显存,这时候,系统就会划较多的内存给显卡使用,保证你的游戏可以正常的运行。
㈢ 独立显卡共享内存问题
有Windows vista下显卡的显存问题一直困扰着我。我的显卡是NVIDIA Geforce 7300LE独立显卡,64MB显存,系统共享之后319MB。不过感觉319MB不是很够用,总想再多加点,于是今天特别查查资料看看。
独立显卡
这里,我以自己所用的NVIDIA Geforce 7300LE独立显卡为例。之前我安装的是512MB内存,其中显卡共享显存64MB
后来我安装了两根512MB内存,其中显卡共享显存255MB。然后我在网络上搜索到同样是NV显卡别的显卡,当512MB显存的时候,512MB内存,系统共享225M。当内存1G的时候内存共享内存225MB,当2G内存的时候共享271M内存。
在Vista下,内存与显卡共享显存的数值是有系统决定的,用户自己不可以进行调整。
共享显卡
幸运的是共享显卡的用户是可以内存与显卡共享资源的,比如笔记本用户。
具体方法:
开机进入BIOS进行设置。找到“advanced chipset features”,按回车键进入,选择到64MB的选项上。按“page up”键改变值为128MB。
屏蔽共享显卡:
正如我们所知道的,只要安装了独立显卡之后系统是会自动将共享显卡屏蔽掉的,但是也有特殊情况,如果安装了独立显卡,共享内存没屏蔽,独立显卡也耍不了怎么办?
解决方法:
1)开机进入BIOS设置(设置里有项 ON BOARD***(VGA)一项设为DISABLE)。
2)如果你是集成显卡要用独立显卡,到设备管理器里把集成显卡停用就可以了。
㈣ 现在有共享CPU,共享存储器,共享内存,共享网速的技术么
有啊,云计算,能成倍提升计算能力。至于网速,能共享,但是网速不会叠加,存储器可以通过局域网互相传输文件,内存不行……无论是存储空间还是云计算,都需要高性能的电脑局域网
㈤ 电脑能不能和手机共享内存
理论上来讲是可以的,但是现在在网络上没有什么解决方案。因为手机是ARM的指令集架构,是属于RISC(精简指令集),而电脑是x86的指令集 CISC(复杂指令集)。这两个有本质上的区别,所以手机里的东西直接给电脑运行时不可能的,或者你可以选择安装一个安卓模拟器,在里面装上想运行的应用程序,然后运行。不过因为是模拟器的缘故,执行效率有所下降。对处理器的要求也较高。
如果只是想要直接插上电脑运行的话,死了这份心吧。因为CPU和内存要不停的交换数据。目前最快的外置链接是thunder3(雷电3),理论速度是30Gbps,但是cpu的总线带宽需要大概2000Gbps的速度。所以可能性为零,在目前的情况下。
望采纳。
㈥ 如何在unix环境下实现共享内存
mmap()范例
下面将给出使用mmap()的两个范例:范例1给出两个进程通过映射普通文件实现共享内存通信;范例2给出父子进程通过匿名映射实现共享内存。系统调用mmap()有许多有趣的地方,下面是通过mmap()映射普通文件实现进程间的通信的范例,我们通过该范例来说明mmap()实现共享内存的特点及注意事项。
范例1:两个进程通过映射普通文件实现共享内存通信
范例1包含两个子程序:map_normalfile1.c及map_normalfile2.c。编译两个程序,可执行文件分别为map_normalfile1及map_normalfile2。两个程序通过命令行参数指定同一个文件来实现共享内存方式的进程间通信。map_normalfile2试图打开命令行参数指定的一个普通文件,把该文件映射到进程的地址空间,并对映射后的地址空间进行写操作。map_normalfile1把命令行参数指定的文件映射到进程地址空间,然后对映射后的地址空间执行读操作。这样,两个进程通过命令行参数指定同一个文件来实现共享内存方式的进程间通信。
下面是两个程序代码:
/*-------------map_normalfile1.c-----------*/
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
typedef struct{
char name[4];
int age;
}people;
main(int argc, char** argv) // map a normal file as shared mem:
{
int fd,i;
people *p_map;
char temp;
fd=open(argv[1],O_CREAT|O_RDWR|O_TRUNC,00777);
lseek(fd,sizeof(people)*5-1,SEEK_SET);
write(fd,"",1);
p_map = (people*) mmap( NULL,sizeof(people)*10,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0 );
close( fd );
temp = 'a';
for(i=0; i<10; i++)
{
temp += 1;
memcpy( ( *(p_map+i) ).name, &temp,2 );
( *(p_map+i) ).age = 20+i;
}
printf(" initialize over \n ");
sleep(10);
munmap( p_map, sizeof(people)*10 );
printf( "umap ok \n" );
}
/*-------------map_normalfile2.c-----------*/
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
typedef struct{
char name[4];
int age;
}people;
main(int argc, char** argv) // map a normal file as shared mem:
{
int fd,i;
people *p_map;
fd=open( argv[1],O_CREAT|O_RDWR,00777 );
p_map = (people*)mmap(NULL,sizeof(people)*10,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
for(i = 0;i<10;i++)
{
printf( "name: %s age %d;\n",(*(p_map+i)).name, (*(p_map+i)).age );
}
munmap( p_map,sizeof(people)*10 );
}
map_normalfile1.c首先定义了一个people数据结构,(在这里采用数据结构的方式是因为,共享内存区的数据往往是有固定格式的,这由通信的各个进程决定,采用结构的方式有普遍代表性)。map_normfile1首先打开或创建一个文件,并把文件的长度设置为5个people结构大小。然后从mmap()的返回地址开始,设置了10个people结构。然后,进程睡眠10秒钟,等待其他进程映射同一个文件,最后解除映射。
map_normfile2.c只是简单的映射一个文件,并以people数据结构的格式从mmap()返回的地址处读取10个people结构,并输出读取的值,然后解除映射。
分别把两个程序编译成可执行文件map_normalfile1和map_normalfile2后,在一个终端上先运行./map_normalfile2 /tmp/test_shm,程序输出结果如下:
initialize over
umap ok
在map_normalfile1输出initialize over 之后,输出umap ok之前,在另一个终端上运行map_normalfile2 /tmp/test_shm,将会产生如下输出(为了节省空间,输出结果为稍作整理后的结果):
name: b age 20; name: c age 21; name: d age 22; name: e age 23; name: f age 24;
name: g age 25; name: h age 26; name: I age 27; name: j age 28; name: k age 29;
在map_normalfile1 输出umap ok后,运行map_normalfile2则输出如下结果:
name: b age 20; name: c age 21; name: d age 22; name: e age 23; name: f age 24;
name: age 0; name: age 0; name: age 0; name: age 0; name: age 0;
从程序的运行结果中可以得出的结论
1、 最终被映射文件的内容的长度不会超过文件本身的初始大小,即映射不能改变文件的大小;
2、 可以用于进程通信的有效地址空间大小大体上受限于被映射文件的大小,但不完全受限于文件大小。打开文件被截短为5个people结构大小,而在map_normalfile1中初始化了10个people数据结构,在恰当时候(map_normalfile1输出initialize over 之后,输出umap ok之前)调用map_normalfile2会发现map_normalfile2将输出全部10个people结构的值,后面将给出详细讨论。
注:在linux中,内存的保护是以页为基本单位的,即使被映射文件只有一个字节大小,内核也会为映射分配一个页面大小的内存。当被映射文件小于一个页面大小时,进程可以对从mmap()返回地址开始的一个页面大小进行访问,而不会出错;但是,如果对一个页面以外的地址空间进行访问,则导致错误发生,后面将进一步描述。因此,可用于进程间通信的有效地址空间大小不会超过文件大小及一个页面大小的和。
3、 文件一旦被映射后,调用mmap()的进程对返回地址的访问是对某一内存区域的访问,暂时脱离了磁盘上文件的影响。所有对mmap()返回地址空间的操作只在内存中有意义,只有在调用了munmap()后或者msync()时,才把内存中的相应内容写回磁盘文件,所写内容仍然不能超过文件的大小。
范例2:父子进程通过匿名映射实现共享内存
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
typedef struct{
char name[4];
int age;
}people;
main(int argc, char** argv)
{
int i;
people *p_map;
char temp;
p_map=(people*)mmap(NULL,sizeof(people)*10,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);
if(fork() == 0)
{
sleep(2);
for(i = 0;i<5;i++)
printf("child read: the %d people's age is %d\n",i+1,(*(p_map+i)).age);
(*p_map).age = 100;
munmap(p_map,sizeof(people)*10); //实际上,进程终止时,会自动解除映射。
exit();
}
temp = 'a';
for(i = 0;i<5;i++)
{
temp += 1;
memcpy((*(p_map+i)).name, &temp,2);
(*(p_map+i)).age=20+i;
}
sleep(5);
printf( "parent read: the first people,s age is %d\n",(*p_map).age );
printf("umap\n");
munmap( p_map,sizeof(people)*10 );
printf( "umap ok\n" );
}
考察程序的输出结果,体会父子进程匿名共享内存:
child read: the 1 people's age is 20
child read: the 2 people's age is 21
child read: the 3 people's age is 22
child read: the 4 people's age is 23
child read: the 5 people's age is 24
parent read: the first people,s age is 100
umap
umap ok
回页首
四、对mmap()返回地址的访问
前面对范例运行结构的讨论中已经提到,linux采用的是页式管理机制。对于用mmap()映射普通文件来说,进程会在自己的地址空间新增一块空间,空间大小由mmap()的len参数指定,注意,进程并不一定能够对全部新增空间都能进行有效访问。进程能够访问的有效地址大小取决于文件被映射部分的大小。简单的说,能够容纳文件被映射部分大小的最少页面个数决定了进程从mmap()返回的地址开始,能够有效访问的地址空间大小。超过这个空间大小,内核会根据超过的严重程度返回发送不同的信号给进程。可用如下图示说明:
注意:文件被映射部分而不是整个文件决定了进程能够访问的空间大小,另外,如果指定文件的偏移部分,一定要注意为页面大小的整数倍。下面是对进程映射地址空间的访问范例:
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
typedef struct{
char name[4];
int age;
}people;
main(int argc, char** argv)
{
int fd,i;
int pagesize,offset;
people *p_map;
pagesize = sysconf(_SC_PAGESIZE);
printf("pagesize is %d\n",pagesize);
fd = open(argv[1],O_CREAT|O_RDWR|O_TRUNC,00777);
lseek(fd,pagesize*2-100,SEEK_SET);
write(fd,"",1);
offset = 0; //此处offset = 0编译成版本1;offset = pagesize编译成版本2
p_map = (people*)mmap(NULL,pagesize*3,PROT_READ|PROT_WRITE,MAP_SHARED,fd,offset);
close(fd);
for(i = 1; i<10; i++)
{
(*(p_map+pagesize/sizeof(people)*i-2)).age = 100;
printf("access page %d over\n",i);
(*(p_map+pagesize/sizeof(people)*i-1)).age = 100;
printf("access page %d edge over, now begin to access page %d\n",i, i+1);
(*(p_map+pagesize/sizeof(people)*i)).age = 100;
printf("access page %d over\n",i+1);
}
munmap(p_map,sizeof(people)*10);
}
如程序中所注释的那样,把程序编译成两个版本,两个版本主要体现在文件被映射部分的大小不同。文件的大小介于一个页面与两个页面之间(大小为:pagesize*2-99),版本1的被映射部分是整个文件,版本2的文件被映射部分是文件大小减去一个页面后的剩余部分,不到一个页面大小(大小为:pagesize-99)。程序中试图访问每一个页面边界,两个版本都试图在进程空间中映射pagesize*3的字节数。
版本1的输出结果如下:
pagesize is 4096
access page 1 over
access page 1 edge over, now begin to access page 2
access page 2 over
access page 2 over
access page 2 edge over, now begin to access page 3
Bus error //被映射文件在进程空间中覆盖了两个页面,此时,进程试图访问第三个页面
版本2的输出结果如下:
pagesize is 4096
access page 1 over
access page 1 edge over, now begin to access page 2
Bus error //被映射文件在进程空间中覆盖了一个页面,此时,进程试图访问第二个页面
结论:采用系统调用mmap()实现进程间通信是很方便的,在应用层上接口非常简洁。内部实现机制区涉及到了linux存储管理以及文件系统等方面的内容,可以参考一下相关重要数据结构来加深理解。在本专题的后面部分,将介绍系统v共享内存的实现。
参考资料
[1] Understanding the Linux Kernel, 2nd Edition, By Daniel P. Bovet, Marco Cesati , 对各主题阐述得重点突出,脉络清晰。
[2] UNIX网络编程第二卷:进程间通信,作者:W.Richard Stevens,译者:杨继张,清华大学出版社。对mmap()有详细阐述。
[3] Linux内核源代码情景分析(上),毛德操、胡希明着,浙江大学出版社,给出了mmap()相关的源代码分析。
[4]mmap()手册
㈦ 我的电脑怎样修改显卡的共享内存
进入BIOS后“Advanced chipset setup”-“ONBOARD VGA SHARE MERNORY”是调整显存的。
但是各个主板情况是不同的
一、优化BIOS设置提高显示性能
显示性能是集成主板发挥性能最主要的瓶径,尤其是在运行3D游戏等考验显卡性能的程序时,集成显卡就会暴露出自己的缺点。而BIOS的设置与集成显卡的性能关系密切,留意并调校好以下几个BlOS选项就能为集成显卡带来更高的性能和稳定性。
1、AGP Date Rote
对于一般的主板,其显卡的AGP速率越高越好,但对集成显卡却未必是这样,因为目前的集成显卡只会用AGP通道传送少量指令数据,真正吃带宽的图形数据早已走“显示核心一内存”专用通道.所以AGP速率的高低不会成为集成显卡的性能瓶颈,但过高的AGP速率却会给系统带来不稳定的因素.所以建议还是保持默认值为好。
2、AGP Fast Write
Fast Wrtte是快速写入的意思,这个选项能提高集成显卡的性能.但它也可能有负作用,对系统的稳定性有一定影响。根据使用经验,目前很多的集成显卡都能正常使用Fast Write选项。
3、Grapphic Window WR Combine
这个选项在基于SiS芯片组的集成主板比较多见,它可以起到优化图形系统的读\写性能,对集成显卡的性能有一定的提升,因此建议大家开启此选项。
4、Video BIOS Cacheble
它的作用是决定是否将VGA BIOS和RAM缓冲指至内存的某个地址段,虽然开启后能提高一些集成显卡的性能,可一旦有程序向该地址段写入数据,电脑就会出现死机现象。所以建议关闭该选项.因为Video BIOS Cachable给集成显卡性能的提高很有限.但却给电脑带来了不稳定的隐患。
5、AGP Aperture Size
AGP Aperture Size选项的含义是AGP有效空间的大小,即划拔内存为显存的大小。显存容量如何分配一直是集成主板使用者左右为难的问题,显存容量划大了,内存容量就会减少,影响整体性能,显存容量划小了,对显卡的性能又有影响。应根据自己机器的内存容量来确定,通过实际使用,AGP Aperture Size 选项在64MB显存和128MB显存下,一般的应用性能差别并不明显。实际上,64MB的显存即可满足多数新型集成显卡的需求,而类似sis630这类几年前的集成显卡仅需16MB的显存。
Intel芯片组集成显卡有自己的一套显存分配法。早期Intel的整合显卡无须人工调整显存容量,而是自动分配,后来Intel又为Intel Extreme Graphics及其后续产品加入了“分级显存”功能,所谓分级显存就是“额定内存+动态显存”。额定内存规定了显存的最小分配值,当最小分配值不够用时,就会向操作系统请求更多的内存划为显存(动态显存)。所以,如果你不怎么玩大型游戏的话,那么尽可以将额定显存设置得小一些(如1MB),这既能满足游戏的需求,又能节省不少的内存。反之,最好将“额定显存”设为8MB以上,这虽会浪费一些内存.但却能获得更好的游戏兼容性。
另外,显存划拔的大小与内存大小密切相关(Intel 81X等集成主板除外),如果你的内存为 256MB,建议设置显存容量为64MB以内,如果你的内存为 128MB以,建议设置显存容量为32MB以内。
㈧ 增加共享内存对集成显卡的性能有多大提升
没有多少提升,而且目前集成显卡最大共享只有2G,没有更大的共享内存容量。
因为以集成显卡的性能而言,2G显存容量已经到顶了,不需要更多的显存容量,更多的显存容量对集成显卡而言,也只是一种浪费。
㈨ 服务器集群,负载均衡,分布式等问题
集群和负载均衡的区别如下:
1、集群(Cluster)
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信?应用程序可以通过网络共享内存进行消息传送,实现分布式计算机?
2、负载均衡(Load Balance)
网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去?这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性?
3、特点
(1)高可靠性(HA)?利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务?
(2)高性能计算(HP)?即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析?化学分析等?
(3)负载平衡?即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求?
LVS系统结构与特点
1. Linux Virtual Server:简称LVS?是由中国一个Linux程序员章文嵩博士发起和领导的,基于Linux系统的服务器集群解决方案,其实现目标是创建一个具有良好的扩展性?高可靠性?高性能和高可用性的体系?许多商业的集群产品,比如RedHat的Piranha? Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代码的?
2. 体系结构:使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器?物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连?最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得像一个服务于同一IP地址的虚拟服务器?
3. LVS的三种模式工作原理和优缺点: Linux Virtual Server主要是在负载均衡器上实现的,负载均衡器是一台加了 LVS Patch的2.2.x版内核的Linux系统?LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中?
㈩ autoit编写的代码怎么访问共享内存
在autoit里,提供的网络共享方面的功能函数有:
映射网络驱动器:
DriveMapAdd
(
"设备名",
"远程共享路径"
[,
标志
[,
"用户名"
[,
"密码"]]]
)
断开网络驱动器:
DriveMapDel
(
"驱动器"
)
获取已映射网络驱动器的路径:
DriveMapGet
(
"设备...