《深入理解计算机系统(第三版)》第一章

20179202杨晓桐 20179202杨晓桐     2022-10-02     123

关键词:

1.知识总结(主要对新知识)

(1)计算机提供不同层次的抽象表示,来隐藏实际实现的复杂性

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

(2)程序员必须知道编译系统是如何工作的原因:

  • 优化程序性能:知其原理,才可优化。
  • 理解连接时出现的错误
  • 避免安全漏洞:缓冲区溢出错误。

(3)运行hello程序

  • shell 上输入”./hello”后,回车,shell逐一读入字符串到寄存器,之后把字符串存入内存中
  • shell 加载hello程序从磁盘到内存(最开始hello是放在磁盘上的)
  • hello加载完毕后,CPU执行hello程序的main程序的机器指令。将主存中要打印的”hello, world\n”,从内存加载到寄存器,再从寄存器复制到显示设备,最终显示在屏幕上

(4)并发是一个通用的概念,指一个同时具有多个活动的系统;并行指的是用并发使一个系统运行的更快

(5)意识到高速缓存的存在,可以利用高速缓存将程序的性能提高一个数量级。

(6)虚拟内存为每个进程提供一个假象,即每个进程都在独占的使用主存。每个进程看到的是一致的存储器,称为虚拟地址空间。进程的虚拟地址空间从下往上(从小到大)依次放的是:

  • 程序代码和数据:对于所有的进程来说,代码是从同一固定地址开始,紧接着是C全局变量相对应的数据位置。
  • 运行时堆:代码和数据区是在进程一开始运行时就被规定了大小,而当调用如malloc和free这样的标准库函数时,堆可以在程序运行时动态的扩展和收缩。
  • 共享库:存储C标准库和数学库等的代码和数据。
  • 用户栈:实现函数调用。
  • 内核虚拟内存:不允许应用程序读写,或者直接调用内核代码定义的函数。

2.问题思考解决

缓冲区溢出错误如何造成免安全漏洞?

参考缓冲区溢出攻击原理分析,结合学习过的栈帧变化,知道了缓冲区溢出攻击会通过某种方式修改eip的值,让其指向恶意代码。当buf变量发生溢出时会往高地址空间覆盖,先是覆盖本函数的其它局部变量,然后是调用函数的ebp,再次是eip,最后是调用函数的栈空间。如果读取的文件内容覆盖掉eip,就可以修改程序的执行路径(传入一个超长的带有shellcode的字符缓冲,覆盖栈中的EIP值,这样当函数执行完成返回后就会返回到有shellcode的地方,执行恶意代码)。

《深入理解计算机系统》(第三版)读书疑问

问题:第一章helloworld是怎样工作的?预处理器、编译器、汇编器、链接器是怎样把.c的源程序分别修改为.i、.s.、.o的程序的?第二章反码和补码在作用上有什么区别?第三章直到型循环和当行循环有什么异同?第四章Y86指令集... 查看详情

速读《深入理解计算机系统(第三版)》问题及解决

第一章计算机漫游P13:用户栈和运行时堆有什么区别?数据结构中经常说堆栈,这里的堆和栈一样吗?和操作系统的堆、栈有什么区别?参考:堆和栈的区别(内存和数据结构)操作系统:栈:由操作系统自动分配释放,存放函数的... 查看详情

读书笔记《深入理解计算机系统》(第三版)概述

  《深入理解计算机系统》第三版刚出来不到一周,便买下了这本书;之所以阅读本书,一方面源于网友推荐以及豆瓣不错的评分、评价;另一方面是针对本人非科班出身,计算机系统相关的知识相对比较薄弱,很多情况下此... 查看详情

20179215《深入理解计算机系统(第三版)》第三章

《深入理解计算机系统》第三章程序的机器级表示学习读书笔记一、这章主要任务:?二、程序编码?计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重... 查看详情

《深入理解计算机系统(第三版)》第三章

3.1程序编码1.计算机系统使用了多种不同形式的抽象,对于机器级编程来说,两种抽象尤为重要:指令集体系结构(ISA):定义了处理器状态、指令的格式,以及每条指令对状态的影响机器级程序使用的存储器地址是虚拟地址:提... 查看详情

《深入理解计算机系统(第三版)》第二章信息的表示和处理

《深入理解计算机系统(第三版)》第二章信息的表示和处理??计算机本身是由处理器和存储器子通过系统组成。在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值。然后,我们考虑机器级指令如何... 查看详情

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

第一章计算机系统漫游在unix系统中从源文件到目标文件的转化室由编译器驱动程序完成的linux>gcc-ohellohello.c编译得过程预处理器,编译器,汇编器,链接器           查看详情

2017-2018-120179215《深入理解计算机操作系统》第一章

《深入理解计算机操作系统》第一章?这一章主要是让我们对计算机系统有个整体的了解,系统介于软件与硬件之间,通过软件与硬件的相互交互来运行应用程序.而每个环节又分为各种层次,从而更好的提供上层抽象。理解一个系... 查看详情

《深入理解计算机系统(原书第三版)》pdf

下载地址:网盘下载 内容简介  · · · · · ·和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下:基于x86-64,大量地重写代码,首次介绍对处理浮... 查看详情

《深入理解计算机系统(第三版)》第四章

4.1Y86-64指令集体系结构1.指令体系结构:处理器支持的指令和指令的字节级编码。2.与X86-64相比,Y86-64指令集的数据类型、指令和寻址方式要少一些,字节级编码也比较简单,机器代码没有Y86-64紧凑,虽简单但足够完整。3.定义一... 查看详情

《深入理解计算机系统(第三版)》第二章

...为地址,所有可能地址的集合称为虚拟地址空间。2.每台计算机都有一个字长,指明指针数据的标称大小。32位程序和64位程序区别在于该程序如何编译,而不是其运行的机器类型。C语言各种数据类型分配的字节数如下:int32_t和i... 查看详情

《深入理解计算机系统》第一章计算机系统漫游

《深入理解计算机系统》第一章计算机系统漫游1、本章从一个程序的生命周期讲起,分别对程序的创建、编译、执行、输出、终止进行了详细的解读,从中引出了关于信息上下文、编译系统、高速缓存、操作系统等重要概念。... 查看详情

学习《深入理解计算机系统》第一章摘要

                                 &n 查看详情

《深入理解计算机系统(原书第三版)》pdf+python经典书籍两本

神书一样的存在,其中很多知识面试常考百度网盘链接:https://pan.baidu.com/s/1jTVO_KF-U4zJ_2RByuFmmw提取码:jpky  内容简介  · · · · · ·和第2版相比,本版内容上*大 查看详情

2018-2019-120189215《深入理解计算机系统》第一章(代码片段)

第一章计算机系统漫游主要内容全面精炼的概括了本书的内容,也就是“计算机系统概述”,包括:1.解释计算机系统中“信息”的概念:就是二进制位;2.解释源程序(以C源程序为例)到可执行程序的过程:预处理→编译→汇... 查看详情

《深入理解java虚拟机-jvm高级特性与最佳实践(第三版)》阅读笔记

《深入理解Java虚拟机》阅读笔记本repository为《深入理解Java虚拟机-Jvm高级特性与最佳实践(第三版)》阅读笔记,因为第一章主要讲的是Java的发展历史,这里就不做笔记,直接从第2章的"Java内存区域与内... 查看详情

求《深入理解计算机系统(第三版)》的pdf中文版

第三版更新了最新到X86-64位,各个章节更加容易阅读和理解,中文第三版可以参考:https://zhidao.baidu.com/question/139032425214224925.html?fr=iks&word=%CE%D2%C2%F2%C1%CB%D2%BB%B1%BE%D6%BD%D6%CA%B5%C4%A1%B6%C9%EE%C8%EB%C0%ED%BD%E2%BC%C6%CB%E3%BB%FA%CF%B5%CD%B3%A1%B7%B5%D... 查看详情

《深入理解计算机系统》第一章学习笔记

信息就是位+上下文源程序:就是一个由0和1组合的位(bit)序列,8位组成一字(byte),每个字节表示某个文本字符。系统中所有的信息——包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传送的数据,都... 查看详情