计算机系统都有类似的硬件和系统软件组件组成的,他们共同工做来运行应用程序.做为一名程序猿但愿深刻了解这些组件是如何工做的以及这些组件是如何影响程序的正确性和性能的,以此提升自身技能.彻底的理解了这本书内容,那么咱们会步上‘大牛’的道路.这是这本书说的,认真学习作笔记,但愿本身也能成为大牛.linux
#include <stdio.h>
int main ()
{
printf("hello,world\n");
return 0;
}
复制代码
这个程序的执行的生命周期: 源文件(源程序) -> 编辑器 -> 保存文本文件缓存
hello程序的生命周期是从一个高级C语言程序开始的,由于这种形式可以被人读懂.然而,为了在系统上运行hello.c程序,每一个C语句都必须被其余程序转化为一系列的低级机器语言指令.而后这些指令按照一种称为可执行目标程序的格式打好包,并以二进制磁盘文件形式存放起来.目标程序也称为可执行目标文件.安全
在unix系统中,从源文件到目标文件过程是由编译器驱动程序完成的:bash
linux > gcc -o hello hello.c
复制代码
编译系统的构成: 预处理器、编译器、汇编器和连接器网络
源程序:是一个由0和1组成的位(又称为比特)序列,8个位被组成一组,称位字节.每一个字节表示程序中的某些文本字符(大部分的现代计算机系统都使用ASCII标准来表示文本字符) 并发
* 优化程序性能
* 理解连接时出现错误
* 避免安全漏洞
复制代码
代码执行到显示过程编辑器
目标文件代码和数据被加载到主存,处理器执行机器语言指令,将对应的字符串的字节从主存复制到寄存器文件,再从寄存器文件复制到显示设备,最后显示再屏幕上.性能
咱们知道这个hello.c程序的机器指令最初是存放再磁盘上,当程序加载时,他们被复制到主存;当处理器运行程序时,指令又从主存复制带处理器.类似地,数据串"hello,world\n" 开始时再磁盘上,而后被复制到主存,最后从主存上复制到显示设备.从这个角度来看,这些复制就是开销,减慢了程序“真正”的工做.所以,系统设计者的一个主要目标就是使这些复制操做尽量快地完成.学习
根据机械原理,较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低俗设备. 优化
定义: 处理器与主存之间读取速度差别.系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称为cache或高速缓存)
不只能够运用高速缓存提升性能,同时也能够利用存储器层次结构的理解来提升程序性能
虚拟内容是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示.
并发:指一个同时具备多个活动的系统; 并行:用来使一个系统运行更快
网络提供了计算机系统之间通讯的手段.从特殊系统的角度来看,网络就是一种I/O设备.