LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 637|回复: 3

请问一个Linux中进程的问题!

[复制链接]
发表于 2005-8-15 10:36:00 | 显示全部楼层 |阅读模式
我想问一个Linux中进程的问题:在创建一个进程的时候,首先是核心去检查是否可以创建,然后是进行进程数据结构的复制。那么如果我的新进程是去执行一个可执行文件,是不是首先去了解这个可执行文件印象的信息头,而不是直接在虚拟内存中映射相应的代码和数据,只到真正去执行那些代码?还有一个问题,好像有一个静态连接和动态连接的说明,静态连接是不是发生在仅仅载入执行文件的具体代码的时候,而动态连接发生在需要载入共享库的时候?这里的静态连接和我们编译出可执行文件时候的那个gcc静态连接选项是不同的吧?
发表于 2005-8-15 11:07:56 | 显示全部楼层
是在执行那些代码时才映射,至少处理elf格式的文件是这样的。
你可以看看fs/binfmt_elf.c中load_elf_binary()调用kernel_read(), elf_map()的顺序.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-15 14:13:55 | 显示全部楼层
Post by daemeon
是在执行那些代码时才映射,至少处理elf格式的文件是这样的。
你可以看看fs/binfmt_elf.c中load_elf_binary()调用kernel_read(), elf_map()的顺序.

在进程产生后,还没有执行可执行文件的具体代码时,它的虚拟内存中是些什么信息啊?是不是要执行的代码在哪里的信息?那么当它需要执行具体代码时候,是由系统直接去硬盘中取到内存吗?系统有没有通过某些工具来取啊?比如当要连接共享库的时候,系统是不是会调用ld.so这样的程序。
回复 支持 反对

使用道具 举报

发表于 2005-8-15 14:18:18 | 显示全部楼层
建议你现看一些内存映射工作原理的资料!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表