CSAPP——计算机系统漫游

1.计算机系统漫游

1.1信息就是位+上下文

大部分计算机系统使用ASCII标准表示文本字符,实际上就是用一个唯一的单字节大小的整数值表示每个字符。
只由ASCII字符构成的文件称为文本文件,其余都是二进制文件。
区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文,不同上下文中同样的字节序列可能表示int、float、string等

1.2程序被其他程序翻译成不同格式

.c可以被读懂,但是系统要运行必须被转换为低级机器语言指令,再打包为可执行目标程序格式。
编译系统:
1.预处理阶段:预处理器cpp根据#开头的命令读取头文件并直接插入程序文本中,得到另一个C程序.i
2.编译阶段:编译器ccl将.i翻译为.s,包含一个汇编语言程序,每条语句都以一种文本格式描述一条低级机器语言指令。可以为不同高级语言的不同编译器提供通用输出语言。
3.汇编阶段:汇编器as将.s翻译成机器语言指令.o,打包成可重定位目标程序(二进制文件,乱码)
4.链接阶段:链接器ld将存在于printf.o的单独的预编译好的目标文件合并到自己的.o程序中,最后得到hello文件,可执行文件,可被加载到内存中,由系统执行

1.4处理器读并解释储存在内存中的指令

shell是一个命令行解释器,输出提示符等待一个命令行,如果命令行第一个单词不是内置命令,就会假设是一个可执行文件名字,就会加载并运行它。

1.4.1系统的硬件组成

总线:贯穿整个系统的一组电子管道。
I/O设备
主存:临时存储设备,用于存放程序和程序处理的数据
处理器(CPU):解释或执行储存在主存中指令的引擎,核心是大小为一个字的存储设备(寄存器),也就是程序计数器,cpu一直不断执行程序计数器指向的指令。

1.4.2运行hello

shell嘉庆字符逐一读入寄存器,再放到内存中,cpu执行main程序中的机器语言指令,这些指令字符串中的字节从主存复制到寄存器文件,再从寄存器文件复制到显示设备。

1.5高速缓存至关重要

较大存储设备运行慢,读取磁盘开销是读取主存的1000万倍,读取寄存器文件比读取主存块100倍。所以有了高速缓存cache,用于存放cpu近期可能会需要的信息

1.6存储设备形成层次结构

在cpu和大慢的设备(主存)之间插入小快(cache)可以提升速度,所以寄存器作为L1的高速缓存,L1作为L2的高速缓存…以此类推

1.7操作系统管理硬件

操作系统是应用程序和硬件之间插入的一层软件,所有应用程序对硬件的操作尝试都必须通过操作系统。
两个功能:1.防止硬件被是空号的应用程序滥用。2.想应用程序提供简单一致的机制控制复杂且不同的低级硬件设备。

1.7.1进程

对处理器、主存和I/O设备的抽象表示,是对一个正在运行的程序的一种抽象。
需要运行的进程数多于可以运行它们的CPU个数,所以并发执行多个进程是通过CPU在进程间切换来实现的,这种机制叫做上下文切换。
shell运行hello,shell调用系统调用将控制权传递给OS,OS保存shell进程上下文,穿件hello进程及其上下文,控制权转给hello,结束后恢复shell的上下文传回控制权。

1.7.2线程

一个进程=多个线程的执行单元,每个线程运行在进程的上下文中,共享同样的代码和全局数据,多线程比多进程更容易共享数据且高效。

1.7.3虚拟内存

为每个进程提供独占使用主存的假象,看到的内存是一致的,就是虚拟地址空间。分为以下一些自下而上的区,大小从下往上增大
1.程序代码和数据:指定大小
2.堆:随时动态扩展和收缩
3.共享库:放STL/数学库代码等
4.栈:位于顶部,用于实现函数调用,可以动态扩展 和收缩
5.内核虚拟内存:地址空间顶部为内核保留,不允许应用程序读写趋于内容或者直接调用内核代码定义的函数,必须调用内核来执行这些操作

1.7.4文件

文件就是字节序列,仅此而已,每个I/O设备、网络都可以看成文件,输入输出都通过使用系统调用函数读写文件来实现

1.9.1Amdahl定律

要想显著加速整个系统,必须提升全系统中相当大的部分的速度

1.9.2并发和并行

并发:指一个同时具有多个活动的系统
并行:指用并发来使一个系统运行得更快,并行可以在计算机系统的多个抽象层次上运用
按照系统层次结构中由高到低的顺序三个层次:
1.线程级并发:使用线程可以在一个进程中执行多个控制流。
2.指令级并行:现代CPU可以同时执行多条指令
3.单指令、多数据并行

1.9.3计算机系统中抽象的重要性

计算机系统一个重大主题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性。
虚拟机:体工队整个计算机的抽象画,包括操作系统、处理器和程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值