CSAPP:第1章 计算机系统漫游

2024-03-05 18:18

本文主要是介绍CSAPP:第1章 计算机系统漫游,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 1.1 information=bit+context
        • 1.2 程序翻译
        • 1.3 了解编译的好处
        • 1.4 CPU如何读取+解释命令
        • 1.5 讲述Cache的重要性
        • 1.6 存储设备的层次结构
        • 1.7 进程、线程、虚拟内存的概念
        • 1.8 系统之间网络通信
        • 1.9 重要主题
        • 1.10 小结

1.1 information=bit+context
  • 1.1主要传达的意思是所谓信息就是特定二进制(位)的排列组合(上下文),因此构成了不同的信息。
  • 另外,aside中提了一嘴C语言的起源,总的来说,C之所以可以成功,主要因为以下几个优势
    • C一开始就作为Unix的系统语言被开发出来的
    • C小、简单、易于移植
    • C是为实践目的设计的——other people found that they could write programs they wanted,也就是说C比较通用
1.2 程序翻译
  • 1.2 主要讲述程序编译过程

  • 围绕这一句命令开始讲述linux>gcc -o hello hello.c,主要分为四个步骤
    在这里插入图片描述

    • 1、预处理
      • hello.c–>hello.i
      • 主要工作是将# include 后<> 文件的内容插入到当前文件中,形成一个.i文件
    • 2、编译
      • hello.i–>hello.s
      • 这个工作是由编译器(CCL)完成的,其中hello.s是一个汇编程序
    • 3、汇编
      • hello.s–>hello.o
      • 这个工作是由汇编器(as) 完成的,其中hello.o是指令集文件(二进制文件,打开是乱码)
      • 这里需要注意一点的是,汇编是从汇编语言到机器指令,编译才是从高级语言到汇编语言
    • 4、链接
      • hello.o–>hello
      • 这个阶段是由链接器(ld)完成的,功能是将本文件和库函数(用到的)预编译的.o文件合并到一起,最终得到的是可执行文件(实际上还是二进制)
1.3 了解编译的好处
  • 优化程序新能(3、5、6)
  • 理解链接时出现的错误(7)
  • 避免安全漏洞(3)
1.4 CPU如何读取+解释命令
  • 主要讲了这么几件事
    • 1、描述shell执行的过程,这个就是命令行的机制,一般符合我们的直觉——即等待-〉输入-〉执行循环
    • 2、描述硬件的组成,这里是计算机的多总线(3总线)结构的模型,如下所示
      在这里插入图片描述
      • 3、如何运行Hello
        • 命令行读取与分析
        • 文件读取
        • 执行+显示
1.5 讲述Cache的重要性
  • 是常见的Cache-主存-辅存三级结构,不同的是,Cache分为三级Cache
1.6 存储设备的层次结构
  • 基本同1.5,放张图
    在这里插入图片描述
1.7 进程、线程、虚拟内存的概念
  • 1、进程

    • 进程是OS对一个正在运行程序的抽象
    • 进程转换有内核(kernel)管理的,内核不是一个独立的进程,而是系统管理全部进程所用代码和数据的集合。
  • 2、线程

    • 更容易共享数据(同一进程下)
    • 高效
  • 3、虚拟内存

    • 即虚拟地址空间——每个进程都独占主存的假象
      在这里插入图片描述
      • 程序代码数据
      • 堆——运行时堆,用于存放数据,类似malloc free是对此处操作
      • 共享库——放类似C语言标准库
      • 栈——用户栈,实现函数调用,动态伸缩
      • 内核虚拟内存——为内核保留
  • 4、文件=字节序列

1.8 系统之间网络通信
  • 介绍了telnet机制
    在这里插入图片描述
1.9 重要主题
  • Amdahl定律(有两道简单习题)
    在这里插入图片描述
    • 这个公式讲的是,加速(减速)后的时间= 部分原时间+部分加速后的时间,最后记一下加速比的公式是old/new即可
  • 并发和并行的概念(区分)
    • 所谓并发=同一段时间同时运行——单CPU进程/线程快速切换,看起来好像同时运行
    • 超线程——同时多线程,允许一个CPU同时控制多个流
    • 指令级并行
      • 多指流水线技术,其中现代的多为超标量流水线
    • 单指令、多数据并行(SIMD)
      • 运行一条指令产生多个可并行的操作
  • 抽象的重要性
1.10 小结
  • 上述总结

这篇关于CSAPP:第1章 计算机系统漫游的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/777390

相关文章

计算机系统之 大端法和小端法

记得四年前同事跟我说他入职的时候问了关于大小端的问题,记得三年前自己第一次接触大小端的问题,一晃这么多年过去了,自己在阅读的时候多次看到这个东西。有时候想想,如果这些书是我上学的时候看的,那现在的我是不是就不是这个样子了。亡羊补牢,但愿为时未晚。 某些机器选择在内存中按照从最低有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高有效字节到最低有效字节的顺序存储。前一种规则—最低有效字节在

hello程序的漫游历程

hello程序的运行过程 #include<stdio.h>int main(){printf("hello, world\n);return 0;} 相信大家都知道这个著名的家伙,hello world,万物起源。 本文的目的就是一起来看看,当这个hello程序在系统上运行时,系统发生了什么以及为什么会这样。 hello程序的生命周期是从一个源文件(源程序)开始的,文件名为hello

深入理解计算机系统 CSAPP 第七章 与静态库链接

//addvec.cint addcnt = 0;void addvec(int *x ,int *y,int *z,int n){int i;addcnt++;for(i=0;i<n;i++)z[i]=x[i]+y[i];} //multvec.cint multcnt = 0;void multvec(int *x ,int *y,int *z,int n){int i;mult

计算机系统基础实训六-ShellLab实验

实验目的与要求 1、让学生更加理解进程控制的概念和具体操作方法; 2、让学生更加理解信号的概念和具体使用方法; 3、让学生更加理解Unix shell程序的原理和实现方法; 实验原理与内容 shell是一种交互式的命令行解释器,能代表用户运行程序。shell反复打印一个提示符等待stdin上的命令行,然后按照命令行的内容执行命令,如下图所示: 命令行是由空格分隔的ASCII字符串。

计算机系统基础实训七-MallocLab实验

实验目的与要求 1、让学生理解动态内存分配的工作原理; 2、让学生应用指针、系统级编程的相关知识; 3、让学生应用各种动态内存分配器的实现方法; 实验原理与内容 (1)动态内存分配器基本原理 动态内存分配器维护着一个进程的虚拟内存区域,称为堆。分配器将堆视为一组不同大小的块的集合来维护,每个块就是一个连续的虚拟内存片,要么是已分配的,要么是空闲的。已分配的块显式地保留为供应用程序使用。

计算机系统基础(一)

1. 引入——从源程序到可执行文件 了解高级语言编写的代码在后台是如何被编译并运行的 首先我们会编写一段代码,例如 #include<stdio.h>int main(){printf("hello world!\n");return 0;} 并把它命名为hello.c文件 预处理阶段 接下来通过命令,得到hello.i gcc -E hello.c -o hello.i 该阶段

【计算机系统结构期末复习】第五章

系列文章 第一章 第二章 第三章 第四章 目录 系列文章1. 选择题1.1 解释下列术语1.2 地址映象方法有哪几种?它们各有什么优缺点?1.3 简述减小Cache失效开销的几种方法1.4 在“Cache—主存”层次中,主存的更新算法有哪两种?它们各有什么特点? 2. 计算题2.1 Cache性能分析2.2 例题2.2.1 例12.2.2 例22.2.3 例32.2.4 例4

【计算机系统结构期末复习】第三章

系列文章 第一章 第二章 目录 系列文章1. 选择题1.1 解释下列术语1.2 流水线技术的特点1.3 解决流水线瓶颈问题的常用方法 2. 计算题2.1 流水线的性能指标2.1.1 吞吐率2.1.2 加速比2.1.3 效率2.1.4 例题例1例2例3 2.2 向量处理机2.2.1 链接技术2.2.2 例12.2.3 例2 3. 综合题3.1 简述三种向量处理方式,它们对向量处理机

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一)

CSAPP《深入理解计算机系统》深读笔记4——第三章-程序的机器级表示(一) 你好我是拉依达,这是我秋招结束后更新的第一个系列。我将争取完成“ 年轻人,你渴望力量吗?”的全套深度笔记。 今天开始进行第一本CSAPP:深入理解计算机系统。 程序的机器级表示 编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。 GCC C语言编译器以汇编代码的形式

深入理解计算机系统 CSAPP 家庭作业6.35

第一步先求(S,E,B,m) 题目说共C=128个字节,块大小B为16个字节,那就是分为八组:0,1,2,3,4,5,6,7.然后每组存4个int 每个4字节 C=B*E*S .B=16 ,直接映射的E就是1,所以S=8 (S,E,B,m)=(8,1,16,7) C128M128s3b4t0 sizeof(int)==0100地址(二进制)COCIsrc[0][0]00000