linux系统移植
最近做系统移植,用的s5pv210板子,SDRAM内存只有1G,从0x20000000到0x60000000,linux系统需要的内存是4G。这4G是如何分布的,假如RA...
最近做系统移植,用的s5pv210板子,SDRAM内存只有1G,从0x2000 0000到0x6000 0000,
linux系统需要的内存是4G。这4G是如何分布的,假如RAM有1G,NAND有1G,其它的怎么补充呢?是靠虚拟地址映射么?
按图中所示,怎么理解linux系统中高1G位给系统,低0-3G位是用户区间。 展开
linux系统需要的内存是4G。这4G是如何分布的,假如RAM有1G,NAND有1G,其它的怎么补充呢?是靠虚拟地址映射么?
按图中所示,怎么理解linux系统中高1G位给系统,低0-3G位是用户区间。 展开
2个回答
展开全部
linux使用的是虚拟内存管理,内核与硬件MMU一起管理物理内存
4GB是32位系统的寻址极限(2的32次方),支持PAE物理地址扩展的32位CPU使用36位硬件寻址所以至多可以使用64G内存,32位操作系统加以适当改造支持PAE可以最多支持64G内存,但是每个32位进程仍然只能寻址4GB, 在 Windows 下某些程序如MSSQL可以通过AWE地址窗口扩展来间接使用更多的内存
32位linux里最多每个进程都认为自己拥有4G的寻址空间,其中高1G是在内核态低3G为用户态就是进程本身可以使用的空间最多3GB, 但是他只是虚拟内存,,这个线性连续的内存空间被分成好几个段(segment),每个段存储不同内容如指令,堆栈,数据等等, 每个段又分成的更小的单位页(page), 而MMU把物理内存也分成很多的页(page), MMU维护一个表来映射物理内存的分配, 进程中的虚拟页需要存储数据时产生缺页中断MMU才给分配物理内存,当物理内存分配完之后系统会使用最近最少使用(LRU)算法选择不活动的页放入交换空间(SWAP), 腾出物理内存来分配给新的分配请求,如果所有可用的物理内存和交换空间都消耗殆尽,kernel还可以按照预定的规则杀死一些进程来释放内存,这时候应用程序就可能会受到影响
对于高1G位给系统,低0-3G位是用户区间,这是系统的定义, 用户进程只可以操作3GB用户空间,很多的操作如读取文件则需要进行系统调用,这时进程就转入内核态运行使用的是高1G的系统代码,为了系统的可靠性这部分代码由操作系统提供,运行在CPU的特权级别,可以直接操作硬件,一旦系统调用完成进程回到普CPU通级别运行
4GB是32位系统的寻址极限(2的32次方),支持PAE物理地址扩展的32位CPU使用36位硬件寻址所以至多可以使用64G内存,32位操作系统加以适当改造支持PAE可以最多支持64G内存,但是每个32位进程仍然只能寻址4GB, 在 Windows 下某些程序如MSSQL可以通过AWE地址窗口扩展来间接使用更多的内存
32位linux里最多每个进程都认为自己拥有4G的寻址空间,其中高1G是在内核态低3G为用户态就是进程本身可以使用的空间最多3GB, 但是他只是虚拟内存,,这个线性连续的内存空间被分成好几个段(segment),每个段存储不同内容如指令,堆栈,数据等等, 每个段又分成的更小的单位页(page), 而MMU把物理内存也分成很多的页(page), MMU维护一个表来映射物理内存的分配, 进程中的虚拟页需要存储数据时产生缺页中断MMU才给分配物理内存,当物理内存分配完之后系统会使用最近最少使用(LRU)算法选择不活动的页放入交换空间(SWAP), 腾出物理内存来分配给新的分配请求,如果所有可用的物理内存和交换空间都消耗殆尽,kernel还可以按照预定的规则杀死一些进程来释放内存,这时候应用程序就可能会受到影响
对于高1G位给系统,低0-3G位是用户区间,这是系统的定义, 用户进程只可以操作3GB用户空间,很多的操作如读取文件则需要进行系统调用,这时进程就转入内核态运行使用的是高1G的系统代码,为了系统的可靠性这部分代码由操作系统提供,运行在CPU的特权级别,可以直接操作硬件,一旦系统调用完成进程回到普CPU通级别运行
追问
物理的SDRAM只有1G,
第一个困惑:是不是说,所谓的4G,都是在交替使用这1G的SDRAM空间?
第二个:NAND flash内存里存放的是u-boot、内核、文件系统,是不是就对应上图的0xB000 0000到0xC000 0000,这是不是就起一个编址的作用,供CPU寻址使用;
(可是,U-boot对应的地址应该是首地址啊,刚开机供电的时候就要启用)
是不是此NAND非彼NAND?
追答
说法不准确,他只是在物理内存+交换空间还有富余时按需分配,然后映射到进程的地址空间
我的经验主要在 PC上,开机之后初始化BIOS会使用一部分低地址,之后指令自动跳转到磁盘启动地址,这里就是你的flash,U-boot最先被读进内存,然后加载内核以及文件系统里需要加载的驱动和相关应用,我同意你的话"此NAND非彼NAND"
力控科技
2024-08-19 广告
2024-08-19 广告
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中...
点击进入详情页
本回答由力控科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询