程序是怎么跑起来的之二

臭大佬 2021-06-05 22:30:16 1520
linux 
简介 程序是怎么跑起来的
文件储存的基本单位是什么?

1 字节(8 位),文件是字节数据的集合体。

半角英文数字是用 1 个字节来表示的,汉字等全角字符是用两个字节来表示的。

文件就是字节数据的集合。用 1 字节(= 8 位)表示的字节数据有256 种,用二进制数来表示的话,其范围就是00000000~11111111。如果文件中存储的数据是文字,那么该文件就是文本文件。如果是图形,那么该文件就是图像文件。在任何情况下,文件中的字节数据都是连续存储的。

哈夫曼编码

为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩。

哈夫曼树的编码顺序

哈夫曼树

程序加载时会生成栈和堆

栈是用来存储函数内部临时使用的变量(局部变量 ),以及函数调用时所用的参数的内存区域。程序自动申请分配及释放。

堆是用来存储程序运行时的任意数据及对象的内存领域。需要程序员明确申请分配或释放。如果没有在程序中明确释放堆的内存空间,那么即使在处理完毕后,该内存空间仍会一直残留。这个现象称为 内存泄露?(memory leak)。

栈和堆需要的内存空间是在文件加载到内存后开始运行时得到分配的。因而,内存中的程序,就是由用于变量的内存空间、用于函数的内存空间、用于栈的内存空间、用于堆的内存空间这 4 部分构成的。

栈及堆的相似之处在于,他们的内存空间都是在程序运行时得到申请分配的。

垃圾回收机制(garbage collection)指的是对处理完毕后不再需要的堆内存空间的数据和对象进行清理,释放它们所使用的内存空间。这里把不需要的数据比喻为了垃圾。

汇编语言的语法是“操作码 + 操作数”

操作码表示的是指令动作,操作数表示的是指令对象。作为指令对象的内存地址及寄存器称为“操作数”(operand)。

福利

关注“臭大佬”公众号,回复“程序是怎么跑起来的”,获取完整版PDF,快来一起学习吧!