2018-2019-1 20189215 《深入理解计算机系统》第一章

第一章 计算机系统漫游


主要内容

全面精炼的概括了本书的内容,也就是“计算机系统概述”,包括:

1.解释计算机系统中“信息”的概念:就是二进制位;

2.解释源程序(以C源程序为例)到可执行程序的过程:预处理 → 编译 → 汇编 → 链接

3.通过可执行程序被shell加载执行流程,讲解了计算机的硬件组成: 总线、I/O设备、主存、处理器。

4.高级缓存的作用以及计算机存储设备的体系结构——金字塔层次结构。

5.解释了操作系统、应用进程、计算机硬件三者之间的关系:操作系统管理硬件,为应用程序提供简单一致的机制来控制复杂而又大相径庭的硬件。

6.并发与并行、抽象。

1.1 信息就是位+上下文

系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。

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

Linux中.c文件编译过程即是如此,gcc命令的“ESc”对应生成文件的“iso”,具体过程如下:

gcc -E main.c -o main.i //预编译
gcc -S main.c -o main.s //生成汇编代码
gcc -c main.c -o main.o //-c为小写,生成目标文件
gcc main.o -o main      //生成可执行文件

1.3 了解编译系统如何工作是大有益处的

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

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

  • 系统的硬件组成

    总线、I/O设备、主存、处理器

  • hello world

    代码和数据加载到主存后,处理器开始执行hello程序的main函数,将hello world\n字符串中的字节从主存复制到寄存器文件,在从寄存器文件中复制到显示设备,最终显示在屏幕上。

1.5 高速缓存至关重要

cache memory(高速缓存存储器)及调页算法对程序性能有极大影响。

1.6 存储设备形成层次结构

金字塔结构

1.7 操作系统管理硬件

操作系统通过基本的抽象概念实现两个基本功能:

1.防止硬件被失控的硬件滥用

2.向应用程序提供简单一致的机制来控制复杂而又通常大小不相同的低级硬件设备。

  • 文件是对I/O设备的抽象表示。
  • 虚拟内存是对主存和磁盘I/O设备的抽象表示。
  • 进程是对处理器、主存和I/O设备的抽象表示。

1.8 系统之间利用网络通信

现代系统经常通过网络和其他系统连接到一起,网络可以视为一个I/O设备。

  • 使用telnet服务器在远程主机上运行hello程序

    1.用户在键盘上输入hello

    ——客户端向telnet服务器发送字符串“hello”服务器向shell发送字符串“hello”,shell运行hello程序并将输出发送给telnet服务器。

    2.telnet服务器向客户端发送输出的字符串“hello world\n”

    3.客户端在显示器上打印字符串“hello world\n”

1.9 重要主题

  • Amdahl定律

    加速比S = 1/{1-(α)+α/k},α是系统某部分执行所需时间与系统执行某应用程序所需时间的比例,这部分性能提升比例为k。

  • 并发和并行

    并发指同时间段:线程级并发指多处理器或超线程(同时多线程)

    并行指同一时刻:指令级并行指流水线或超标量处理器

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

    同1.7。

原文地址:https://www.cnblogs.com/jsjliyang/p/9826718.html

时间: 2024-11-14 02:15:28

2018-2019-1 20189215 《深入理解计算机系统》第一章的相关文章

深入理解计算机系统第一章

第一章 计算机系统漫游在unix系统中 从源文件到目标文件的转化室由编译器驱动程序完成的linux > gcc -o hello hello.c 编译得过程预处理器,编译器,汇编器,链接器 原文地址:https://www.cnblogs.com/DreamKill/p/12274999.html

CSAPP深入理解计算机系统第二章荟萃

1.可以利用数字的算数右移,然后利用0XFF这样的数字做掩码运算,可以获取到一个数字的符号位.计算机的移位运算有一种很重要的作用就是利用掩码运算去提取一个位模式的一段信息. 2.在C语言中的条件语句,以及三目的条件运算符,都可以用移位的方式来做. 3.在进行位扩展操作的时候,比较讲一个32位的有符号数扩展到64位,那么在保证原来的值不变的情况下,把31个低位扩展到64位的低位上,而最高的符号位扩展到高33位上. 4.利用位模式仅仅只能表示一些2的n次幂的一些浮点数,其他的比较特殊的有理数,会近似

深入理解计算机系统-第二章

疑惑: ***."十进制数字x的ASCII码正好是0x3x"(p31) ```.照上面这么说,十进制1的ASCII码该是0131,很明显错误的,找到一个ASCII码来看下"1"的ASCII码是"49", 再仔细参考下书中上下文,发现上面说了十进制1的ASCII码是31,那原句这么说"十进制数字_x的ASCII码正好是0x3_x"是不是更好理解点, 避免"x"的理解错误,你可能又会说,现在还是不对啊,现在1的

深入理解计算机系统 第二章 信息的表示和处理

欣哥划重点: @所有人, 第二章比较难,我建议至少掌握下面几个知识点: 1. 字节顺序 : 大端和小端 2. 运行 图2-24, 图2-25程序 show-bytes.c 观察结果,看看有什么问题 3. 理解布尔运算,位运算 4. 理解无符号数和有符号数, 给一个数,能计算出补码 5. 理解浮点数的表示法,给一个十进制小数,能转换成二进制的浮点数表示 原文地址:https://www.cnblogs.com/stone94/p/9824395.html

深入理解计算机系统 第二章 信息的表示和处理 part2

上一周遗留问题的解决 问题:原码.反码.补码是只针对有符号数吗?无符号数有没有这三种编码方式? 得到的答案:对于无符号数,原码.反码和补码是一致的 进一步,由于有符号数是以补码的形式存储在计算机中的,而无符号数三种编码都是一致的,所以我们可以说,整型数在计算机中是以补码的形式存在的. 参考文章: https://www.jianshu.com/p/ffc97c4d2306 浮点数 对于浮点数,看了刘大的文章<看完这篇文章,你肯定理解什么是浮点数了>之后,知道了两点 1.浮点数是如何存储的 2.

深入理解计算机系统第二章家庭作业

*2.91遵循位级浮点编码规则,实现具有如下原型的函数: /* Compute |f|. If f is NaN ,then return f. */ float_bits float_absval (float_bits f); 对于浮点数f,这个函数计算|f|.如果f是NaN,你的函数应该简单地返回f. 测试你的函数,对参数f可以取的所有2^32个值求值,将结果与你使用机器的浮点运算得到的结果相比较. 解题过程 ****2.95遵循位级浮点编码规则,实现具有如下原型的函数: /* Compu

深入理解计算机系统 第二章答案

http://rooftrellen.com/blog/computer-systems-a-programmers-perspective-chapter-2-homework-problem/

深入理解计算机系统 第二章要点

1.每台机器都有一个字长,指明了整数和指针的标称大小(normal size),长整数(long int)和指针的大小都是字长(32位机器是32位,64位机器是64位),字长代表了机器的寻址时地址大小,进而限定了寻址空间的大小,字长w的寻址范围是0-2的(w-1)次方,32位机上线是4G.除了和字长同步的类型(long int和指针)其他类型大小和机器无关,比如char,short,int4,long long int8, float4, double8在32位机器上对8字节的类型数据操作时,先

读《大道至简》-第一章之感想

上了一节JAVA课.课上,老师是从<大道至简>开始讲课的,虽然我之前没看过,但是大概知道了主要内容.但是,具体的问题我还真心的回答不上来.比如,愚公移山的分析,编程的根本.靠着自己的这一遍阅读和听着老师讲解才能理解了第一章.    我觉得愚公移山的故事,虽然可以告诉我们编程的过程和本质.但是总是觉得,人家分析的虽不能太过牵强,但是的确是套用的.其实,我们生活的每一件事都可以反映编程,也不一定要特别刻板的去找愚公移山的故事.生活中的每一件事都可以分为两个步骤,这两个步骤其实就是编程里的认识需求以