免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1837 | 回复: 7
打印 上一主题 下一主题

[Linux] 对linux和vxworks操作系统的不解 望高手指点 [复制链接]

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-04 19:55 |只看该作者 |倒序浏览
最近看到linux分了用户态和内核态,用户在对内存的操作的时候会很安全,这是为啥呢?还有就是说每个进程都有自己的内存地址。难道vxworks每个任务都没有自己内存地址嘛?还有一说就是vxworks都是从同一地址开始执行的。真心很难理解啊??望高手指导哈
我的理解就是,每个任务进程在执行的时候就会先将代码装载到内存中,那为什么又会有其它的任务程序会干扰到其它的任务啊  

论坛徽章:
0
2 [报告]
发表于 2012-11-05 18:41 |只看该作者
楼主看来是操作系统还没看完  完全看完就应该知道了
对vxworks  不熟悉  就说linux把   不过也是小孩没娘说起来话长啊  涉及东西东西太多
每个任务进程在执行的时候就会先将代码装载到内存中  
这种说发是不准确的  linux操作系统 不会把所有的代码段都加载进来 而是按需加载  就是用到什么就加载什么  看下分页机制就知道了
那为什么又会有其它的任务程序会干扰到其它的任务啊
这个问题很简单啊  比如你使用一个未初始化的指针   指针很有可能指向其他进程的内存区域   那么你改变了他的值不就破坏了其他进程吗

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
3 [报告]
发表于 2012-11-05 22:00 |只看该作者
回复 2# buzz-lin


    分页机制 我大概看了哈  就是根据那个线性地址来映射物理地址哈? 还有就是我们在编译一个程序为可执行文件的时候它的所做的操作时分配线性地址,还是怎么的操作啊??这里实在是很难理解、、、在者就是线性地址是怎么产生的,和实际的地址又是在哪个阶段关联起来的???

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
4 [报告]
发表于 2012-11-05 22:04 |只看该作者
回复 2# buzz-lin


    还有就是  不是说每个进程都有一个页表了嘛  那这么来算的话   为什么fork一个进程的时候其实是复制了一个4G的内存映射呢????????????

论坛徽章:
0
5 [报告]
发表于 2012-11-06 09:42 |只看该作者
我们在编译一个程序为可执行文件的时侯是不会产生线性地址的,程序启动的时候也就是装载的时候,装载时会把程序装载到虚拟内存里,去看看虚拟内存概念,linux把实际内存和虚拟内存分开, 你说的4G的内存其实是虚拟内存, 就是假设每个进程都可以访问4G的内存  当然linux把1G的空间是系统空间 用户不允许访问  剩下的3G空间是用户空间  这样用户在访问的时候 就好像有3G的空间  这时候的地址就是逻辑地址  
有三个概念
逻辑地址 (logical address) 是存储位置的地址,逻辑地址通常在请求控制器中的信息时使用。
线性地址 (linear address) (或称为 平面地址空间)是从 0 开始进行寻址的内存。之后的每个字节都可顺序使用下一数字来引用(0、1、2、3 等),直到内存末尾为止。。
物理地址 (physical address) 是使用物理地址总线中的位表示的地址。物理地址可能与逻辑地址不同,内存管理单元可以将逻辑地址转换成物理地址。
但是问题来了 实际内存可能是1G 2G 4G,这样我们就需要一种映射机制, 把逻辑上的地址转换为实际的内存地址 也就是物理地址  
逻辑地址-》线性地址-》物理地址  是这样一个转换关系   至于怎么转换的 可以去搜一下linux分段分页
Linux的swap分区就是硬盘专门为虚拟存储空间预留的空间

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
6 [报告]
发表于 2012-11-07 22:24 |只看该作者
回复 5# buzz-lin


    谢谢你的指导哈   对了**清华大学出版的《操作系统》的电子版书啊   或者有好点的操作系统电子版书  给我推荐哈撒

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
7 [报告]
发表于 2012-11-08 23:33 |只看该作者
回复 7# buzz-lin


    嘿嘿 以后多指导哈撒  呵呵:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP