摘要: 现代软件系统中,除了进程,线程也是一个非常重要的概念。随着CPU频率增长开始出现停滞,处理器逐渐开始想多核方向发展。多线程,作为实现软件并发执行的重要方法之一,也开始被重视。 线程概念 线程(Thread),也称轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一 阅读全文
posted @ 2021-01-13 16:36 Max_hhg 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 当我们在 Linux 的 bash 中输入命令执行某个 ELF 可执行文件时,如下所示。 $ ./hello.out 那么,Linux 系统是如何装载该 ELF 文件并执行的呢?这个过程可以分为以下这些步骤: 创建新进程 检查可执行文件类型 搜索匹配装载处理过程 装载执行可执行文件 首先在用户层面, 阅读全文
posted @ 2021-01-13 16:32 Max_hhg 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 模块化设计是软件开发中最常用的设计思想。链接(Linking) 本质上就是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确衔接。比如: 我们在模块main.c中使用另一个模块func.c中的foo()函数。我们在main.c模块中每一处调用foo时都必须确切知道foo函数的地址。但由于每 阅读全文
posted @ 2021-01-13 16:21 Max_hhg 阅读(1354) 评论(0) 推荐(0) 编辑
摘要: 目前,PC平台流行的 可执行文件格式(Executable) 主要包含如下两种,它们都是 COFF(Common File Format) 格式的变种。 Windows下的 PE(Portable Executable) Linux下的 ELF(Executable Linkable Format) 阅读全文
posted @ 2021-01-13 16:13 Max_hhg 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 下面以“Hello World”程序为例,来介绍程序的编译与链接过程。 // hello.c #include <stdio.h> int main() { printf("Hello World!\n"); return 0; } 在Linux下,可以直接使用GCC来编译Hello World程序 阅读全文
posted @ 2021-01-13 16:10 Max_hhg 阅读(1298) 评论(3) 推荐(0) 编辑
摘要: 发现一个好好玩的东西。 将任何文件的 URL 中的“github.com”替换成“github.githistory.xyz”即可查看文件修改历史。 阅读全文
posted @ 2021-01-13 16:00 Max_hhg 阅读(403) 评论(0) 推荐(0) 编辑