免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: schordinge
打印 上一主题 下一主题

问个很傻的问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-08-28 11:34 |只看该作者
内核开始地址在0xc0008000,后面的一个G空间是虚拟地址。

论坛徽章:
0
22 [报告]
发表于 2008-08-28 11:42 |只看该作者
原帖由 gigabyte 于 2008-8-28 11:30 发表


一开始看不进那么深奥的东西的,先把os的基本原理看看吧

其实这书不算深 这不过讲的有点过于繁冗而已!!

论坛徽章:
0
23 [报告]
发表于 2008-08-28 12:06 |只看该作者

回复 #22 vitoUNIX 的帖子

学习了,对于这些也是看的晕晕的,没有系统的整个概念,可能有用到的时候会有深入的理解吧

论坛徽章:
0
24 [报告]
发表于 2008-08-28 12:08 |只看该作者
4G说的是内存。。。不是说硬盘

论坛徽章:
0
25 [报告]
发表于 2008-08-28 12:42 |只看该作者
我想我的问题可以具体化:
1:系统上电启动,完成初始化 程序计数器pc指向内核的存储地址,我们这里假设内存大小正好是4g,架设内核调用用户程序时pc的值是0,假设内核占用了1g的空间,那么内核跳转到用户程序怎么实现?是不是用户程序相对于内核地址的偏移量?
2:如果是偏移量,是不是说用户程序的大小不能超过3g?

论坛徽章:
0
26 [报告]
发表于 2008-08-28 13:55 |只看该作者
所谓的程序空间包括程序的指令,堆,栈,数据,可以简单理解为就是程序指令的总条数
这个问题可以从单片机开始谈起:
1:考虑使用的是没有mmu的单片机,对于单片机来说整个程序就是一个进程,只要一上电这个进程就会无休止的跑下去。假设一个单片机的地址线是8位,那么你整个程序的地址空间就不能超过256B,即使你有1M的RAM也是枉然,因为程序计数器的偏移最大只有256B,超过这个数PC就无法正确的指到相应的位置。如果该用户有128B的RAM,1M的flash,用户编译的程序大小为150B,那么用户可以选择在flash中跑程序(必须是nand flash),或者128B在RAM中其他的22B在FLASH中(maybe??)
总结:如果你想把程序全部放在ram中跑,单片机程序空间的大小受到两个因素的限制:a:地址线的宽度 b:ram的大小
2:对于有mmu的mcu来说,我们可不用理会实际的ram的大小,因为mmu会很YD得帮你替换来替换去(实际上是os做的,这就是mmu的存在一般都伴随着os,os里面有很完善的替换机制),但是因素a的影响还是存在的。可以把任何一个有mmu的32位的系统想象为带了4G的物理内存,OS总是占据着虚拟地址0-1G的空间(EG:LINUX),假设编写了程序A,B,C。分别的大小是1,2,3G。再假设A,B同时运行.再假设分给A的虚拟地址是1-2G,分给B的是2-4G,正好很和谐。A,B跑完了以后虚拟空间释放出来给C用,至于虚拟空间对应的物理空间是什么那不用担心,总会从硬盘里找到的,访问硬盘和访问内存的方式不一样,有可能硬盘的接口地址就已经超过了32位宽,硬盘的大小不受地址线的宽度限制。
但是那么如果A,C一起运行呢?我觉得是不可以的,因为虚拟地址都没法分了。OS那1G你不能动他,C在跑,A就不能跑。

[ 本帖最后由 schordinge 于 2008-8-28 13:58 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2008-08-28 14:23 |只看该作者

回复 #26 schordinge 的帖子

Linux的内存管理到现在还是云里雾里。

论坛徽章:
0
28 [报告]
发表于 2008-08-30 22:08 |只看该作者

回复 #6 schordinge 的帖子

一般的话程序好像没有这么大的(个人认为,其实我也是个新手),另一个就是内核的内存管理机制肯定会在这种情况下进行处理的,也就是内存的一些页面会被不停的加载不同进程的代码,每换一次代码就会牵涉内存页面的一次释放和加载,当然如果真是这样的话,只有两个进程,我觉得就不需要进行进程调度了,因为这样太浪费时间了,除非是实时进程,不过实时进程应该就更不可能有这么大的了(2G)

论坛徽章:
0
29 [报告]
发表于 2008-08-30 22:46 |只看该作者
你应该看看文件系统哦!

论坛徽章:
0
30 [报告]
发表于 2008-08-31 15:45 |只看该作者
倒!cpu寻址的寻的是内存的数据,而cpu是不能够直接操作硬盘的,硬盘是通过底层的bios来完成的,你可以看内核的源代码的,那里面都是很清楚的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP