免费注册 查看新帖 |

Chinaunix

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

[NetBSD] 一个在内存跑进程和文件系统有什么关系? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-17 16:26 |只看该作者 |倒序浏览
如果一个执行文件存在一个内存盘中,当这个执行文件跑起来变成进程到内存后,当我umount这个内存盘,这个进程就马上死掉。进程和它存放的内存盘还有什么关系呢?

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
2 [报告]
发表于 2006-04-17 16:46 |只看该作者
系统并不是一次性把整个程序读到内存中,而是按需读取.不知道会不会是这个原因.

论坛徽章:
0
3 [报告]
发表于 2006-04-17 16:48 |只看该作者
原帖由 ljoolj 于 2006-4-17 16:26 发表
如果一个执行文件存在一个内存盘中,当这个执行文件跑起来变成进程到内存后,当我umount这个内存盘,这个进程就马上死掉。进程和它存放的内存盘还有什么关系呢?


“内存盘”是什么东东?

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
4 [报告]
发表于 2006-04-17 17:05 |只看该作者
就是内存文件系统,上次楼主的帖子
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
提到了这个东西,我没有想法,所以没有回。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
5 [报告]
发表于 2006-04-17 17:14 |只看该作者
如果楼主可以修改原代码的话,我想应该要方便解决些。
虽然是个比较笨的方法。
在内核初始init之前,仍在内核状态时添加下面的流程:
读取compress的文件解压缩进内存某处;(可以仿照boot代码)
设置这块内存为不可交换内存;(因为此时内存系统已经初始化完毕)
初始化init;
进入系统后,写一个类似驱动的东西,执行保存在内核中的你的东西。相当于一个wrapper。

或者,尝试移植支持你需要功能的文件系统。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
6 [报告]
发表于 2006-04-17 17:18 |只看该作者
不知道这样实现难道有几大?

论坛徽章:
0
7 [报告]
发表于 2006-04-17 17:54 |只看该作者
谢谢gvim 的关注。问题比较多,只好抓紧学吧

原帖由 congli 于 2006-4-17 16:46 发表
系统并不是一次性把整个程序读到内存中,而是按需读取.不知道会不会是这个原因.


我删掉执行文件,相关进程不会死掉(会不会有隐蔽问题,我不知道)但umount 掉相关内存盘,进程马
上就game over
感觉进程和文件系统有相当大的关系。不过一般资料都只介绍进程和内存管理方面的东西。

感觉在进程sleep时候不会死掉,进程是在切换运行时刻死掉的。

[ 本帖最后由 ljoolj 于 2006-4-17 18:03 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-04-17 18:12 |只看该作者
gvim 说的第一种方式,相当于程序跑在了内核层,这样以后修改调试恐怕不太方便。

论坛徽章:
0
9 [报告]
发表于 2006-04-17 18:56 |只看该作者
原帖由 ljoolj 于 2006-4-17 17:54 发表
感觉进程和文件系统有相当大的关系。不过一般资料都只介绍进程和内存管理方面的东西。

感觉在进程sleep时候不会死掉,进程是在切换运行时刻死掉的。
...


按我的理解,进程和文件系统的关系如下:

进程的地址空间由vmspace结构体描述,其中的每一段连续的地址范围由vm_map_entry结构体描述,在vm_map_entry结构体下面会挂接上vm_object结构体,这个结构体用来表示“映射源”,即映射到进程的这段地址范围中的数据源是什么。一般来说这个数据源就可以是硬盘上的文件。通过vm_object结构体可以找到相应的vnode pager,vnode pager负责从vnode中读出文件数据。

Layout of an address space.jpg (38.68 KB, 下载次数: 223)

Layout of an address space.jpg

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
10 [报告]
发表于 2006-04-17 20:27 |只看该作者
原帖由 ljoolj 于 2006-4-17 17:54 发表
谢谢gvim 的关注。问题比较多,只好抓紧学吧



我删掉执行文件,相关进程不会死掉(会不会有隐蔽问题,我不知道)但umount 掉相关内存盘,进程马
上就game over
感觉进程和文件系统有相当大的关系。不过一 ...

我的目标系统: cpu: powerpc
                      memory: 128M or 256M, (当然希望能小一点)
             flash: 16M.
                      执行文件格式elf

我忽略了你是的目标系统没有磁盘。
也就是说你需要提供一个md_disk_root类似的东西作为根文件系统。(config文件里面有这个选项,具体名字你在查查)
这个时候你的系统本来就是跑在内存里的。
那么,我觉得,就没有那么麻烦了,解压,执行,删除。这些都是在内存里操作的。你肯定不会想去卸载根文件系统,也不用担心内存收不回去。
楼主的原始初衷是不解压而直接执行,我想,这需要内核支持。(其实,只是内核帮你解压,实质差别不大)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP