深入理解计算机系统(一)——计算机系统漫游
深入理解计算机系统(一)——计算机系统漫游
1.信息就是位+上下文
(1)文件
文件:文本文件,二进制文件
(2)系统中信息都是由二进制信息表示的
包括文件,程序,数据……
2.程序被其它程序翻译成不同的格式
过程:C 低级语言指令(打包)可执行目标文件
编译系统:预处理器,编译器,汇编器,链接器、
预处理阶段:处理以#开头的内容
编译阶段:将.i程序翻译成汇编语言程序
汇编阶段:将.s翻译成机器语言指令
链接阶段:合并.o文件
3.了解编译系统如何工作是大有益处的
(1)优化程序性能
(2)理解链接时出现的错误
(3)避免安全漏洞
4.处理器读并解释储存在内存中的指令
(1)系统的硬件组成
①总线
携带信息在各个部件间传递
传送数据长度:字(word)4bits(32位),8bits(64位)
②I/O设备
鼠标,键盘,显示器,磁盘等等
通过控制器(主板上的芯片)配适器(转上的插槽上的卡)u与I/O总线相连
③主存
由动态随机存储器芯片组成
④处理器
(2)运行hello程序
shell 等待我们的命令,按字符逐一读取我们的命令并放入内存中,我们敲击回车键,以结束命令输入,shell执行hello文件,将代码和数据从磁盘复制到主存(可通过DMA直接存储器读取技术,不通过CPU直达主存),而后开始执行main程序中的机器语言指令
5.高速缓存至关重要
大量时间浪费在了信息移动上
复制操作尽快完成是系统设计者的目标
存储设备越大,运行速度越慢
处理器和主存间性能的差距逐渐增大
高速缓存,利用局部性原理,大大加快了访问速度
6.存储设备形成层次结构
上一级相当于下一级的高速缓存
7.操作系统管理硬件
所有应用程序对硬件的操作尝试都必须通过操作系统
操作系统的基本功能:(1)防止硬件被失控的应用程序滥用 (2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备
操作系统通过几个基本抽象概念实现这两个功能,即文件,虚拟内存,进程等
(1)进程
是对处理器、主存和I/O设备的抽象表示
假象 | 实际 |
---|---|
程序在独占硬件设备 | 同时多个进程在执行,共用硬件设备 |
处理器一条一条的执行程序中的指令 | 各个进程并发运行,指令交错执行 |
每个进程都在独占主存,看到的内存是一致的 | 虚拟内存空间 |
上下文切换:单处理器系统在同一时刻执行一个进程的代码,在操作系统转移控制权的时候,相应进程的上下文(PC,寄存器当前值,主存内容等等)交替保存、恢复,
例: shell hello shell
上下文切换过程是由内核(系统管理全部进程所用代码和数据结构的集合,而不是一个进程)执行的,内核指的是操作系统代码常驻主存的部分。
(2)线程
一个进程可由多个线程组成,相对进程高效,在有多处理器的条件下可以运行的更快
(3)虚拟内存
8.系统之间利用网络通信
系统间通过网络联系在一起
网络可视为一个I/O设备
9.重要主题
(1).Amdahl定律
对系统的某个部分加速,其对整个系统性能的影响取决于该部分的重要性和加速程度。
若系统执行某应用程序的时间为,某部分执行时间占比,该部分性能提升k ,可得
可以计算加速比为
(2)并发和并行
并发是指具有多个程序执行的系统
并行是指用并发以使一个系统运行的更快
①线程级并发
线程允许一个进程中有多个控制流并行进行
通过执行的进程快速切换实现
允许多个用户进行交互
多核处理器和超线程的出现使得多处理器系统普及
多核处理器(每个核有CPU L1 L2,共用L3)
超线程(允许一个CPU执行多个控制流 一些硬件有备份,CPU可在单周期快速决定执行哪一线程,CPU的资源得到更好的利用,无需因一个线程需要等待数据传送而造成时间的浪费)
②指令级并行
现代处理器可同时执行多条指令的属性称为指令集并行
流水线的使用
超标量处理器:比一个周期执行一条指令更快的处理器
③单指令、多数据并行
即SIMD并行
可利用自动抽取SIMD的编译器对C编译,但是更好的方法是使用编译器支持的特殊向量数据类型来写程序
(3)计算机系统抽象的重要性
指令集架构提供了对实际处理器的硬件抽象,看似是一次执行一条语句,实际底层实现更加复杂
学习操作系统时,有三种抽象
①文件:I/O设备的抽象
②虚拟内存:程序存储器的抽象
③进程:正在运行程序的抽象
另外再增加一个抽象:
④虚拟机:对整个计算机的抽象
10.小结
①计算机系统时由硬件和系统软件组成的
②信息是由一组组“bit”组成的,依据上下文有不同的解释方式
③程序被翻译成不同形式,开始是ASCII文本,然后被编译器和链接器翻译成可执行文件
④为解决数据传输的时间浪费,存储器分为不同层次结构
⑤操作系统提供三种基本抽象:进程,文件,虚拟内存
⑥网络提供了计算机系统之间的通信手段,可以看成一种I/O设备