信息就是位+上下文

源代码就是由0,1 著称的位序列(8 个比特称之为字节)
程序的编码都是ASCII 标准表示文本字符
可以理解英语和汉字等各种语言组成的文件叫做文本文件,所有其他的文件称之为二进制文件。

程序被编辑成二进制文件的顺序

源程序文本(文本)->修改了后的源程序文本(文本)->汇编程序(文本)->可重定向目标程序(二进制)->可执行文件(二进制)

预处理器->编译器->汇编器->链接器
c语言的编译是这样的,包括大多数编译型语言也是这样的。

shell

启用这个会有着一个单独的shell进程,当你在shell进程里面输入命令时的执行顺序是:

检测是否是保存的命令->是则运行储存命令有的效果->不是则运行目录导引的可执行文件,没有可执行文件则报错。
shell和linux天然能够直接运行二进制文件。
输入命令后先将程序运行写在寄存器上然后才是内存中

内存和高速缓存

程序运行时会将先加载在内存然后才是寄存器。
运行开销 磁盘>主存>寄存器

各种储存硬件执行的速度比较:
寄存器>高速缓存1>高速缓存2>高速缓存3->内存->磁盘->网络储存。
每一种速度的区别极大,但相对的造价也是越来越高。

进程,线程,超线程

电脑给每个人一种错觉,每次运行只会有着一个进程。

上下文切换:进程的控制权期间的过程就是上下文切换。

一个进程有着多个线程,线程比进程更加高效,而协程(go程序层面提出的概念)比进程高效。

超线程指得是线程的并发。

虚拟内存

虚拟内存是给进程的一种错觉,给了每一个进程都在独占主存的错觉,每个进程看到的虚拟内存都是一样的,叫做虚拟内存地址空间。

在许多语言中将范围内常用数字都设置了固定的虚拟地址空间地址

ps:每一个变量都会随机分配新的虚拟内存地址。

最后修改:2021 年 09 月 14 日
如果觉得我的文章对你有用,请随意赞赏