linux中ELF加载过程分析
sys_execve
| - do_execve
|
| - search_binary_handler
|- linux_binfmt= elf_format
|- elf_format-> load_elf_binary
| - elf_entry = load_elf_interp()
|-
| if (BAD_ADDR(elf_entry))
| force_sig(SIGSEGV, current);
| retval =-EINVAL;
binfmt_elf.c: line 1024
elf_entry = loc->elf_ex.e_entry;
if (BAD_ADDR(elf_entry)) {
force_sig(SIGSEGV, current);
retval = -EINVAL;
goto out_free_dentry;
}
ELF可行档的载入:
内核中实际执行
execv()
或
execve()
系统调用的程序是
do_execve()
,这个函数先打开目标映像文件,并从目标文件的头部
(
从第一个字节开始
)
读入若干
(128)
字节,然后调用另一个函数
search_binary_handler()
,在那里面让各种可执行程序的处理程序前来认领和处理。内核所支持的每种可执行程序都有个
struct linux_binfmt
数据结构,通过向内核登记挂入一个队列。而
search_binary_handler()
,则扫描这个队列,让各个数据结构所提供的处理程序、即各种映像格式、逐一前来认领。如果某个格式的处理程序发现特征相符而,便执行该格式映像的装入和启动。
我们从
ELF
格式映像的
相关文档:
一.真实主机配置与设置
前提条件:公司是通过IP、MAC地址映射的方式来访问网络的。
网关:192.168.10.1
以下两组IP,MAC可以访问外网
1.
IP:192.168.10.232
MAC: 00-0B-2F-1A-51-95
2.
IP:192.168.10.175
MAC:00-28-27-AB-56 ......
作者:北南南北
赞助:
来自:LinuxSir.Org
摘要: 本文主要介绍Linux系统的用户和用户组的查询、添加、修改及删除等管理工具;
1、/etc/passwd 和/etc/groups
2、超级权限控制 sudo 的配置文件/etc/sudoers ;
3、添加用户规则文件 /etc/login.defs 和 /etc/default/useradd
1、useradd 工具;
1.1、u ......
linux内核中最常见的锁是自旋锁(spin lock)。自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环等待锁重新可用。要是锁未被争用,请求锁的执行线程便能立刻得到它,继续执行。在任意时间,自旋锁都可以防止多于一个的执行线程同时进入临界区。
......
http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html
最近,我在学习Linux,下面是一些笔记。
使用电脑的时候,经常需要查找文件。
在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2 ......
在Linux下用buildroot搭建mips/arm的交叉编译平台
这个编译环境是不能编译for开源无线路由器的程序的,因为内核是2.6的
建议参考这篇: http://www.felix021.com/blog/read.php?1467
前两天买了NetGear WRT614 V9,搭载的是Broadcom的200MHz MIPS处理器。
由于使用的是开源操作系统Linux,所以可以刷网上一些NB的 ......