计算机
土豆西瓜大芝麻
这个作者很懒,什么都没留下…
展开
-
计算机那些事(7)——线程
现代软件系统中,除了进程,线程也是一个非常重要的概念。随着CPU频率增长开始出现停滞,处理器逐渐开始想多核方向发展。多线程,作为实现软件并发执行的重要方法之一,也开始被重视。线程基础线程概念线程(Thread),也称轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合、堆栈组成。通常,一个进程由...转载 2020-04-08 15:24:14 · 305 阅读 · 0 评论 -
计算机那些事(6)——可执行文件的装载与运行
当我们在 Linux 的 bash 中输入命令执行某个 ELF 可执行文件时,如下所示。 1 $ ./hello.out 那么,Linux 系统是如何装载该 ELF 文件并执行的呢?这个过程可以分为以下这些步骤:创建新进程 检查可执行文件类型 搜索匹配装载处理过程 装载执行可执行文件创建新进程首先在用户层面,bash 进程会调用...转载 2020-04-08 15:20:05 · 322 阅读 · 0 评论 -
计算机那些事(5)——多个目标文件的链接、静态链接、动态链接
通过前面对ELF文件结构的详细介绍,我们对ELF目标文件从整体轮廓到局部细节都有了一定的了解。那么接下来,当我们有多个目标文件时,如何将它们链接起来形成一个可执行文件呢?一切都要从链接说起。链接概述模块化设计是软件开发中最常用的设计思想。链接(Linking)本质上就是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确衔接。比如:我们在模块main.c中使用另一个模块fu...转载 2020-04-08 15:04:26 · 1809 阅读 · 1 评论 -
计算机那些事(4)——linux可执行文件格式之ELF文件结构
前文结尾说到编译器编译源代码后生成的文件叫做目标文件,而目标文件经过编译器链接之后得到的就是可执行文件。那么目标文件到底是什么?它和可执行文件又有什么区别?链接到底又做了什么呢?接下来,我们将探索一下目标文件的本质。目标文件的格式目前,PC平台流行的可执行文件格式(Executable)主要包含如下两种,它们都是COFF(Common File Format)格式的变种。Win...转载 2020-04-08 14:32:41 · 1309 阅读 · 0 评论 -
计算机那些事(3)——程序构建及编译原理
最近在看《程序员的自我修养——链接、装载与库》一书,这本书以前看过一部分,由于难啃,当时没有坚持下去。现在工作了,每天接触的都是业务开发,对底层的一些东西感觉越来越陌生。于是,又把此书翻了出来拜读。为了加深阅读的印象,打算对书中的一些有价值的内容进行整理,也方便后续回顾。程序构建流程下面以“Hello World”程序为例,来介绍程序的编译与链接过程。 123456...转载 2020-04-08 11:26:20 · 334 阅读 · 0 评论 -
计算机那些事(1)——硬盘
硬盘接口常见的硬盘接口有:IDE、SATA、SAS、USB、SCSI,其中 SATA 是目前的主流接口,IDE 则几乎不再使用。设备文件计算机的各种硬件设备在 Linux 中都有对应的设备文件,甚至不同的接口也对应着不同的设备文件,从而使用不同的驱动程序来操作硬件设备。对于硬盘,实体设备的文件名一般是/dev/sd[a-];虚拟设备(虚拟机中的硬盘)的文件名一般是...转载 2020-04-08 00:16:13 · 496 阅读 · 0 评论