怎么设置LINUX的设置共享内存存

如何设置LINUX的共享内存_百度知道
如何设置LINUX的共享内存
我有更好的答案
我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。  通过修改/proc/sys/kernel/shmmax参数可以达到此目的。  [root@neirong root]# echo
& /proc/sys/kernel/shmmax  [root@neirong root]# more /proc/sys/kernel/shmmax  这里设为1G。  对于shmmax文件的修改,系统重新启动后会复位。可以通过修改 /etc/sysctl.conf 使更改永久化。  在该文件内添加以下一行
kernel.shmmax =
这个更改在系统重新启动后生效.  1、设置 SHMMAX  SHMMAX  参数定义共享内存段的最大尺寸(以字节为单位)。在设置 SHMMAX 时,切记 SGA 的大小应该适合于一个共享内存段。 SHMMAX 设置不足可能会导致以下问题:  ORA-27123:unable to attach to shared memory segment  您可以通过执行以下命令来确定 SHMMAX 的值:  # cat /proc/sys/kernel/shmmax    SHMMAX 的默认值是 32MB 。我一般使用下列方法之一种将 SHMMAX 参数设为 2GB :  通过直接更改 /proc 文件系统,你不需重新启动机器就可以改变 SHMMAX 的默认设置。我使用的方法是将以下命令放入 /etc/rc.local 启动文件中:  # &echo && & /proc/sys/kernel/shmmax  您还可以使用 sysctl 命令来更改 SHMMAX 的值:  # sysctl -w kernel.shmmax=  最后,通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,您可以使这种更改永久有效:  # echo &kernel.shmmax=& && /etc/sysctl.conf  2、设置 SHMMNI  我们现在来看 SHMMNI 参数。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。这一数值已经足够,通常不需要更改。  您可以通过执行以下命令来确定 SHMMNI 的值:  # cat /proc/sys/kernel/shmmni  4096  3、设置 SHMALL  最后,我们来看 SHMALL 共享内存内核参数。该参数控制着系统一次可以使用的共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:  ceil(SHMMAX/PAGE_SIZE)  SHMALL 的默认大小为 2097152 ,可以使用以下命令进行查询:  # cat /proc/sys/kernel/shmall  2097152  SHMALL 的默认设置对于我们的 Oracle9 i RAC 安装来说应该足够使用。  注意: 在 i386 平台上 Red Hat Linux 的 页面大小 为 4096 字节。但是,您可以使用 bigpages ,它支持配置更大的内存页面尺寸。
为您推荐:
其他类似问题
共享内存的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
前面已经讨论过下个各种进程间的通信方式:管道,,消息队列,他们的共同特点就是通过内核来进行通信(假设消息队列也是在内核中实现的,因为标准并没有限定它的实现方式)。向管道,,消息队列写入数据需要把数据从进程复制到内核,从这些读取数据的时候又需要把数据从内核复制到进程。所以这种方式往往需要次在进程和内核之间进行数据的复制,即进程间的通信必须借助内核来传递。如下图所示:
图通过内核进行通信的
共享内存也是一种,它是目前可用中最快的,它是使用方式是将同一个内存区映射到共享它的不同进程的地址空间中,这样这些进程间的通信就不再需要通过内核,只需对该共享的内存区域进程操作就可以了,和其他不同的是,共享内存的使用需要用户自己进行同步操作。下图是共享内存区的通信,
图共享内存通信
1 mmap系列函数简介
mmap函数主要的功能就是将文件或设备映射到调用进程的地址空间中,当使用映射文件到进程后就可以直接操作这段虚拟地址进行文件的读写等操作不必再调用,等系统调用。在很大程度上提高了系统的效率和代码的简洁性。
使用函数的主要目的是:
对普通文件提供内存映射,可以提供无亲缘进程间的通信;
提供匿名内存映射,以供亲缘进程间进行通信。
对创建的共享内存区对象进程内存映射,以供无亲缘进程间进行通信。
下面是函数的接口以及说明:
#include &sys/mman.h&
void *mmap(void *start, size_t len, int prot, int flags, int fd, off_t offset);
start:指定描述符应被映射到的进程地址空间内的起始地址,它通常被设置为空指针,这告诉内核自动选择起始地址,该函数的返回值即为映射到内存区的起始地址。
len:映射到进程地址空间的字节数,它从被映射文件开头的第个字节处开始,通常被设置为。如下图是内存映射文件的一个例子:
图内存映射文件的示例
prot:内存映射区的保护由该参数来设定,通常由以下几个值组合而成:
PROT_READ:数据可读;
PROT_WRITE:数据可写;
PROT_EXEC:数据可执行;
PROT_NONE:数据不可访问;
flags:设置内存映射区的类型标志,标志定义了以下三个标志:
MAP_SHARED:该标志表示,调用进程对被映射内存区的数据所做的修改对于共享该内存区的所有进程都可见,而且确实改变其底层的支撑对象(一个文件对象或是一个共享内存区对象)。
MAP_PRIVATE:调用进程对被映射内存区的数据所做的修改只对该进程可见,而不改变其底层支撑对象。
MAP_FIXED:该标志表示准确的解释start参数,一般不建议使用该标志,对于可移植的代码,应该把参数置为,且不指定标志。
上面三个标志是在POSIX.1-2001标准中定义的,其中MAP_SHARED和必须选择一个。在Linux中也定义了一些非标准的标志,例如(),等,具体参考手册。
fd:有效的文件描述符。除非设定了()标志,在下面会忽略参数,而有的系统实现如需要置为;
offset:相对文件的起始偏移。
从进程的地址空间中删除一个映射关系,需要用到下面的函数:
#include &sys/mman.h&
int munmap(void *start, size_t len);
start:被映射到的进程地址空间的内存区的起始地址,即返回的地址。
len:映射区的大小。
对于一个的内存映射区,内核的虚拟内存算法会保持内存映射文件和内存映射区的同步,也就是说,对于内存映射文件所对应内存映射区的修改,内核会在稍后的某个时刻更新该内存映射文件。如果我们希望硬盘上的文件内容和内存映射区中的内容实时一致,那么我们就可以调用开执行这种同步:
#include &sys/mman.h&
int msync(void *start, size_t len, int flags);
start:被映射到的进程地址空间的内存区的起始地址,即返回的地址。
len:映射区的大小。
flags:同步标志,有一下三个标志:
MS_ASYNC:异步写,一旦写操作由内核排入队列,就立刻返回;
MS_SYNC:同步写,要等到写操作完成后才返回。
MS_INVALIDATE:使该文件的其他内存映射的副本全部失效。
2 mmap内存映射区的大小
Linux下的内存是采用页式管理机制。通过进行内存映射,内核生成的映射区的大小都是以页面大小为单位,即为的整数倍。如果映射的长度不是页面大小的整数倍,那么多余空间也会被闲置浪费。
下面可以查看的页面大小
#include &iostream&
#include &unistd.h&
int main()
std::cout&&"page size:"&&sysconf(_SC_PAGE_SIZE)&&std::
输出结果是:
page size:4096
那么下面对映射文件的大小和映射长度的不同情况进行讨论。
(1)映射文件的大小和映射长度相同
下面的代码
#include &iostream&
#include &cstring&
#include &cerrno&
#include &unistd.h&
#include &fcntl.h&
#include &sys/mman.h&
using namespace
PATH_NAME "/tmp/memmap"
int main(int argc, char **argv)
fd = open(PATH_NAME, O_RDWR | O_CREAT, 0666);
if (fd & 0)
cout&&"open file "&&PATH_NAME&&" failed...";
cout&&strerror(errno)&&
return -1;
if (ftruncate(fd, 5000) & 0)
cout&&"change file size
failed...";
cout&&strerror(errno)&&
close(fd);
return -1;
char *memP
memPtr = (char *)mmap(NULL, 5000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
if (memPtr == MAP_FAILED)
cout&&"mmap failed..."&&strerror(errno)&&
return -1;
cout&&"[0]:"&&(int)memPtr[0]&&
cout&&"[4999]:"&&(int)memPtr[4999]&&
cout&&"[5000]:"&&(int)memPtr[5000]&&
cout&&"[8191]:"&&(int)memPtr[8191]&&
cout&&"[8192]:"&&(int)memPtr[8192]&&
cout&&"[4096 * 3 - 1]:"&&(int)memPtr[4096 * 3 - 1]&&
cout&&"[4096 * 3]:"&&(int)memPtr[4096 * 3]&&
执行结果如下:
[4096 * 3 - 1]:0
Segmentation fault
用下图来分析执行结果:
图映射文件的大小和映射长度相同
由执行结果可以看到,能够完整的访问到前三页,在访问第四页的时候会产生信号,发生Segmentation fault段越界访问错误。按照《网络编程 卷:进程间通信》中的讲解,内核会为该内存映射两个页面,访问前两个页面不会有问题,但访问第三个页面会产生错误信号。这个差异具体应该是底层实现有关,留待以后研究。
(2)映射文件的大小小于映射长度
在上面代码的基础上,修改内存映射还是部分的第二个参数,如下:
memPtr = (char *)mmap(NULL, 4096 * 3, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
执行结果如下:
再修改访问代码,访问偏移以后的内存映射去,结果的情况是
[4096 * 3]:91
[4096 * 4 - 1]:0
Segmentation fault
用下图来分析执行结果:
该执行结果和之前的映射文件大小和映射长度相同的情况有比较大的区别,在访问内存映射区内部但超出底层支撑对象的大小的区域部分会产生错误信息,产生生错误,但访问第四页不会出问题,访问第四页以后的内存区就会产生 错误信息。按照《网络编程 卷:进程间通信》中的讲解,访问第三个页面以后的内存会产生错误信号。这个差异具体应该是底层实现有关,留待以后研究。
3 mmap实现进程间通信
下面将介绍本身提供的进程间通信的两种方式,分别用于无亲缘和亲缘进程间的通信。
(1)通过匿名内存映射提供亲缘进程间的通信
我们可以通过在父进程之前指定调用,通过映射一个文件来实现父子进程间的通信,保证了父子进程的内存映射关系保留到子进程中,父子进程对内存映射去的修改双方都可以看到。
在以后,提供匿名内存映射机制,即将的参数指定为:。这样就彻底避免了内存映射文件的创建和打开,简化了对文件的操作。匿名内存映射机制的目的就是为了提供一个穿越父子进程间的内存映射区,很方便的提供了亲缘进程间的通信,下面是测试代码:
#include &iostream&
#include &cstring&
#include &cerrno&
#include &unistd.h&
#include &fcntl.h&
#include &sys/mman.h&
using namespace
int main(int argc, char **argv)
memPtr = (int *) mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
if (memPtr == MAP_FAILED)
cout&&"mmap failed..."&&strerror(errno)&&
return -1;
*memPtr = 0;
if (fork() == 0)
*memPtr = 1;
cout&&"child:set memory "&&*memPtr&&
cout&&"parent:memory value "&&*memPtr&&
执行结果如下:
child:set memory 1
parent:memory value 1
()通过内存映射文件提供无亲缘进程间的通信
通过在不同进程间对同一内存映射文件进行映射,来进行无亲缘进程间的通信,如下测试代码:
#include &iostream&
#include &cstring&
#include &errno.h&
#include &unistd.h&
#include &fcntl.h&
#include &sys/mman.h&
using namespace
PATH_NAME "/tmp/memmap"
int main()
fd = open(PATH_NAME, O_RDWR | O_CREAT, 0666);
if (fd & 0)
cout&&"open file "&&PATH_NAME&&" failed...";
cout&&strerror(errno)&&
return -1;
ftruncate(fd, sizeof(int));
memPtr = (int *)mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
if (memPtr == MAP_FAILED)
cout&&"mmap failed..."&&strerror(errno)&&
return -1;
*memPtr = 111;
cout&&"process:"&&getpid()&&" send:"&&*memPtr&&
#include &iostream&
#include &cstring&
#include &errno.h&
#include &unistd.h&
#include &fcntl.h&
#include &sys/mman.h&
using namespace
PATH_NAME "/tmp/memmap"
int main()
fd = open(PATH_NAME, O_RDWR | O_CREAT, 0666);
if (fd & 0)
cout&&"open file "&&PATH_NAME&&" failed...";
cout&&strerror(errno)&&
return -1;
memPtr = (int *)mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
if (memPtr == MAP_FAILED)
cout&&"mmap failed..."&&strerror(errno)&&
return -1;
cout&&"process:"&&getpid()&&" receive:"&&*memPtr&&
执行结果如下:
process:12711 send:111
process:12712 receive:111
上面的代码都没进行同步操作,在实际的使用过程要考虑到进程间的同步,通常会用信号量来进行共享内存的同步。
4 基于的共享内存
上面介绍了通过内存映射文件进行进程间的通信的方式,现在要介绍的是通过共享内存区对象进行进程间的通信。共享内存使用方法有以下两个步骤:
通过创建或打开一个共享内存对象;
然后调用将它映射到当前进程的地址空间;
和通过内存映射文件进行通信的使用上差别在于描述符参数获取方式不一样:通过或。如下图所示:
POSIX共享内存区对象的特殊操作函数就只有创建(打开)和删除两个函数,其他对共享内存区对象的操作都是通过已有的函数进行的。
#include &sys/mman.h&
int shm_open(const char *name, int oflag, mode_t mode);
int shm_unlink(const char *name);
shm_open用于创建一个新的共享内存区对象或打开一个已经存在的共享内存区对象。
name:的名字,前面关于进程间通信都已讲过关于的规则,这里不再赘述。
oflag:操作标志,包含:,,,,。其中和标志必须且仅能存在一项。
mode:用于设置创建的共享内存区对象的权限属性。和以及其他的函数不同的是,该参数必须一直存在,如果参数中没有标志,该位可以置;
shm_unlink用于删除一个共享内存区对象,跟其他文件的以及其他的删除操作一样,对象的析构会到对该对象的所有引用全部关闭才会发生。
POSIX共享内存和消息队列,有名信号量一样都是具有随内核持续性的特点。
下面是通过共享内存进行通信的测试代码,代码中通过信号量来进行进程间的同步操作。
#include &iostream&
#include &cstring&
#include &errno.h&
#include &unistd.h&
#include &fcntl.h&
#include &semaphore.h&
#include &sys/mman.h&
using namespace
#define SHM_NAME "/memmap"
#define SHM_NAME_SEM "/memmap_sem"
char sharedMem[10];
int main()
fd = shm_open(SHM_NAME, O_RDWR | O_CREAT, 0666);
sem = sem_open(SHM_NAME_SEM, O_CREAT, 0666, 0);
if (fd & 0 || sem == SEM_FAILED)
cout&&"shm_open or sem_open failed...";
cout&&strerror(errno)&&
return -1;
ftruncate(fd, sizeof(sharedMem));
char *memP
memPtr = (char *)mmap(NULL, sizeof(sharedMem), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
char msg[] = "yuki...";
memmove(memPtr, msg, sizeof(msg));
cout&&"process:"&&getpid()&&" send:"&&memPtr&&
sem_post(sem);
sem_close(sem);
#include &iostream&
#include &cstring&
#include &errno.h&
#include &unistd.h&
#include &fcntl.h&
#include &semaphore.h&
#include &sys/mman.h&
using namespace
#define SHM_NAME "/memmap"
#define SHM_NAME_SEM "/memmap_sem"
int main()
fd = shm_open(SHM_NAME, O_RDWR, 0);
sem = sem_open(SHM_NAME_SEM, 0);
if (fd & 0 || sem == SEM_FAILED)
cout&&"shm_open or sem_open failed...";
cout&&strerror(errno)&&
return -1;
struct stat fileS
fstat(fd, &fileStat);
char *memP
memPtr = (char *)mmap(NULL, fileStat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
sem_wait(sem);
cout&&"process:"&&getpid()&&" recv:"&&memPtr&&
sem_close(sem);
程序的执行结果如下:
process:13719 send:yuki...
process:13720 recv:yuki...
在中,对于信号量和共享内存的名字会在下建立对应的路径名,例如上面的测试代码,会生成如下的路径名:
# ll /dev/shm/
-rw-r--r-- 1 root root 10 Aug 13 00:28 memmap
-rw-r--r-- 1 root root 32 Aug 13 00:28 sem.memmap_sem
Aug 13 AM 01:10 @dorm
浏览: 81554 次
来自: 杭州
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Linux内核参数-共享内存信号量设置
Linux内核参数-共享内存信号量设置
应用程序在linux系统上的安装过程中,有时涉及到设置linux内核参数;
这些内核参数究竟代表什么含义,如何调整这些参数?
kernel.shmall = 2097152 # 可以使用的共享内存的总量,单位:页。
kernel.shmmax =
# 最大单个共享内存段大小。取物理内存大小的一半,单位为字节
kernel.shmmni = 4096 # 整个系统共享内存段的最大数目。
kernel.sem = 250 8 #
每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
fs.file-max = 65536 # 系统中所允许的文件句柄最大数目。
net.ipv4.ip_local_port_range =
# 应用程序可使用的IPv4端口范围。
net.core.rmem_default = 1048576 # 套接字接收缓冲区大小的缺省值
net.core.rmem_max = 1048576 # 套接字接收缓冲区大小的最大值
net.core.wmem_default = 262144 # 套接字发送缓冲区大小的缺省值
net.core.wmem_max = 262144 # 套接字发送缓冲区大小的最大值
共享内存:
可以通过ipcs -lm命令查看目前系统共享内存的参数限制:
# ipcs -lm
—— Shared Memory Limits ——&
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (pages) = 2097152
min seg size (bytes) = 1
这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
含义:单个共享内存段最大字节数
设置:比SGA略大
查看:cat /proc/sys/kernel/shmmax
$ cat /proc/sys/kernel/shmmax
sysctl -w kernel.shmmax=
echo “kernel.shmmax=&P && /etc/sysctl.conf
含义:共享内存段最大个数
设置:至少4096
查看:cat /proc/sys/kernel/shmmni
# cat /proc/sys/kernel/shmmni
# sysctl -w kernel.shmmni=4096
# echo “kernel.shmmni=4096&P && /etc/sysctl.conf
含义:系统中共享内存页总数
设置:至少ceil(shmmax/PAGE_SIZE);ORACLE DOC
默认值:6=8GB
查看:cat /proc/sys/kernel/shmall
$ getconf PAGE_SIZE
# cat /proc/sys/kernel/shmall
# sysctl -w kernel.shmall=2097152
# echo “kernel.shmall=2097152&P && /etc/sysctl.conf
当前系统信号量限制:
# ipcs&-ls
—— Semaphore Limits ——&
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
含义:每个信号量set中信号量最大个数
设置:最小250;对于processes参数设置较大的系统建议设置为processes+10
含义:linux系统信号量set最大个数
设置:最少128
含义:linux系统中信号量最大个数
设置:至少32000;SEMMSL * SEMMNI
含义:semop系统调用允许的信号量最大个数
设置:至少100;或者等于SEMMSL
查看信号量设置:cat /proc/sys/kernel/sem
order:SEMMSL, SEMMNS, SEMOPM, SEMMNI
#&cat /proc/sys/kernel/sem
sysctl -w kernel.sem=”250 8&P
echo “kernel.sem=250 8&P && /etc/sysctl.conf
比如:Oracle提供了sysresv工具管理共享内存以及信号量,操作系统级别可以通过ipcs管理。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。正在初始化报价器linuxc共享内存要怎么设置?3个回答车小猴1、开机按DEL进入BIOS(不同主板进入BIOS的方法不同,部分主板按F2/F9/F12),可以看到BIOS界面的最上方有很多Tab,包括了“Main、Advanced”等等设定,找到一个“Chipset”的选项,它是倒数第二个Tab
2、在下面的界面中找到南桥设定选项(South Bridge Configyration),点击Enter进入详细设定界面。
3、在详细设定界面中找到“Primary Graphics Adapter”选项(初级显示适配器),点击Enter进入设定项目,将它设定为“Internal VGA First”。
4、找到“iGPU and Ext-VGA Seletion”选项,选择“Both Exit and Frame Buffer Detect”,启用共享显存。
5、在“iGPU Frame Buffer Size”(板载显卡共享显存容量)选项中选择板载显卡共享显存的大小,注意,共享显存的最大容量不超过电脑内存的四分之一。
6、保存好后,重启电脑就可以了。
希望我的回答能帮到您
诺念禁卫军d以root用户身份登录。编辑文件 /etc/sysctl.conf。
在RedhatLinux 中,您还可以修改 sysctl.conf 以设置内核参数。
按如下所示,设置kernel.shmax 和 kernel.shmall 的值:
echoMemSize > /proc/sys/shmmax
echoMemSize > /proc/sys/shmall
其中,MemSize 为字节数。
kernel.shmax 参数定义了共享内存段的最大大小(以字节为单位)。kernel.shmall 参数设置了在系统上可以一次使用的共享内存的总数(以页为单位)。将这两个参数的值设为计算机上的物理内存量。请以十进制字节数指定该值。
例如,要将两个值都设置为 2GB,请使用以下命令:
echo > /proc/sys/kernel/shmmax
echo > /proc/sys/kernel/shmall
使用以下命令重新引导该计算机:
reboot。就可以了
楷119修母最好是设置为“工作网络”,然后右击需要共享的文件夹,选择共享后,会出现选择框,基本上不太用设置,使用默认项就可以了。另外如果两台电脑联机的时候,最好是设置一下开机密码,这样出现需要密码访问的时候,直接出入密码就可以登录了。
热门问答123456789101112131415161718192021222324252627282930相关问答2个回答iyzxdeeye漫步者H180P为手机耳机,单插头耳机,搭配手机或者单孔电脑使用。K180为双插头电脑耳机,适用于双孔电脑。
1个回答DemonZXY7Vl目前市场上木器漆品牌比较多,质量情况也是良莠不齐。所以,在选购木器漆时,一定要货比三家,尽量考虑那些品牌知名度高的牌子,质量跟售后服务都比较好啊。比如说:大宝漆Taiho,华润漆H...3个回答zhenzhen_4691海贝海 300个小米螺 天然贝壳海螺的报价为:?9.90
贝壳海螺哨子送儿童玩具礼物贝壳工艺品的报价为:?1
以上报价来源于网络,仅供个人参考,具体报...3个回答大锋grt6A:合肥蜀山区年年红搬家公司
地址:合肥市蜀山区潜山路与黄山路交口西环中心广场
B:合肥蜀山区金顺搬家公司
地址:合肥市蜀山区长丰路159号
C:合肥蜀山区...3个回答明天的装修1航天民生冰箱产品质量还是比较可靠的,值得信赖,有周密的监督机制。所以他们家不管是产品、服务、质量、团队口碑都相当好,受到业内一直好评,销量还挺好的。做工很精细,质量也很好,能用很长...3个回答坤坤疑002A 上海门禁五金有限公司
地址: 凯旋路3001号中南凯旋商务楼2...
B 上海百胜门禁安装公司
地址: 上海市漕溪北路1112号
C 永发自动门...3个回答杨嫦_0584艺美家家居中国沙发行业的标准制定参与单位 基本上可以这么说 顾家家居沙发的标准
就是中国沙发行业的标准。。。所以如果有人告诉你 顾家沙发不好。。。。就意味了着。。。中国木有质...3个回答大杉暂恰昆明松涛电脑维修中心是一家专业从事笔记本电脑维修为主导的芯片级维修单位。 公司拥有敬业勤奋、具有丰富专业知识的员工队伍,多名员工取得 CISCO 认证工程师和联想认证硬件工程师资格...3个回答玄心佑风以下是各商家古船木餐桌报价:
红鑫桌椅有限公司,价格:128元
恒欣桌椅有限公司,价格:130元
中盛桌椅有限公司,价格:135元
价格来源网络,仅供参考。...3个回答白-刚酷派8097600元。
主屏尺寸:4.7英寸
主屏分辨率:854x480像素
后置摄像头:500万像素
前置摄像头:暂无数据
电池容量...

我要回帖

更多关于 独立显卡共享内存设置 的文章

 

随机推荐