计算机系统读书笔记(1)系统组成—冯诺依曼体系

基本认识: 
   计算机:接受用户的指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。广义上讲:我们周边有好多宽泛概念上的计算机,如加减乘除计算机,手机, GPS, ATM等等。
计算机五大单元:
   输出单元:包括键盘,鼠标,扫描仪,读写板等。中央处理器(CPU):含有算术逻辑,控制,记忆等单元。输出单元:显?器,打印机。

经典冯诺依曼体系:

注意:这里存储器指内存CPU读取的数据都是从内存中来的, CPU处理完成的数据,必须要先写回内存,,最后数据才从内存传输到输出单元(忽略缓存)。
系统硬件组成
为了解程序运行时发生了什么,我们需要对典型系统的硬件组成有所了解。

主要由:总线、I/O 设备、主存、处理器组成

1 . 总线
   贯穿整个系统的是一组电子管道, 称做总线, 它携带信息字节并负责在各个部件间传递。 通常总线被设计成传送定长的字节块, 也就是字( word)。 字中的字节数(即字长) 是一个基本的系统参数, 在各个系统中的情况都不尽相同。 现在的大多数机器字长有的是 4 个字节( 32 位), 有的是 8 个字节( 64 位)。
2. I/O 设备
   输入 / 输出( I/O) 设备是系统与外部世界的联系通道。 我们的示例系统包括 4 个 I/O 设备 :作为用户输入的键盘和鼠标, 作为用户输出的显示器, 以及用于长期存储数据和程序的磁盘驱动器(简单地说就是磁盘)。每个 I/O 设备都通过一个控制 器或适配器与 I/O 总线相连。 控制器和适配器之间的区别主要在于它们的封装方式。 控制器是置于 I/O 设备本身的或者系统的主印制电路板( 通常称为主板)上的芯片组, 而适配器则是一块插在主板插槽上的卡。 无论如何, 它们的功能都是在 I/O 总线和I/O 设备之间传递信息。
3. 主存
   主存是一个临时存储设备, 在处理器执行程序时, 用来存放程序和程序处理的数据。 从物理上来说, 主存是由一组动态随机存取存储器( DRAM) 芯片组成的。 从逻辑上来说, 存储器是一个线性的字节数组, 每个字节都有其唯一的地址(即数组索引 ), 这些地址是从零开始的。 一般来说, 组成程序的每条机器指令都由不同数量的字节构成。 与 C 程序变量相对应的数据项的大小是根据类型变化的。
4. 处理器
   中央处理单元( CPU), 简称处理器, 是解释( 或执行) 存储在主存中指令的引擎。 处理器的核心是一个字长的存储设备(或寄存器), 称为程序计数器( PC)。 在任何时刻, PC 都指向主存中的某条机器语言指令(即含有该条指令的地址)。从系统通电开始, 直到系统断电, 处理器一直在不断地执行程序计数器指向的指令, 再更新程序计数器, 使其指向下一条指令。 
    处理器从程序计数器( PC) 指向的存储器处读取指令, 解释指令中的位, 执行该指令指示的简单操作, 然后更新 PC, 使其指向下一条指令, 而这条指令并不一定与存储器中刚刚执行的指令相邻。
   这样的简单操作并不多, 而且操作是围绕着主存、 寄存器文件( register file) 和算术 / 逻辑单元( ALU) 进行的。 寄存器文件是一个小的存储设备, 由一些 1 字长的寄存器组成, 每个寄存器都有唯一的名字。 ALU 计算新的数据和地址值。 
   下面列举一些简单操作的例子, CPU 在指令的要求下可能会执行以下操作 :
? 加载 : 把一个字节或者一个字从主存复制到寄存器, 以覆盖寄存器原来的内容。
? 存储 : 把一个字节或者一个字从寄存器复制到主存的某个位置, 以覆盖这个位置上原来的内容。
? 操作 : 把两个寄存器的内容复制到 ALU, ALU 对这两个字做算术操作, 并将结果存放到一个寄存器中, 以覆盖该寄存器中原来的内容。
? 跳转 : 从指令本身中抽取一个字, 并将这个字复制到程序计数器( PC) 中, 以覆盖 PC 中原来的值。
简单了解系统的硬件组成和操作之后, 来看看程序运行时到底发生了些什么(忽略细节)。
   初始时, 外壳程序执行它的指令, 等待我们输入一个命令。 当我们在键盘上输入字符串“. /hello” 后, 外壳程序将字符逐一读入寄存器, 再把它存放到存储器中,当我们在键盘上敲回车键时, 外壳程序就知道我们已经结束了命令的输入。 然后外壳执行一系列指令来加载可执行的 hello 文件, 将 hello 目 标文件中的代码和数据从磁盘复制到主存。数据包括最终会被输出的字符串“hello, world\n”。利用直接存储器存取( DMA) 的技术, 数据可以不通过处理器而直接从磁盘到达主存。一旦目标文件hello中 的代码和数据被加载到 主存, 处理器就开始执行 hello 程序的main 程序中的机器语言指令。 这些指令将“hello, world\n” 字符串中的字节从主存复制到寄存器文件, 再从寄存器文件中复制到显示设备, 最终显示在屏幕上。

时间: 2024-10-06 12:14:58

计算机系统读书笔记(1)系统组成—冯诺依曼体系的相关文章

深入理解计算机系统读书笔记一 ---> 计算机基础漫游

一.程序编译的不同阶段. 通常我们是以高级程序开发易于阅读的代码,我们通过语法规则推断代码的具体含义.但是计算机执行代码的时候就需要把代码解析成既定的可执行问题,计算机是如何处理的呢?这里以C语言hello.c文件为例来说明中间过程. #include <stdio.h> int main() { printf("hello world!\n"); } 先上张图. C语言源程序----预处理解析头文件和函数  --- 编译器解析成汇编语言 ---   翻译机器语言指令,打包

3D数学读书笔记——笛卡尔坐标系统

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学是一门和计算机几何相关的学科,计算几何则是研究用数值方法解决几何问题的学科.3D数学讲解如何在3D空间中精确度量位置.距离和角度. 2.在3D数学里使用最广泛的度量体系是笛卡尔坐标系统.(笛卡尔数学由法国数学家Rene Descartes发明,并以他的名字命名) 3.关于数的类型:实数包含有理数和无

深入理解计算机系统-读书笔记

第一章:计算机系统漫游 编译过程: 预处理阶段:预处理器根据字符#开头的命令,修改原始的c程序: 编译阶段:编译器将ascii文本文件翻译成汇编语言程序: 汇编阶段:汇编器将汇编语言程序翻译成机器指令,分为32位和64位系统机器语言指令,将这些指令打包成可重定位目标程序: 连接阶段:将一些所需的单独编译好的目标文件合并到可重定位目标程序中,得到一个可执行目标文件. 总线:贯穿整个系统的一组电子管道,携带信息字节并负责在各个部件间传递,通常总线被设计成传送特定长的字节块,就是字,字中的字节数(字长

深入理解计算机系统读书笔记之第一章:漫游

我是从豆瓣上看到好多人都在推荐这本书,于是就去借来读一读,昨天晚上用了好长时间来读这本书的第一章节,感觉这本书比较符合我(有些基础还不太明白,这本书详细的进行了讲解,很好). 下面写一下我的理解(顺便回顾一下知识) 第一节主要讲的是: A Tour of Computer Systems 以hello.c为例进行讲解,介绍这个程序如何从一个源程序变成可执行程序,再到执行,显示屏上出现“hello,world” ···········································

《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)

1.UNIX系统口令文件包括了下图所看到的的各字段,这些字段包括在<pwd.h>中定义的passwd结构体中 POSIX定义了两个获取口令文件项的函数. 在给出用户登录名或用户ID后.这两个函数就能查看相关项. #include <pwd.h> struct passwd *getpwuid(uid_t uid); struct passwd *getpwnam(const char *name); 假设想要查看整个口令文件,则要用到以下三个函数: #include <pwd

深入理解计算机系统读书笔记之第二章信息的表示和处理

这一章读完,嗯,感觉怎么说呢? 就是读完了而已,没有想第一章那样,有具体的一些收获什么的.可能是没有很认真的阅读.读的很匆忙,有的内容很晦涩难懂............ 不管怎样还是在写一写自己的收获吧 这一章讲的是信息的表示和处理, 信息在系统中是怎样表示的呢?就是以字节来进行存储.信息就是位+上下文(第一章里面讲的) 具体的信息是怎样表示的? 带符号整数,不带符号整数,浮点数,等等. 1位运算 移位,向右移位 x>>k 分为两种形式 (1)逻辑上,向右移位就是在左端添加k个零[an-1,a

《深入理解计算机系统》 Chapter 7 读书笔记

<深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 一.编译器驱动程序 大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 1.将示例程序从ASCⅡ码源文件翻译成可执行目标文件的步骤 (1)运

20150206读书笔记&lt;深入理解计算机系统&gt;

●第一章 C是系统级编程的首选.C++显示支持抽象,属于应用级程序设计语言. 简单例子: 一个典型系统的硬件组成: 存储器的层次结构: 注:存储器层次结构的设计思想是,该层存储器作为下一层存储器的高速缓存 总结:计算机系统的一个重大主题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性.  操作系统内核是应用程序和硬件之间的媒介.提供3个基本的抽象: (1)文件是对I/O设备的抽象 (2)虚拟存储器是对主存和磁盘的抽象 (3)进程是对处理器,I/O设备和主存的抽象. 虚拟机是对整个计算机(操作系

第七章读书笔记《深入理解计算机系统》

第七章 读书笔记<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 1.大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器