2018-2019-1 20189208《Linux内核原理与分析》第八周作业
学习笔记
1.ELF目标文件格式
编译器生成目标文件,目标文件与目标平台二进制兼容。
ELF:可执行或可链接的格式,是目标文件格式标准。
ELF类型:
可重定位文件:编译器汇编器创建的 .o 文件,最后所有的 .o文件链接为同一个linux内核。
可执行文件:多个可重定位文件结合成可执行文件,除了运行时解析的共享库,其他重定位工作全部完成。
共享目标文件:共享库,被其他可执行文件调用。
如何看待ELF文件:
可执行文件:程序头表描述的段的集合,段包含节。
可重定位文件:节头表描述的节的集合
ELF结构:
ELF header:在文件的开始,保存了路线图,描述了该文件的组织情况。
Program header table:告诉系统如何创建进程映像。用来构造进程映像的目标文件必须具有程序头部表,可重定位文件不需要这个表。
Section header table:包含了描述文件节区的信息,每个节区在表中都有一项,每一项给出诸如节区名称、节区大小这类信息。用于链接的目标文件必须包含节区头部表,其他目标文件可以有,也可以没有这个表。
programheader:和创建进程相关,描述连续几个节在文件中的位置、大小以及它被放进内存后的位置大小,告诉系统如何创建进程映像,可重定位文件不需要这个表。

汇编
节区
.text
存放程序源代码编译后的机器指令
.data
存放全局变量和局部静态变量
.bss
为未初始化的全局变量和局部静态变量预留位置,目标文件中,未初始化变量不需要占据任何实际的磁盘空间
.rel.text
存放调用外部函数或者引用全局变量等相关的重定位信息
.rel.data
一个全局变量被初始化为其他文件中的全局变量地址或者外部定义函数的地址。
.symtab
存放函数和全局变量的信息,重定位时根据.rel.text和.rel.data来修正相关地址
.debug
-g选项之后才有, 调试符号表
.line
-g选项之后才有,记录源代码行号和.text中机器指令的映射关系
.strtab
以null结尾的字符串序列
ELF头(elf header)------readelf -h filename
包含系统相关、类型相关、加载相关、链接相关的信息
节头部表(section header table)------readelf -S filename
描述程序节,为汇编器和链接器服务。它把elf文件分成了许多
问题
1、 模块机制怎样弥补可扩展性和可维护性相对较差这一缺陷?
很多驱动程序都以模块的形式存在,用户可以有选择的加载需要的驱动程序。
2、gcc -x是什么?
gcc -x: -x只激活预处理,编译,和汇编,,只把程式做成obj文档;
gcc -c:文件.o是二进制汇编文件打开是乱码
3、#include <linux/init.h>//包含_init、_exit,kernel.h包含常用的内核函数
4、#include <linux/module.h>//驱动程序的头文件
MODULE_LICENSE("Dual BSD/GPL");
static char *name="ycx";
static int __init name_init(void)
{
printk("==Hello World==\n");
printk("==Hello %s==\n",name);
return 0;
}
static void __exit name_exit(void)
{
printk(KERN_INFO"Name module exit\n");
}
module_init(name_init);
module_exit(name_exit);
module_param(name,charp,S_IRUGO);
2018-2019-1 20189208《Linux内核原理与分析》第八周作业的更多相关文章
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...
- 2019-2020-1 20209313《Linux内核原理与分析》第二周作业
2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 《Linux内核原理与分析》第一周作业 20189210
实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...
- 2018-2019-1 20189221《Linux内核原理与分析》第二周作业
读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- Mac进行 usr/bin 目录下修改权限问题,operation not permitted
一般情况下我们在使用mac系统过程中下载一些文件.新建一些项目之后,这些文件都会默认是只读状态,这时我们只需要简单的一句权限设置命令就可以解决 你要修改文件上层目录的路径 但是我们在对 usr/bin ...
- git修改已push的commit信息
本条适用于修改已push的最新的commit信息,确保本地的文件是最新的. 使用 git commit --amend 命令,(修改最近一次提交的注释信息),会进入到vim 编辑器 编辑提交信息,保存 ...
- nginx编译文件配置(原)
1.在根目录的opt下创建文件夹software并wget一个nginx包进行解压,/opt/software/,解压后需要对软件包文件进行授权 2.cd到nginx目录输入id nginx 未安装插 ...
- Sql JOIN 一张图说明
一图说明:
- SELECT list is not in GROUP BY clause and contains nonaggregated column
报错如下: Expression # of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sss.m ...
- layui 日期初化一个月前
lay('.test-item').each(function(){ var d = new Date(); laydate.render({ elem: this ,max: 0 ,value: d ...
- [模板] k短路
简介 Dijkstra最短路+A*搜索. 先逆向求所有点到终点的最短路 \(dis[i]\). 定义估价函数 \(f[i] = d[i] + dis[i]\) , 其中 \(d[i]\) 表示当前起点 ...
- poj 1015 Jury Compromise(背包变形dp)
In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of ...
- [TJOI2015]概率论
[TJOI2015]概率论 史上最短黑题 看起来一脸懵逼,没有取模,1e-9 根据期望定义,发现 分母是一个卡特兰数,,,,不能直接算 所以考虑怎么消掉一些东西 gn表示n个点的叶子个数和,fn表示n ...
- txt文件按行处理工具类(可以截取小说、分析日志等)【我】
txt文件按行处理工具类(可以分析日志.截取小说等) package file; import java.io.BufferedReader; import java.io.BufferedWrite ...