完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
版主在前面关于虚拟内存的回复中说到:虚拟地址的引入,不仅使得用户程序可以运行在同样的虚拟地址上,还使得用户程序“看起来”能够使用的内存很大:一个程序在运行之前,没有必要全部装入内存,而仅需要将那些当前要运行的部分先装入内存,其余部分在用到时再从磁盘调入,而当内存耗光时再将暂时不用的部分调出到磁盘。这使得一个大程序可以在较小的内存空间中运行,也使得内存中可以同时装入更多的程序并发执行,从用户的角度看,该系统所具有的内存容量,将比实际内存容量大得多。
我的问题是在嵌入式开发中,如果内存耗光时,CPU如何将暂时不用的部分写入到磁盘?因为在嵌入式开发时,并没有象PC机上有专门划出一块硬盘供内存交换时使用,而且如果根文件系统和用户文件系统是只读的,如CRAMFS,根本就无法写入,那是不是意味着系统失去了这个功能?或者说系统会自动把暂时不用的部分丢掉了?有点不明白? |
|
相关推荐
1个回答
|
|
这是个好问题,下面的回答没有经过严格的考证,你估且看看。
swap(即内存换入换出)是否可用,取决于两个方面: ① 内核支持 在配置内核时,可以选择是否支持swap,位置为: General setup -> Support for paging of anonymous memory (swap) ② 用户启动 仅是内核支持是不够的,你还得给用户再次选择的机会吧?况且还要指定在什么地方保存这些交换数据。 这通过用户程序swapon来启动swap功能、指定数据保存位置。 回到楼主的问题,在嵌入式开发中通常不用swap功能,但是配置内核时并常常没有注意到这点,使得内核是支持swap功能的,只不过没有通过swapon启动它而已。 使用 ps -A | grep swap 命令,可以发现一个内核进程kswapd0,它就是用来完成内存的换入换出的,如果内核支持swap功能,就会看到这个进程。 至于它是否发生作用,可以用 cat /proc/swaps命令看出来。 |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2156 浏览 6 评论
1962 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4520 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:03 , Processed in 0.732261 second(s), Total 77, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号