《深度探索 Linux 操作系统 系统构建和原理解析》 读书笔记 一

深度探索Linux操作系统 —— Linux图形原理探讨 本质上,谈及图形原理必会涉及渲染和显示两部分。但是显示过程比较简单和直接,而渲染过程要复杂得多,更重要的是,渲染牵扯到操作系统内部的组件更多,因此,本章我们主要讨论渲染过程。我们不想只浮于理论,结合具体的GPU进行讨论更有助于深度理解计算机的图形原理。相比于 NV 及 ATI 的 GPU ,我们选择相对更开放一些的Intel的 GPU 进行讨论。Intel 的 GPU 也在不断的演进,本书写作时主要针对的是用在和Ivy Bridge架构上的。 阅读详情
Linux下的二进制文件包括可执行文件、静态库和动态库,均采用ELF格式存储。目标文件格式也采用ELE格式存储。

32位ELF文件:

  对于32位的ELF文件,其最前部是文件头部信息,描述了整个文件的属性,除了包括该文件在什么操作系统中、运行在什么硬件体系结构上、程序入口地址是什么基本信息外,最重要记录了两个表格的相关信息,如表格所在的位置、其中包括的条目数等。其中这两个表格一个是Section Header Table,主要是供编译时链接使用,表格中定义了各个段的位置、长度、属性等信息;另外一个表是Program Header Table,主要是供内核和动态加载器从磁盘加载ELF文件到内存使用。对于目标文件,由于其只是编译过程的中间产物,不涉及装载和运行,目标文件不会创建Program Header Table。

  文件头信息后,就是各个段数据。ELF文件可以看作是段的组合。
 段数据可分为两类:代码段和数据段。
 代码段:存储指令 数据段:存储数据
 数据段又可细分为,已经初始化的全局数据存放在".data"段中,未初始化的数据存放子啊".bss"段中。".data"和".bss"本质上没有什么不同,当时因为未初始化的变量不包含数据,所以在ELF文件中不需要占用空间,程序装载时内存中即时分配。所以,为了节省存储器空间,人为地将存储数据的部分划分为两个段。除了最重要的代码段和数据段外,汇编器还在目标文件中创建辅助链接段,存储如符号表、重定位表等。
在这里插入图片描述

汇编

汇编过程的产物是目标文件,目标文件格式复杂,其中包含链接所需的信息。

可以通过gcc工具产生目标文件,使用readelf -h name.o 查看ELF头信息。
在这里插入图片描述

查看目标文件的Section Header Table : readelf -S name.o
在这里插入图片描述

  • “.text"段存储在文件0x34,占据0x9a个字节。不要将”.text"段和进程中的代码段混淆,进程的代码段不仅包括".text"段,在后面链接时,包括 .init、.fini 等段存储代码都属于代码段。这些段都被映射到Program Header Table中的一个段,在ELF加载时,统一作为进程的代码段。
  • ".data"段存储在文件0xd0字节处,占据0个字节(由于当前程序中没有初始化的变量)
  • “.bss"段在文件中只占据Section Header Table 中的一个Section Header,而并没有相应的段。在加载程序时,加载器将依据”.bss"段的section header 中的信息,在内存中为其分配空间。
    在这里插入图片描述从上图可以看出由于".bss"和".comment"的偏移地址都为0x001018,所以.bss在磁盘文件中并未占据任何空间,".bss"段的size只是告诉程序加载器在加载程序时,在内存中为该段分配的内存空间的大小。
  • “.symtab"段记录的是符号表。因为符号的名字字串长度可变,所以目标文件将符号的名字字符串剥离出来,记录在另外一个段中”.strtab"中,符号表使用符号名字的索引在段".strtab"中的偏移来确定符号的名字。
  • 同理,".shstrtab"中记录的时段的名字(sh – section header)
  • 以"rel"开头的,".rel.text"、".rel.eh_frame",记录的是段中需要重定位的符号。
  • ".eh_frame"段中记录的是调试和异常处理时用到的信息。
  • “.comment”、".note.GNU-stack"等段如其名字所示,都是一些comment和note。

在这里插入图片描述

链接

链接是编译过程的最后一个阶段,链接器将一个或者多个目标文件和库,包括动态库和静态库,链接为一个单独的文件(通常为可执行文件、动态库或者静态库)
 两个阶段

  • 第一个阶段是将多个文件合并为一个单独的文件。对于可执行文件,还需要为指令及符号分配运行时地址
  • 第二阶段进行符号重定位。
Linux和操作系统从入门到进阶2020最新书单大佬力荐 转载自网站导航(全部书单资源导航页):书单目录网站链接 前言:1.很多时候,是否好好看完一本好书,对一个人的提升往往能达到质的区别。就算不好好看完一本好书,马马虎虎看完,只要书是真的好书,也肯定会有很大的提高。2.好书和坏书的差别,从本质上,就是学习效率和大方向的差别。一本烂书可以浪费你半年的时间,但一本好书却可以为你带来真正扎实的基础和开阔的视野。人们常常用“内功”来形容扎实的基础,认为学好... 阅读详情

相关推荐

Linux操作系统深度解析:构建与内核原理

Linux内核包含许多关键子系统,其中几个核心子系统如下:进程调度(Scheduler):负责分配处理器时间,决定了哪个进程将获得CPU的使用权。内存管理(Memory Management):包括虚拟内存管理、页框分配、交换(swap)等机制。文件系统(Filesystem):支持多种文件系统,如ext4、xfs等,并提供虚拟文件系统(VFS)作为统一的文件系统接口。网络(Networking):提供完整的网络协议栈,支持TCP/IP及其他多种网络协议。

weixin_35706067的博客 909

深度探索Linux操作系统:系统构建和原理解析

深度探索Linux操作系统:系统构建和原理解析 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一本深入浅出解析Linux操作系统的电子书《深度探索Linux操作系统:系统构建和原理解析.pdf》,内容详尽,旨在帮助读者从基础环境搭建到工具链构建,逐步深入学习Linux系统的构建与原理。 内容概览 本书分为两章,详细介绍了Linux操作系统的构建过程及相关原理: 第1...

gitblog_06776的博客 571

深入体验未修改的深度操作系统安装

深度操作系统(Deepin),前身是基于Debian的Linux发行版——Hiweed Linux。近年来,它逐渐发展成为拥有自主产权的,以桌面应用为主的Linux操作系统,并且形成了一个全面的生态系统。它最显著的特点是拥有自主研发的深度桌面环境(DDE),这个环境以其美观、易用和高效的特点,为用户提供了全新的交互体验。深植于Linux技术,深度操作系统秉承开源的精神,其源代码对社区开发者开放,通过与广大开源爱好者的合作,持续优化和创新。

weixin_42146230的博客 810

⌈Linux_ 感受系统美学⌋ 抛开图形化界面,深入探索命令行操作系统

💡Linux操作系统: - Linux就如Windows,都是操作系统,其中: - Windows操作系统是一款`图形化`操作系统,因为是经过封装的,所以一定是操作方便,但不便于深入理解的 - Linux操作系统是一款`命令行`操作系统,因为没有经过封装,所以更加贴近系统,但不便于操作 - 但无论是命令行还是图形化,两款操作系统的功能定位都是一样的,都是访问计算机的方式 👆Linux能够用于哪些地方呢? - Linux能够进行各种语言的开发工作,基本主要以后端语言为

Dream_Y.ocean的博客 6048

深入探索嵌入式Linux与专用嵌入式操作系统

本篇博客文章深入探讨了嵌入式Linux系统和专用嵌入式操作系统的不同特点、优势和应用场景。文章首先介绍了cross-compiler的概念及其在内核编译中的作用,然后详细比较了通过适配现有操作系统与设计全新嵌入式操作系统的开发方法,进而深入分析了嵌入式Linux系统的构建配置、内存大小、时间约束和网络化能力等关键特性。

weixin_28999139的博客 452

深度探索Linux操作系统:系统构建和原理解析.pdf

第1章 准备基本环境 1 1.1 安装VirtualBox 1 1.2 创建虚拟计算机 2 1.3 安装Linux系统 2 1.4 使用root用户 5 1.5 启用自动登录 5 1.6 挂载实验分区 6 1.7 安装ssh服务器 6 1.8 更改网络模式 7 1.9 安装增强模式 8 1.10 使用Xephyr 8 第2章 工具链 10 2.1 编译过程 10 2.1.1 预编译 12 2.1.2 编译 14 2.1.3 汇编 17 2.1.4 链接 31 2.2 构建工具链 39 2.2.1 GNU工具链组成 40 2.2.2 构建工具链的过程 40 2.2.3 准备工作 43 2.2.4

深度探索Linux操作系统 —— 编译过程分析

在链接时,对于模块中引用的外部符号,链接器将根据符号表进行符号的重定位。如果我们将符号表删除了,那么链接器在链接时将找不到符号的定义,从而不能进行正确的符号解析。比如,代码中以 “.cfi” 开头的伪指令是辅助汇编器创建栈帧(stack frame)信息的。,而该函数体中也只有区区一行代码,但为什么产生的汇编代码如此之长?中的符号表删除,再次进行链接,则链接器将因找不到符号定义而终止链接,如下所示。的缩写,表示符号 foo2、foo2_func 是未定义的。来说是外部符号,没有在任何一个段中,所以在列。

Liuqz2009的专栏 1425

深度探索Linux操作系统 系统构建和原理解析.pdf

《深度探索Linux操作系统:系统构建和原理解析》 [1] 是探索Linux操作系统原理的里程碑之作,在众多的同类书中独树一帜。它颠覆和摒弃了传统的从阅读Linux内核源代码着手学习Linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的Linux操作系统的过程为依托,指引读者在实践中去探索操作系统的本质。这种方式的妙处在于,让读者先从宏观上全面认清一个完整的操作系统中都包含哪些组件,各个组件的作用,以及各个组件间的关系,从微观上深入理解系统各个组件的原理,帮助读者达到事半功倍的学习效果,这是作者潜心研究Linux操作系统10几年的心得和经验,能避免后来者在学习中再走弯路。此外,《深度探索Linux操作系统:系统构建和原理解析》还对编译链接技术(尤其是动态加载和链接技术)和图形系统进行了原理性的探讨,这部分内容非常珍贵。 全书一共8章。

深度探索Linux操作系统 —— 构建桌面环境

计算机领域中的桌面环境()其实是一种比喻的说法,即图形用户界面就像物理书桌一样,其上可以放置文件夹、文档等。桌面最初用来特指个人计算机(PC),但是现在不只个人计算机有图形界面环境,服务器、嵌入式设备等基本都提供桌面环境。桌面环境包括窗口管理器、任务条等基本组件,除了这些基本的组件外,有的桌面环境还提供文件管理器、控制面板等。桌面环境是操作系统中人机交互的关键部分,理解它的基本运作原理,无论是对理解操作系统,还是对开发应用程序,都有极大的帮助。

Liuqz2009的专栏 1414

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 663

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

国产深度Linux(deepin)操作系统

国产深度Linux(deepin)操作系统

LCY20110310的博客 6762

全同态加密:CKKS

不论是 LSB 编码的 BGV,还是 MSB 编码的 BFV,它们的同态运算都是对 $\mathbb Z_t$ 上明文的**精确计算**,因为**密文中的明文空间和噪声空间是分离的**。例如,在 BGV 中是 $te+m$,在 BFV 中是 $\delta m+e$。但是,这种精确计算是在同余意义下的,如果将明文视为实数,那么实际上同态运算时的噪声破坏了明文的 MSB $\lfloor m/t \rfloor$,仅保留了 LSB $[m]_t$,

weixin_44885334的博客 7544

深入探索 Linux:从零构建你的开源操作系统之旅

Linux 内核本身不能直接使用。发行版(Distro)是将 Linux 内核、GNU 工具、软件包管理器、桌面环境等整合在一起的完整操作系统。阿里云服务器38元每年*:https://www.aliyun.com/benefit?source=5176.29345612&userCode=ifzmrq1c历史脉络:从 Linus 的“小爱好”到全球基础设施核心安装实践:从选择发行版到完成系统部署结构认知:深入理解 FHS 标准下的目录设计哲学。

1175

告别I2C和SPI:用FPGA驱动DS18B20,一根线搞定温度采集(附Verilog代码)

本文详细介绍了如何利用FPGA通过单总线协议(One-Wire)驱动DS18B20温度传感器,仅用一根数据线实现高效温度采集。内容涵盖协议解析、Verilog代码实现及调试技巧,帮助开发者节省IO资源并提升系统性能。

weixin_42696271的博客 389

RTKLIB PPP与RTK_POST精密定位实战:从实时到事后处理的完整流程解析

本文详细解析了如何使用RTKLIB进行精密单点定位(PPP)的完整流程,涵盖从实时处理到事后处理(RTK_POST)的关键步骤。文章深入探讨了数据准备、软件配置、核心参数设置(如电离层、对流层、潮汐改正)以及常见问题排查,旨在帮助用户掌握高精度GNSS定位技术,实现从入门到精通的实战应用。

weixin_29047919的博客 279

深度探索Linux操作系统 —— 构建工具链

《深度探索Linux系统:系统构建和原理解析》笔记——2.工具链构建 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链    编译过程分为4个阶段,分别是:编译预处理、编译、汇编以及链接。每个阶段都涉及了若干工具,GNU将这些工具分别包含在3个软件包中:Binutils、GCC、Glibc。Binutils:GNU将凡是与二进制文件相关的工具,都包括在软件包Binutils中。Binutils就是 Binary utilities 的简写,其中主要包括生成目标文

Liuqz2009的专栏 928

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

深度探索Linux操作系统系统构建和原理解析

深度探索Linux操作系统系统构建和原理解析作者:王柏生出版社:机械工业出版社出版年:2013-10页数:424定价:89.00元ISBN:9787111439011样章下载:http://wenku.it168.com/d_0...

cuad2192的博客 431

Coze智能体开发:扣子空间制作PPT功能

扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。

王国平的博客 2052

ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。

m0_64336780的博客 4万+

国产操作系统介绍和安装

信创(信息技术应用创新产业),内容是国家要求从党政开始向8个行业应用扩展,从底层硬件到上层软件尽可能全部替换成国产替代。在信创工程支持下,国产操作系统在国内占据了一定市场。本文章就主要介绍下国产操作系统以及下载和安装。

new9232的博客 8296

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度探索Linux操作系统第二章:系统构建和原理解析-工具编译

虚拟机上操作系统:ubuntu-12.04-desktop-i386.iso 指导书:《深度探索Linux操作系统:系统构建和原理解析》王柏生 准备工作: wangwei@wangwei-VirtualBox:~$sudo apt-get update wangwei@wangwei-VirtualBox:~$sudo apt-get install upgrate 安装

lixiang201101的专栏 2878

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Linux基础IO】从零到一:文件管理系统深度探索

在Linux操作系统的广阔世界中,文件管理无疑是基石之一,它支撑着整个系统的稳定运行与高效运作。无论是日常办公、软件开发、服务器管理还是大数据处理,都离不开对文件系统的深入理解和熟练操作。因此,掌握Linux基础IO中的文件管理技能,对于每一个Linux用户、系统管理员以及开发者而言,都是至关重要的

EterNity_TiMe_的计算机学习之路 1641

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度分析linux王柏生光盘,深度探索LINUX操作系统--系统构建和原理解析(附光盘)...

摘要:深度阐释Linux操作系统原理的里程碑之作,由拥有超过10年研发经验的资深Linux专家撰写 以从零开始构建一个完整的Linux操作系统的过程为依托,宏观上全面厘清了构成Linux操作系统的各个组件以及它们之间的关系,微观上深入探讨了核心组件的基本原理以及相互间的协作关系,指引读者在富有趣味的实践中参透操作系统的本质 本书是探索Linux操作系统原理的里程碑之作,在众多的同类书中独树一帜...

weixin_36364044的博客 326
上一篇: Linux内核0.11完全注释(修正版) --读书笔记(2)
Noneghost
博客等级 码龄10年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值