csapp第一章计算机系统漫游

1.1 信息就是位+上下文
  • 信息的两大要素:位 、上下文

    例如:

    • 在一串数字中,0x90表示154

    • 在一串机器码中,0x90表示nop指令

    • 在 一串字符串中,0x90表示一个特殊的字符

1.2 一个c程序的编译流程

请添加图片描述

  • 注:存在两种汇编语法:intel汇编和AT&T汇编,其中intel汇编主要是windows、dos系统使用 而AT&T汇编主要是unix、linux、macos系统使用。csapp中的汇编程序采用的是后者AT&T汇编
1.3 了解编译系统的好处
  • 优化程序性能,比如switch语句是否总是比if-else语句高效吗?指针引用比数组索引更有效吗?
  • 理解链接时发生的错误 比如:静态变量与全局变量的区别,静态库与动态库的区别
  • 避免安全漏洞
1.4 处理器读和解释内存中命令的原理
  • 系统的硬件组成
    • 总线:携带信息字节在各部件中传输
    • I/O设备:系统与外界联系的通道
    • 主存:用一组dram组成,用来存放程序以及程序运行中的数据
    • 处理器:解释执行指令的引擎
1.5 高速缓存
  • 引入:处理器与主存之间的速度差异

  • 存储器的层次结构图

请添加图片描述

1.6 操作系统中的抽象
  • 文件是对io设备的抽象
  • 虚拟内存是对主存以及磁盘io的抽象
  • 进程是对处理器、主存、io设备的抽象
1.7 操作系统中的几个概念
  • 上下文切换:操作系统实现进程间切换的机制

  • 上下文:跟踪进程运行所需的所有状态信息

  • 内核:操作系统代码常驻内存的部分 注:内核并不是一个独立的进程,而是管理全部进程所用代码和数据结构的集合

1.8 进程的虚拟内存空间

由低地址往上:

  • 程序代码和数据区:可执行目标文件初始化的区域,运行时就被指定了大小

  • 堆:当调用malloc和free等标准库函数时,堆区大小可动态扩大和缩小

  • 共享库:存放类似c标准库这样的共享库代码和数据区域

  • 栈:编译器用其实现函数调用,大小是动态的

  • 内核虚拟内存:位于地址空间顶部,为内核保留 不允许应用程序读写

请添加图片描述

1.9 重要主题
1.9.1 Amdahl定律
  • 描述了改善任何过程的一般原则
  • 主要观点:要想加速整个系统,必须提升系统中相当大的部分的速度
1.9.2 并发和并行
  • 超线程:超线程(hyper-threading)其实就是同时多线程(simultaneous multi-theading),是一项允许一个CPU执行多个控制流的技术
  • 超标量处理器:可以达到一个周期一条指令更快的执行速率
  • SIMD并行(单指令 多数据):允许一条指令产生多个可以并行执行的操作

参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值