Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用C访问DRAM位单元?_C_Memory_Memory Leaks - Fatal编程技术网

是否可以使用C访问DRAM位单元?

是否可以使用C访问DRAM位单元?,c,memory,memory-leaks,C,Memory,Memory Leaks,如果这不是问这个问题的地方,我道歉。我想知道,如果C编程语言允许用户访问DRAM位单元,我似乎无法在网上找到任何专门回答我问题的资源,因此我更倾向于假设这是不可能的。感谢C编程语言可以寻址内存,因此它可以访问DRAM位单元。您必须知道地址,相应的DRAM位被映射到该地址,并使用逻辑运算符来操作该地址上的相应位。C没有提供任何特定方法来直接读取标准硬件平台(Windows、Linux等)的DRAM。 然而,这对于某些嵌入式平台是可能的,并且在很大程度上取决于操作系统、内核或系统核心的任何东西 不在

如果这不是问这个问题的地方,我道歉。我想知道,如果C编程语言允许用户访问DRAM位单元,我似乎无法在网上找到任何专门回答我问题的资源,因此我更倾向于假设这是不可能的。感谢

C编程语言可以寻址内存,因此它可以访问DRAM位单元。您必须知道地址,相应的DRAM位被映射到该地址,并使用逻辑运算符来操作该地址上的相应位。

C没有提供任何特定方法来直接读取标准硬件平台(Windows、Linux等)的DRAM。 然而,这对于某些嵌入式平台是可能的,并且在很大程度上取决于操作系统、内核或系统核心的任何东西

不在OSs下且具有虚拟内存的嵌入式系统,以及具有直接内存访问的嵌入式系统,显然可以并且确实访问内存

有些系统有DMA,正如名字所说,DMA允许直接访问内存。对于DMA,您需要有一个代码来编程DMA,并指示它从远程内存的某些部分读取或写入某些数据,在本例中为DRAM

如果硬件体系结构支持DRAM,则可以直接访问DRAM。目前,这种情况并不常见,因为人们认为DRAM访问可能会降低处理器的速度。这就是为什么使用dma来减轻主处理器访问外部内存这一枯燥乏味的任务

例如,请参阅下面对测试内存的代码的描述,主要内容是代码可以直接“看到”DRAM内存:

要了解有关内存、内存类型以及如何访问内存的更多信息,请阅读此处的优秀文章:


我希望这能回答您的问题,或者至少能帮助您理解访问DRAM涉及的内容。简而言之,操作系统访问常用系统上的DRAM,除非系统设计为可以通过地址直接访问DRAM。

硬件平台允许软件访问的任何内容都可以在C中访问。C可以访问您希望访问的任何内存地址,也可以访问I/O端口,取决于您平台的C编译器工具支持什么。假设您没有编写自己的操作系统或内核驱动程序,那么就不需要了。我的声誉不足以支持您的评论,但我只想感谢您的贡献!现在的问答极为误导。对于Windows、Linux、macOS等最常见的环境,甚至对于您的电视机顶盒,这个答案都是错误的。我的答案和问题一样精确。是否可以访问DRAM位?这个问题相当于“是否有可能访问用DRAM实现的RAM”,因为RAM的物理实现与系统上运行的程序无关,所以我的答案非常有效。更好的答案,你甚至提供了一篇论文来帮助我进行研究。谢谢VladP