csapp读书笔记1-计算机系统漫游

数据信息

hello.c算法

#include <stdio.h>

int main()
{
    printf("hello,world\n");
    return 0;
}

文件若是只含有ascii字符,那么就是文本文件,若是包含其余字符,就是二进制文件shell

编译

hello.c通过四个步骤,生成hello可执行文件缓存

  • 预处理:读取源文件hello.c,识别#include<stdio.h>的头文件内容,插入源文件,生成hello.i
  • 编译:将hello.i翻译生成汇编代码hello.s
  • 汇编:将hello.o翻译生成机器语言文件hello.o
  • 连接:hello程序调用了printf,这个函数已经存放在预编译的文件printf.o中,连接步骤就是用来将这个函数整合到hello.o中,最后生成hello文件。该文件能够被操做系统执行

了解编译系统的好处

  • 优化程序性能
  • 理解连接时出现的错误
  • 避免安全漏洞

计算机硬件组成

  • 总线:贯穿硬件系统的一组电子通道,在各个部件之间传输字节。字节数据以字(word)为单位传输,现代计算机都是字长都是4字节或者8字节。有IO总线、系统总线、内存总线
  • IO设备:系统与外部联系的通道,每一个IO设备经过控制器或适配器与IO总线想连。图中包含四个IO设备:鼠标、键盘、显示器、硬盘
  • 主存:由一组动态随机访问存储器(DRAM)组成,用来存取数据
  • 处理器:读取执行存储在主存中的指令。包含:程序计数器(PC),用来存储内存中某条指令地址;寄存器文件,存储少许数据;算法/逻辑单元(ALU),用来作简单计算

hello执行流程

首先,当输入"./hello"时,shell读取输入字符到寄存器,而后放入主内存安全

接着,当输入回车时,shell查找硬盘上的hello文件,加载进主内存网络

最后,cpu读取hello程序中main函数的机器指令并执行。示例指令中,会从主存拷贝"hello,world\n"字符串的字节到寄存器文件,再从寄存器文件拷贝到显示设备,最终显示在屏幕并发

高速缓存

hello程序执行步骤存在大量从内存到寄存器之间的拷贝操做。相比较寄存器,在内存操做数据会慢不少,大量拷贝操做存在于两端时,会致使内存端成为瓶颈。为了打破瓶颈提升性能,系统设计者提出了高速缓存的概念。它位于寄存器和主存之间。当缓存大量命中时,可减小cpu对主存数据的依赖。函数

考虑两个高速缓存的状况:寄存器-L1-L2-主存性能

L1和L2经过静态随机访问存储器(SRAM)硬件技术实现,L1位于处理器芯片,访问速度媲美寄存器,L2经过特殊总线链接处理器,速度为L1的5倍,主存在最后,访问速度为L2的5-10倍优化

存储器层次结构

操做系统管理硬件

  • 进程:软件上说是操做系统对正在运行的程序的抽象,硬件上说是操做系统对处理器、主存、IO设备的抽象,利用主存和IO设备存储进程的指令和数据,利用处理器切换执行多进程
  • 线程:在进程内,共享内存和数据,更加轻量级
  • 虚拟内存:操做系统对主存和IO设备的抽象,利用主存和IO设备存储虚拟内存的数据
  • 文件:操做系统对IO设备的抽象,操做文件就是操做各个IO设备

网络

网络也是一个IO设备。系统将数据从主存拷贝到网络适配器,通过网络,目的机器的系统读取网络适配器上的数据,拷贝到主存。这样就完成了数据在网络间的传输操作系统

并发与并行

现代计算机发展的两个目标:计算机作的更多,计算机运行更快。前者也就是并发,后者也就是并行,这两个关键字在现代计算机的体现以下

  • 线程级并发:一个进程中有多个控制流,采用多核处理器,可使同时执行这些控制流,以加快程序运行速度
  • 指令级并行:现代处理器能够在一个周期处理多条指令
  • 单指令、多数据并行(SIMD并行):将一条指令拆成多条,并行执行

图示为四核处理器,每一个核都有本身的寄存器、L1高速缓存(分为数据、指令)、L2高速缓存,四个核在一个芯片上,共享一个L3高速缓存,全部处理器芯片共享一个主存

抽象

总结

源程序以ascii文本形式存储,被编译器和连接器翻译成可执行的二进制文件。

处理器读取并处理二进制程序中的指令和数据时,会花费大量时间在寄存器、主存、IO设备之间拷贝数据。为了加速该过程,系统引入高速缓存,将系统分为cpu寄存器-高速缓存-主存-硬盘的多层结构。

操做系统内核做为应用程序和硬件之间的媒介,提供了一层抽象。

  • 文件:对IO设备的抽象
  • 虚拟内存:对主存和IO设备的抽象
  • 进程:对处理器、主存、IO设备的抽象

虚拟机又提供了基于操做系统、处理器、主存、IO设备的抽象

网络做为一种特殊的IO设备,提供了计算机系统之间通讯的能力

相关文章
相关标签/搜索