深入理解计算机系统第2版--读书笔记

第一章  计算机系统漫游
hello.c就是只由ASCII字符构成的文件称为文本文件,所有其他文件都称为二进制文件。
系统中所有的信息都是由一串位表示的,区分不同数据对象的唯一方法是读这些数据对象时的上下文。
hello.c通过GCC编译器翻译成一个可执行目标文件hello分四个阶段:
1、预处理阶段。预处理器(cpp) hello.i,被修改的源程序(文本)
2、编译阶段。编译器(ccl) hello.s,汇编程序(文本)
3、汇编阶段。汇编器(as) hello.o(二进制),字节编码为机器语言指令
4、链接阶段。链接器(ld)把包含库函数的目标文件和*.o合并成hello(二进制),是可执行目标文件。
虚拟地址空间分区(从最低的地址开始):
1、程序代码和数据
2、堆
3、共享库。空间中间部分存放像C标准库和数学库这样共享库的代码和数据的区域
4、栈。用户虚拟地址空间顶部为用户栈
5、内核虚拟存储器。地址空间顶部的区域为内核保留的。
文件是字节序列。I/O设备、网络都可以视为文件。
第一部分    程序结构和执行
第2章   信息的表示和处理

用ISO C99来编译程序prog.c:  unix> gcc -std=c99 prog.c
原文地址:https://www.cnblogs.com/zcwsmile/p/4027810.html