程序时从一个源程序开始的,通过编译器创建并保存的文本文件,源程序由0和1组成的位序列
用ASCII来表示文本字符,用单一的单字节来表示每个字符
每个文本行都有一个看不见的
,对应整数值等于10
高级语言->低级语言指令->按可执行时目标程序打包->以二进制形式存放
预处理器:把头文件中.h读取插入文本文件中,新的文件以.i命名结束
编译器:将文本文件.i翻译成.s
汇编器:将.s翻译成机器语言,结果保存在.o中
链接器:处理合并,将所调用的库进行链接
从源文件到目标文件转化: gcc -o hello hello.c
编译成可执行目录文件后运行
shell是一个命令行解释器,命令行的第一个单词不是内置的shell命令,shell会假设这是一个可执行文件的名字,它将加载并运行这个文件
系统花费大量时间把信息从一个地方挪到另一个地方,一个主要目标是使这些复制操作尽可能快地完成
操作系统作用:防止硬件被应用程序滥用
向应用程序提供统一的接口,来控制低级硬件设备
Amdahl定律:要想显著加速整个许霆,需提升在这个系统中占据时间比重大的那部分的加速程度
对占据时间比重大的进行加速,提升其加速程度,会明显
对占据时间比重小的模块加速,对整个系统而言,不明显
并发:同时具有多个活动的系统——同时有多个程序执行
并行:用并发来使一个系统运行得更快
传统意义上得并发:使模拟出来得,在执行得进程间快速切换
文件:是对I/O设备得抽象
虚拟内存:是对程序存储器的抽象
进程:对正在运行的程序的抽象
虚拟机:对整个计算机的抽象
计算机内部的信息被表示成一组组的位,依据上下文有不同的解释
整数表示使精确的,浮点数是近似的
使用8位(一个字节)作为最小的可寻址内存单元
内存的每个字节由一个唯一的数字来标识,称为地址
字长决定虚拟地址空间的最大大小,字长位w位的机器,虚拟地址范围2的w次-1
32位程序或64位程序,区别在于该程序如何编译,而不是其运行机器的类型
int32_t 4字节 int64_t 8字节 这两个不随编译器和机器设置而变化
typedef :是声明一个类型名
typedef int* int_pointer ;//将int_point定义位一个指向int的指针
int_pointer ip; 和int *ip;两者相等
&x:创建一个指向保存变量x的位置的指针,指针类型取决于x的类型
强制类型转换:不改变真实的指针,告诉编译器以新的数据类型看待被指向的数据
程序仅仅知识字节序列,机器没用关于原始源程序的任何信息