第七周linux内核分析
可执行程序的装载
作者 黎静+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
可执行程序是怎么来的
目标文件的格式ELF
静态链接的ELF可执行文件和进程的地址空间
程序的入口 :Entry point address:0x8048300
一般静态链接会将所有代码放在一个代码段
- 动态链接的进程会有多个代码段
装载可执行程序之前的工作
- 可执行程序的执行环境
shell命令行、main函数的参数与execve的参数 Shell会调用execve将命令行参数和环境参数传递给可执行程序的main函数,先函数调用参数传递,再系统调用参数传递。
execve和fork都是特殊一点的系统调用:一般的都是陷入到内核态再返回到用户态。 fork父进程和一般进程调度一样,子进程返回到一个特定的点retfromfork,子进程是从retfromfork开始执行然后返回到用户态;
一般是地址空间为0x8048000或0x8048300;
execve特殊:执行到可执行程序--陷入内核--构造新的可执行文件--覆盖掉原可执行程序--返回到新的可执行程序,作为起点(也就是main函数) ,需要构造他的执行环境;
静态链接:elfentry指向可执行文件的头部,一般是main函数;2. 动态链接:elfentry指向ld的起点
可执行程序测装载
浅析动态链接的可执行程序的装载
(1)可以关注ELF格式中的interp和dynamic。
(2)动态链接库的装载过程是一个图的遍历。
(3)装载和连接之后ld将CPU的控制权交给可执行程序。
转载于:https://www.cnblogs.com/heiguirenxi/p/5366146.html
第七周linux内核分析相关推荐
- Linux内核分析期末总结
<Linux内核分析>期末总结 20135313吴子怡.北京电子科技学院 Chapter1 往期博客传送门 (1)计算机是如何工作的:Linux内核分析--第一周学习笔记 (2)操作系统是 ...
- Linux内核分析 第七周 可执行程序的装载
张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七 ...
- LINUX内核分析第二周学习总结——操作系统是如何工作的
LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- 20135320赵瀚青LINUX内核分析第一周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主 ...
- 《Linux内核分析》 第三周 构造一个简单的Linux系统MenuOS
Linux内核分析 第三周 构造一个简单的Linux系统MenuOS 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...
- Linux内核分析作业第二周
操作系统是如何工作的 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 1.计算机工作三 ...
- 《Linux内核分析》第一周笔记 计算机是如何工作的
一.计算机是如何工作的? 1.存储程序计算机工作模型 1)冯诺依曼体系结构 学习研究计算机的基本概念.就是指存储程序计算机.所有的有计算功能的电子设备小到计算器,大到超级计算机核心部分都可以用这种体系 ...
- Linux内核分析第一周——计算机是如何工作的
冯诺依曼体系结构 核心思想 1.冯诺依曼是:数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 2.采用二进制作为计算机数值计算的基础,以0.1代表数值.不采用人类常用的十进制计数方法,二进制使 ...
- Linux内核分析第二周:操作系统是如何工作的
第一讲 函数调用堆栈 计算机是如何工作的? (总结)--三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆 ...
最新文章
- 微服务限流Sentinel讲解(四)
- Andrew Ng机器学习课程6
- 【白话机器学习】算法理论+实战之AdaBoost算法
- Exception processing async thread queue
- mpvue v-html解决方案,mpvue开发小程序所遇问题及h5转化方案
- TCP第四次挥手为什么要等待2MSL
- 栈和队列的区别,栈和堆的区别
- 幼儿园 c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据
- B-数,B+树,B*树简单定义
- [渝粤教育] 江西理工大学 新融合大学英语(I) 参考 资料
- 男孩应该懂的,女孩应该懂的
- 华为5大设计师讲述HarmonyOS UX设计背后的故事
- 关于海康威视网络摄像机二次开发问题
- java thrift使用指南_Thrift使用指南
- 何为Servlet?
- 人工智能计算机技术图片,这是人工智能眼中它自己的样子
- [论文阅读-NeRF+SLAM] iMAP:首个隐式场景表征的实时SLAM
- 微信小程序 虚拟现实_开发虚拟现实应用程序的重要性
- 远程linux云主机,Linux实验室 远程连接Linux云主机方法
- QCA wlan driver load
热门文章
- 利用android studio 生成 JNI需要的动态库so文件
- edge浏览器设置默认浏览器
- kaggle數據集下載到colab上并且解压
- yelee主题安装gitalk(转载+整理)
- C++语法细节注意集锦
- 【机器学习】集成学习知识点总结二
- 反向代理post参数怎么传输_面试必备:GET和POST的区别详细解说
- 平方环法_2019环法挑战赛加速诸暨“运动之城”建设 推动“体育+旅游”新热潮...
- 开源大数据周刊-第102期
- 为什么Python是最吸金编程语言?