免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
11 [报告]
发表于 2006-04-17 20:28 |只看该作者
原帖由 雨丝风片 于 2006-4-17 18:56 发表


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

进程的地址空间由vmspace结构体描述,其中的每一段连续的地址范围由vm_map_entry结构体描述,在vm_map_entry结构体下面会挂接上vm_object结构体,这个结构体用来表 ...


受教了。。。

论坛徽章:
0
12 [报告]
发表于 2006-04-18 07:55 |只看该作者
原帖由 gvim 于 2006-4-17 20:28 发表
受教了。。。




忘了楼主问的是NetBSD了,俺说的是FreeBSD的情况,这两者的虚存模型不太一样,

另外,如果是硬盘文件系统,在程序运行过程中umount的时候,会提示设备忙,拒绝umount。这和楼主的“内存盘”究竟有什么不一样的地方?

论坛徽章:
0
13 [报告]
发表于 2006-04-18 08:50 |只看该作者
雨版变大鸟了

论坛徽章:
0
14 [报告]
发表于 2006-04-18 09:35 |只看该作者
原帖由 雨丝风片 于 2006-4-17 18:56 发表


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

进程的地址空间由vmspace结构体描述,其中的每一段连续的地址范围由vm_map_entry结构体描述,在vm_map_entry结构体下面会挂接上vm_object结构体,这个结构体用来表 ...


我觉得,进程被内核刚开始准备执行,就应该初始化了相关数据结构,并通过这些数据结构从vnode page里把的数据读入了内存(至少小程序应该是一次就读入了),这时候,我觉的内存中进程同存储原始执行文件的盘应该没有实质的联系了。 那么我强制挂解(umount -f)掉这个盘也应该对进程没有实质的威胁。系统通过什么机制发现和杀死相关进程的呢?有这个必要吗?

雨丝风片
在程序运行过程中umount的时候,会提示设备忙,拒绝umount。这和楼主的“内存盘”究竟有什么不一样的地方?

它提示忙,我可以通过暴力挂解它 umount -f ...

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

论坛徽章:
0
15 [报告]
发表于 2006-04-18 09:57 |只看该作者
原帖由 gvim 于 2006-4-17 20:27 发表



我忽略了你是的目标系统没有磁盘。
也就是说你需要提供一个md_disk_root类似的东西作为根文件系统。(config文件里面有这个选项,具体名字你在查查)
这个时候你的系统本来就是跑在内存里的。
那么,我觉得 ...

我的根目录挂在flash上

论坛徽章:
0
16 [报告]
发表于 2006-04-18 10:19 |只看该作者
原帖由 ljoolj 于 2006-4-18 09:35 发表
我觉得,进程被内核刚开始准备执行,就应该初始化了相关数据结构,并通过这些数据结构从vnode page里把的数据读入了内存(至少小程序应该是一次就读入了),这时候,我觉的内存中进程同存储原始执行文件的盘应该没有实质的联系了。 那么我强制挂解(umount -f)掉这个盘也应该对进程没有实质的威胁。系统通过什么机制发现和杀死相关进程的呢?有这个必要吗?...


进程的虚存数据结构确实是在刚开始运行时就初始化好了的,其中就包括代表可执行文件本身的vm_map_entry和vm_object结构体。

我粗略看了一下vnode相关的代码,vm_object结构体会指向一个vnode,这是用来完成虚存和文件之间的数据交换的,而在vnode结构体中也会指向“它的”vm_object结构体。当你umount一个文件系统的时候,就会顺着mnt_nvnodelist指针遍历其下的vnode节点,对每一个vnode,都会找到它的vm_object结构体,并释放其中的物理页面,这其中自然就包括代表你的可执行文件的vm_object结构体。你强制umount导致进程终止的原因应该就在这里了。不过我还没仔细阅读代码,对这个过程的细节还不清楚。

论坛徽章:
0
17 [报告]
发表于 2006-04-18 10:20 |只看该作者
原帖由 ljoolj 于 2006-4-18 09:35 发表
它提示忙,我可以通过暴力挂解它 umount -f ...


论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
18 [报告]
发表于 2006-04-18 10:27 |只看该作者
原帖由 雨丝风片 于 2006-4-18 10:19 发表


进程的虚存数据结构确实是在刚开始运行时就初始化好了的,其中就包括代表可执行文件本身的vm_map_entry和vm_object结构体。

我粗略看了一下vnode相关的代码,vm_object结构体会指向一个vnode,这是用来完成 ...

那么程序被再次唤醒或正在运行时,则会出现缺页,而又无页可调的情况下导致退出,是不是这样?

论坛徽章:
0
19 [报告]
发表于 2006-04-18 10:35 |只看该作者
原帖由 congli 于 2006-4-18 10:27 发表

那么程序被再次唤醒或正在运行时,则会出现缺页,而又无页可调的情况下导致退出,是不是这样?


皮之不存,毛将焉附。

至于在umount的时候具体释放了哪些页面、对vm_object会产生什么影响,以及具体实在哪一步因为什么原因导致了进程终止,还得仔细看看代码再说。但这应该是个方向。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
20 [报告]
发表于 2006-04-18 12:29 |只看该作者
星期天才找到一本《File System Forensic Analysis》,比较有意思。2005年的,emule上有。
大概看了看,对Unix来说:
从下硬件到上构架都有介绍。还有RAID,磁盘扩展等的详细内容。
详细介绍了Linux的PC-based的硬盘分区,*BSD的Server-based硬盘分区。
详细介绍了Linux的ext2/ext3,*BSD的UFS1/UFS2。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP