程序员自我修养学习笔记
分页
线程
处于运行中线程拥有一段可以执行的时间,这段时间称为时间片(Time Slice),当时间片用尽的时候,该进程将进入就
绪状态。如果在时间片用尽之前进程就开始等待某事件,那么它将进入等待状态。每当一个线程离开运行状态时,调度系统就
会选择一个其他的就绪线程继续执行。在一个处于等待状态的线程所等待的事件发生之后,该线程将进入就绪状态。这3个状
态的转移如图1-9所示。
线程安全
多线程程序处于一个多变的环境当中,可访问的全局变量和堆数据随时都可能被其他的线程改变。因此多线程程序在并发时数据的一致性变得非常重要。
命令
- 预编译
- 编译
或者
- 汇编
或者
目标文件的格式
gcc binutils
gcc:特指GCC中的C语言编译器
Binutils工具集
挖掘SimpleSection.o
编译生成.o
binutils的工具objdump来查看object内部的结构
size 命令
代码段
数据段
BSS段
符号表
其他段
.rodata1 – Read only Data,这种段里存放的是只读数据,比如字符串常量、全局 const 变量。跟".rodata"一样
.comment – 存放的是编译器版本信息,比如字符串:“GCC: (GNU) 4.2.0”
.debug – 调试信息
.dynamic – 动态链接信息
.hash – 符号hash表
.line – 调试时的行号表,即源代码行号与编译后指令的对应表
.note – 额外的编译器信息。比如程序的公司名、发布版本号等
.strtab – String Table.字符串表,用于存储ELF文件中用到的各种字符串
.symtab – Symbol Table.符号表
.shstrtab – Section String Table.段名表
.plt .got – 动态链接的跳转表和全局入口表
.init .fini – 程序初始化与终结代码段。见"C++全局构造与析构"一节
ELF文件结构描述
文件头
段表
重定位表
字符串表
链接的接口——符号
特殊符号
强符号和弱符号
空间与地址分配
符号解析和重定位
重定位表
静态库
可执行文件的装载与进程
装载的方式
未完…
程序员自我修养学习笔记相关推荐
- 程序员自我修养阅读笔记——运行库
主要关注程序的启动过程. 1 入口函数和程序初始化 1.1 程序真正的入口 通常写代码时,我们认为程序的入口是main函数,但是实际上有一些现象值得我们怀疑该结论是不是正确的.比如全局变量的初始化 ...
- 程序员自我修养阅读笔记——可执行文件的装载过程
1 可执行文件的装载过程 1.1 进程虚拟地址空间 一个可执行文件被装载到内存变成程序后(进程和程序的区别在于一个是静态的一个是动态的,程序就是菜谱,进程就是厨师参考菜谱做菜的过程),拥有自己独立 ...
- 程序员自我修养阅读笔记——系统调用与API
1 系统调用 1.1 系统调用简介 由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API).是应用程序同 ...
- 程序员自我修养阅读笔记——Linux共享库管理
有了共享库那么就存在对库版本的管理问题. 1 共享库版本 1.1 共享库兼容 共享库更新时一般会存在两种形式的更新,兼容更新和不兼容更新.这里的兼容不仅仅指接口兼容,也指ABI(Applica ...
- 程序员自我修养阅读笔记——动态链接
1 为什么需要动态链接 动态链接,顾名思义,就是只有在程序需要调用对应的库中的实现时才将对应的库的映像文件加载到内存.相比而言,静态链接是在编译阶段就将需要的目标文件中的相关实现连接到可执行文件中 ...
- 《程序员自我修养》第七章读书笔记
书还是接上回,本篇主要对第七章的相关内容进行总结.第七章主要对动态链接的相关内容进行分析. 7.1 为什么要动态链接 既然要对动态链接进行分析,首先应对动态链接出现的原因进行一个简单的分析.动态链接从 ...
- 黑马程序员_java自学学习笔记(八)----网络编程
黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...
- 程序员编程技术学习笔记
程序员编程技术学习笔记 看july的博客也有好久了,一直没能好好整理一下自己的学习笔记,开了博客之后更加愿意好好整理一番了.其中不免有些内容在july那里可以找到原文,但是更多的加入了我个人的 ...
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
最新文章
- 解决Tomcat v8.0 Server at localhost failed to start.
- 数据库优化:Mysql慢查询的定位和分析
- windows2008 R2 如何建立FTP站点
- crackme算法分析---CRC32算法的妙用
- Learning Scrapy笔记(五)- Scrapy登录网站
- kettle数据清洗
- 双系统linux开机黑屏,解决双系统中ubuntu开关机异常,黑屏,出现“nouveau , SCHED_ERROR”字样等的问题...
- ue4 rpc php,UE4 Run On owing Client解析(RPC测试)
- Be a Life-long Learner
- 【Scratch】青少年蓝桥杯_每日一题_11.25_小猫碰到黑块和白块
- 5G时代,玖玖星球云算链引领VR技术踏上新台阶
- JS自写带描述标签云
- DOS命令字典..收藏
- C++写一个CSGO开箱模拟器
- Unity-如何隐藏App入口,然后通过其他App打开
- python教程(从入门到巅峰)1
- html图片添加阴影效果图,使用css给图片添加阴影入门篇
- 连接池连接Mysql数据库
- 自控力_书籍分享_读书笔记_第一章 我要做,我不要,我想要:什么是意志力?为什么意志力至关重要?_0001
- github个人主页