早起看CMU15213课程第四天

双语字幕
https://www.bilibili.com/video/BV1iW411d7hd?p=2

单英文 or 单中文字幕
https://www.bilibili.com/video/BV1Rv411e7jE?from=search&seid=905349371269797900&spm_id_from=333.337.0.0

课件链接

http://csapp.cs.cmu.edu/3e/labs.html

课程练习链接

https://www.cs.cmu.edu/~213/labs.html

配套书籍

Computer Systems A Programmer’s Perspective
CSAPP
计算机组成原理

今天进度

P2
https://www.bilibili.com/video/BV1iW411d7hd?p=2

笔记

corner cases 临界条件
digital world 数字世界
binary values 二进制
decimal system 十进制
Pennsylvania 宾夕法尼亚
arithemetic 算术
vacuum tubes 电子管
vacuum 真空
electronic current 电流
analog signal 模拟信号
quantify 量化
low voltage 低电压
imperfections 不完善的地方
circuit 电路
threshold 阈值
set up 设置
advantage 好处
animations 动画
as sets of bits 比特位
power of 2 2的幂
fractional 分数
floating-point number 浮点数
binary point 二进制销售
fraction 分数
hex decimal numbers 十六进制上
keep track of a law 照着这个规律
interpolate 插
declarations 声明
microprocessors 微处理器
declare 声明
it to be along 它是一致的
obscure 模糊
holdover 定义
is aligned in 和…对齐
increments 增量
boolean algebra 布尔代数
algebra 代数
flip 翻
exclusive or 异或
era 时代
ampersand &
vertical bar |
tilde ~
bit manipulatuions 位操作
implicit 隐藏式的
sets of value 数值集合的方式
sets 集合

AND set intersection 交集
OR set union 并集
exclusive-OR symmetric difference 对称差
titlde set complement 补集
bang !
exclamation mark 感叹号
syntactic similarity 句法相似度
syntactic 句法
semantic relation 语义关系
semantic 语义

hex pattern 十六进制模式
hex 十六进制

the same these patterns here 这里也是类似情况

bitwise 按位的
bitwise operation 按位操作
interpreting arguments 根据参数
arguments 参数
mentally slip 精神疏忽
null pointer 空指针
two different flavors 两种不同的放松
arguments x 参数x
replicate 复制

you have to really have wired in you 你必须用心学
equations 方程
intuition 直觉
gut level 直觉,在内心生出
two’s complement 二进制补码
minus 负号
square 平方
power 次方
TMax 二进制最大正整数
Tmin 而记着呢最小负数
nuisance 滋扰
net wealth 净资产
transaction 交易
two to the fifth 表示2的5次方
“two to the fifth” 意味2^5 (=32)
derivation 推导
be considered xx 被当做
it’s considered two’s complement members. 被当做补码了。
flip 翻转
vice verse 反之亦然
signed 有符号
numeric constant 数字常值
cast 转化为
flipping 改变
quirk 怪的
compiler 编译器
obscure reason 令人困惑的原因
symmetry 对称
parentheses 括号

改进地方

增加 对数据 CSAPP书籍的阅读

主要

中文阅读,每天一个小结
1.6

中文总结视频

进度未更新

https://www.bilibili.com/video/BV1RK4y1R7Kf?p=2&spm_id_from=pageDriver
完成P1部分

英文阅读,每天1-2个视频

进度未更新
https://www.bilibili.com/video/BV19v41167nr?p=9&spm_id_from=333.788.top_right_bar_window_history.content.click
目前进度为1.4

关键知识点总结:

进度未更新
https://www.bilibili.com/video/BV1cD4y1D7uR?p=5&spm_id_from=pageDriver
P5 完成第一章,下面笔记都是由第一章来的

前面内容回顾

CHAPTER 1: A TOUR OF COMPUTER SYSTEM 计算机漫游系统
PRTT1: PROGRAM STACTURE AND EXECUTION 程序结构和执行
PART2: RUNNING PROGRAMS ON SYSTEM 系统上运行程序
PART3: INTERACTION AND COMMUNICATION BETWEEN PROGRAMS 进程间的交互和通信

the life of hello program
在这里插入图片描述

#include<stdio.h>
int main()
{
	printf("hello, world \n");
	return 0;
}
linux> gcc -o hello hell.c

在这里插入图片描述

上面gcc 执行分为4个阶段:

预处理: PRE-PROCESSOR (CPP)
编译 COMPILER (CCL)
汇编 ASSEMBLER(AS)
链接LINKER(LD)

在这里插入图片描述

FIRST STAGE - PRE-PROCESSOR

预处理器根据#开头代买,修改原始程序。
hello引入了头文件,#include<stdio.h>
预处理器 读取该头文件内容,将其中内容直接插入到源程序,得到新的C程序。该文件以.c结尾。
在这里插入图片描述

SCEOND STAGE COMPILER

编译阶段: 词法分析,语义分析,语法分析,中间代码生成,优化等操作。
在这里插入图片描述

THIRD STAGE ASSEMBLER

汇编器根据指令将 汇编程序 hello.s 翻译成 机器指令
并且机器指令打包,得到 hello.o
hello.o 是二进制文件,但是还不能直接执行。
在这里插入图片描述

THE LAST STAGE LINKER

linker将hello.o和printf.o 进行合并
hello.o也称之为 可重定向文件。
在这里插入图片描述
对于hello这个程序,调用了printf函数(它属于标准C库中的一个函数,每一个C语言编译器都提供)
当调用printf函数时,编译器就会知道你在屏幕上要打印输出内容,将代码翻译成计算机可以执行的指令。
printf位于 名为 printf.o的文件中( printf.o属于提前编译好的文件)

为什么要理解编译器?
optiminizing program performance 优化性能
understanding link-time errors 理解链接时的错误
avoding security holes 避免安全漏洞

小结

在这里插入图片描述
hello.c 经过compilier 编译后,成为可执行的程序 hello 存储在disk上

在linux终端的shell 通过 .\hello 执行该程序。

在这里插入图片描述

HARDWARE ORGANIZATION OF A SYSTEM 硬件系统组成

CPU
PC : program counter 大小为1个字节的存储区域, 4字节 or 八字节

在这里插入图片描述
处理器 不断 执行 PC指向的指令,更新PC,让其指向下一条要执行的指令。

Register file : 临时存放数据的空间。 寄存器文件
它由 单字长的 寄存器构成。
处理器:从内存读取a的值,暂存在寄存器 X中;从内存读取B b的值,暂存在寄存器 Y中
ALU(arithmatic/ logic unit) 复制寄存器 X 和 Y保存的数值 进行算术运算,将结果存在 寄存器X/Y中。覆盖原来的数值。

在这里插入图片描述

Main memory 内存
存放程序指令 和 数据。
随机动态存储器的芯片。
从零开始的大数组。
每个字节都有相应地址。
内存通过I/O总线 和 处理器进行数据传递。
总线贯穿了整个计算机系统。,负责信息的传递(信息从一个部件 传递到 另一个部件)。
传送固定长度的字节块,成为 字, 32机器 一个字长 4位, 64位机器,一个字节 8位。

在这里插入图片描述

其它输入输出设备:
其他输入输出设备 和 I/O主线连接 需要 通过 一个适配器 作为媒介。
在这里插入图片描述

DMA技术: Direct Memory Access 数据不经过CPU直接磁盘直达内存。
在这里插入图片描述

Caches Matter

CACHES 缓存
大内存 小速度
快速度 贵
在这里插入图片描述

memory hierarchy 内存层次结构
hierarchy 等级只读
在这里插入图片描述

THE OPERATING SYSTEM MANAGES HARDWARE 硬件操作系统

所有应用程序 对 硬件 的 操作 ,必须通过硬件操作系统完成。 Operating system

在这里插入图片描述

目的: 防止硬件 被 失控应用程序滥用;操作系统提供统一机制用于处理复杂硬件管理。

file 是 对 I/O设备抽象。
虚拟内存 是 对 内存和磁盘IO的抽象。
进程 是 对 处理器 内存 和 IO设备 的抽象。
在这里插入图片描述

进程转换
最开始的时候,只有 shell 进程在运行,即 shell 在等待命合行的输入。

通过 shell 进程加载 hello 进程时,shell 进程通过系统调用来执行请求,
系统调用会将控制权从 shell 进程传递给操作系统,操作系统保存 shell 进程的上下文,
然后创建一个新的 hello 进程及其上下文,然后将控制权转交给新的 hello 进程。

Hello进程执行完之后,操作系统就会恢复 shell 进程的上下文,并将控制权交给 shell 进程,
shell 进程继续等待下一个命令的输入。
在这里插入图片描述
上下文 context: 当前PC 和 寄存器 和值,内存中的内容等。

一个进程 往往由 多个线程组成。
在这里插入图片描述

虚拟内存:(关于内存的抽象)
每个进程所看到的内存都是一样的,但并非如此, 这也称之为虚拟内存。

下图为linux进程中的虚拟地址空间分布:

最底层;
存放程序的代码 和 数据,从可执行目标文件中加载而来的。
在这里插入图片描述

倒数第二层:
堆:可以在运行时动态的扩展和收缩,
在这里插入图片描述

倒数第三层:
共享库存放区域
在这里插入图片描述

倒数第四层:
user stack 用户栈
函数的存放区域
函数的调用本质就是压栈。
栈的增长方向: 高地址—>低的地址
在这里插入图片描述

最顶部:
内核区域
对于应用程序是不可见的。
在这里插入图片描述

linux系统核心: 一切皆文件。
在这里插入图片描述

通过网络在远程主机运行程序

USE SSH RUN HELLO PROGRAM
在这里插入图片描述

Amdahl’s LAW
阿姆达尔定律
当我们对系统中的某一部分进行加速时,
被加速部分的重要性和加速程度 是 影响 整体系统性能的关键因素。

提高运行速度:
Thread-level concurrency 线程级并发
instruction-level parallelism 指令级并行
single-instruction mutiple-data parallelism 单指令,多数据并行
在这里插入图片描述

Thread-level concurrency 线程级并发

通过增加 CPU 的核心数,可以提高系统的性能。

一个多核处理器的组织结构,图中的处理器芯片具有四个 CPU 核心。

每个CPU核心都有自己的 Ll cache 和 L2 cache ,四个 CPU 核心共享 L3 cache,这 4 个 CPU 核心集成在一颗芯片上
在这里插入图片描述
许多高性能的服务器芯片,单颗芯片集成的 CPU 数量高达几十个,甚至上百个。

hyperthreading 超线程,多线程
每个 CPU 核心可以执行两个线程,那么四个核心就可以并行的执行 8 个线程
当一个线程因为读取数据而进人等待状态时,CPU可以去执行另外一个线程,其中线程之间的切换只需要极少的时间代价.

在这里插入图片描述
instruction-level parallelism 指令级并行

现代处理器可以同时执行多条指令的属性称为指佘级并行,每条指令从开始到结束大概需要20个时钟周期或者更多,但是处理器采用了非常多的技巧可以同时处理多达100条指命,因此,近几年的处理器可以保持每个周期2~4条指令的执行速率。

在这里插入图片描述
single-instruction mutiple-data parallelism 单指令,多数据并行

现代处理器拥有特殊的硬件部件,允许一条指令产生多个并行的操作,这种方式称为单指令多数据(Single Instruction Multiple Data)。

SIMD的指令多是为了提高处理视频、以及声音这类数据的执行速度,比较新的Intel以及AMD的处理器都是支持SIMD指令加速。
在这里插入图片描述

VIRTUAL MACHINE虚拟机

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值