您的位置:首页 > 理论基础

CSAPP——1.计算机系统的漫游

2017-02-24 00:14 369 查看
首先,存储与计算机上的信息都是位,计算机通过上下文判断存储信息的类型(文本文件、二进制文件)

1.C程序格式的流转

0 hello.c 通过预处理器(cpp)增加头文件后得到hello.i

0 hello.i通过编译器编译(ccl)得到hello.s(汇编程序)

0 hello.s通过汇编器(as)得到hello.o(二进制 可重定位目标程序)

0 hello.o与其他(如printf.o)通过链接器(ld) 得到hello(可执行目标程序 二进制)

其次,系统的硬件组成(总线、I/O设备、主存、处理器)

0 总线:贯穿整个系统的一组电子管道,携带信息字节并负责各个部件间的传递

0 I/O设备:系统与外部世界的联系通道,磁盘、鼠标…

——都通过一个控制器(I/O设备本身或主板上的芯片组)或适配器(一块插再主板插槽的卡)与I/O总线相连

0 内存:存放程序和程序处理的数据,由一组动态随机存取存储器(DRAM)组成

0 处理器:CPU,解释(或执行)存储在主存中指令的引擎。

——其核心是大小为一个字的存储设备(或寄存器),称为程序计数器(PC)——指向主存中的某条指令

——操作主要围绕主存、寄存器文件、算术/逻辑单元(ALU)。加载、存储、操作、跳转

——处理器的指令集构架:每条机器代码指令的效果

——处理器的微体系结构:处理器实际如何实现

2.运行hello

0 shell程序执行他的指令,等待我们输入命令,我们输入”./hello”,shell将字符逐一读入寄存器,再放于内存

——键盘->I/O桥->I/O总线->I/O桥->总线->寄存器->总线->I/O桥->内存总线->主存储器

0 hello目标文件从

——通过直接存储器存取(DMA)不通过CPU:键盘->I/O总线->I/O桥->内存总线->主存储器

0 CPU开始执行hello程序的main程序中的机器语言指令

——”hello,world\n”从主存->…->寄存器->总线接口->I/O桥->I/O总线->图形适配器->显示器

由此可见,系统花费了大量的时间来移动信息,为使移动更快,增加了高速缓存存储器,L1、L2高速缓存是用一种静态随机访问存储器(SRAM)的硬件技术实现,增大访问速度的原因是利用局部性原理,保存最容易要用的东西再告诉缓存中。

——存储设备形成层次结构(如寄存器->L1高速缓存(SRAM)->L2高速缓存->L3高速缓存->主存(DRAM)->本地磁盘->远程二级存储)

3.hello程序输出自己的信息,hello程序本身没有直接访问显示器等,他是依靠操作系统提供的服务。

操作系统的两个基本功能:1、防止硬件被失控的程序滥用 2、向应用程序提供简单一致的接口,便于控制硬件

0 实现:3个基本的抽象:文件(I/O的抽象)、虚拟内存(I/O和主存的抽象)、进程(处理器和主存I/O的抽象)

——进程:操作系统对一个正在运行的程序的抽象(操作系统实现并发运行的机制称为上下文切换(内核代码))

——0 线程:进程由多个称为线程的执行单元组成

——虚拟内存:给每个进程一个独占地使用主存的假象(程序代码和数据、堆、共享库、栈、内核虚拟内存)

——文件: I/O设备都可以看成文件,所有的输入输出都可看成文件的读写(网络通信)

Amdahi定律:加速比S=T(old)/T(new)=1/((1-α)+α/k) (α是提升部位所占比例,k是此部位提升比例(加速比))

并发:一个同时具有多个活动的系统 并行:用并发来使一个系统运行得更快

0 1.线程级并发:1个进程执行多个控制流,再比如intel i7每个核可执行两个线程,所以4核系统可并行执行8个线程

0 2.指令级并行:现代处理器可同时处理多条指令

0 3.单指令、多数据并行:允许一条指令产生多个可执行的操作,SIMD并行

最后增加一个抽象:虚拟机:对整个计算机的抽象,包括操作系统、处理器、程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CSAPP