当前位置:首页 > 内存 > 正文

共享内存的使用(什么是共享内存)

  • 内存
  • 2024-06-08 12:11:37
  • 1909

一、win10gpu共享内存
大多数朋友可能都在任务管理器中检查过共享内存的值,但他们不知道它们之间有什么区别。今天我就来详细介绍一下其中的区别。。
win10gpu共享内存:
答:简单来说,专用内存是GPU本身使用的,不会分配给其他应用程序,而共享内存则可以被所有应用程序使用,但GPU有优先权。
专有GPU显存:
专有GPU显存通常默认分为两种:独立显存和集成显存。
独立显存是指独立的GPUPCIe卡,具有独立的GDDR显存。
而独显GPU显存是指GPU显卡上包含的显存。它只能由GPU使用。并且延迟非常小。
相比之下,集成显卡更加复杂,但这不包括集成到替代CPU(例如英特尔CPU)中的AMDGPU。我们以英特尔集成显卡为例。
上述专用GPU内存是指BIOS取代了系统内存集成的GPU专用的系统内存。
也就是说,BIOS实际上在初始化后保存了一部分内存供GPU使用,称为“StolenMemory”。
大小通常在16M到1024M之间。不同时代集成显卡所能支持的预留内存是不同的。例如:HD4000,它支持的最大显存为256M。这并不意味着你可以。有你想要的内存。
共享GPU内存:
这里的内存是指从系统内存中取出的内存,优先给GPU使用。
如果有32G内存和16G共享内存,并且有两个GPU,那么实际上系统内存并有被完全占用。16G是两个GPU一起使用,而不是每个GPU16G。
共享内存不仅可以被多个GPU共享,也可以被GPU和其他应用程序共享,但GPU的优先级更高。
而且Windows也会尝试使用专用GPU内存,其他应用程序在使用大量内存后可能会使用共享GPU内存。
而且这个值不能设置,需要Windows根据系统内存大小来设置。
内存带宽和延迟受PCIe限制,低于专有内存。这是Windows限制独占GPU内存使用的重要原因之一。
如果还有其他疑问,可以查看【Win10gpuFAQ】详细了解win10gpu的使用方法~
以上就是win10gpu共享内存区别的介绍。
二、linux共享内存使用的过程Linux使用共享内存的流程是怎样的?
1.什么是共享内存
顾名思义,共享内存允许两个不相关的进程访问同一逻辑内存。共享内存是在两个正在运行的进程之间共享和传输数据的非常有效的方式。不同进程之间共享的内存通常被组织成相同的物理内存块。进程可以将同一个共享内存段连接到自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由C语言函数malloc分配的内存一样。如果一个进程将数据写入共享内存,则这些更改会立即影响可以访问同一共享内存段的任何其他进程。
特别提醒:共享内存不提供同步机制,意味着在第一个进程完成对共享内存的写入之前,没有自动机制阻止第二个进程开始写入。到共享内存进行读取。所以我们经常需要使用其他机制来同步对共内存的访问,比如前面提到的信号量。
2.共享内存的使用
与beacon一样,Linux也提供了一套使用共享内存的功能接口,并且通用共存接口的使用也与其他Beacon兼容。以及更简单的用户界面语义。它们在sys/shm.h头文件中声明。
函数
该函数用于创建共享内存。其原型为:
intshmget(key_tkey,size_tsize,intshmflg);
第一个参数是信号量。对于semget函数,程序需要提供一个参数key(非零整数),有效地命名共享内存段。当shmget函数成功时,它返回与该键关联的共享内存标识符(非负整数)。用于后续的共享内存功能。调用失败并返回-1。
不相关的进程可以通过该函数的返回值访问同一共享内存,该值可以显示程序可以使用的资源。间接地,程序首先调用shmget函数并提供密钥,然后系统仅直接使用信号量密钥生成相应的共享内存标识符(shmget函数的返回值),并使用所有其他信号量函数。semget函数返回的信号量标识符。
第二个参数size,以字节为单位指定共享内存的大小
第三个参数shmflg是权限标志,其功能与open函数相同。模式参数相同。如果要创建由某个键标识的共享内存,但该键不存在,则可以与IPC_CREAT执行“或”操作。共享存储权限标志与文件读写权限相同。例如,0644,表示由进程创建的共享内存,允许根据所属进程读取和写入共享内存。by内存创建者同时,其他用户创建只能读取共享内存的进程。