CSAPP Lec01

1. CMU 15213_15513 CSAPP 深入理解计算机系统 Lecture 01 Course Overview 中英字幕_哔哩哔哩_bilibili

从这个课程中可以学到什么?(为什么要学这门课)

Great Reality #1(数字类型): Ints are not Integers, Floats are not Reals

对于整数的理解可能不像是你期望的那样。

Example1:数的平方一定大于等于0吗?

Float: yes!

Int:

Example2: 加法结合律 

Unsigned & Signed Int:Yes!

Float: 

Great Reality #2(汇编语言): You’ve Got to Know Assembly

可以学到汇编语言。它是 机器级别模型运行 的关键。

Great Reality #3(存储结构): Memory Matters

memory referencing bug example

typedef struct{int a[2];double d;
} struct_t;double fun(int i){volatile struct_t s;s.d = 3.14;s.a[i] = 1073741824; /* possibly out of bounds */return s.d;
}

 运行结果:

为什么会出现这样的运行结果?

答:与数据如何在内存中布局有关。

调用 fun(3)fun(4) 时,是在改变这个浮点数d的字节。

当输入 6 时,修改了该程序的某些状态(它被用于维持程序运行,最有可能是记录已经分配的内存),这就导致了程序崩溃。

理解数据结构的机器级别表示、以及他们如何运行对于你处理这些漏洞的能力十分重要。

Great Reality #4: There’s more to performance than asymptotic complexity

程序中需要用到一些低级的优化,就需要了解系统的运行规律。 是什么让它运行得很好,是什么让它运行不佳。

Memory system performance example

将一个矩阵从源地址src 复制到 目标地址dst

void copyij(int src[2048][2048], int dst[2048][2048]){int i, j;for(i = 0; i < 2048; i++)for(j = 0; j < 2048; j++)dst[i][j] = src[i][j];
}
// 4.3ms
void copyij(int src[2048][2048], int dst[2048][2048]){int i, j;for(j = 0; j < 2048; i++)for(i = 0; i < 2048; i++)dst[i][j] = src[i][j];
}
// 81.8ms

第一个 比 第二个 快得多,与内存层次结构中的缓存有关。

Great Reality #5(网络): Computers do more than execute programs

网络。

学习方法

每章阅读三遍,然后做练习题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea打jar包

目录 1、打包设置 2、打包介绍 3、开始打包 1、打包设置 先设置要打包的模块信息&#xff0c;即打包进去的内容。如下图所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;点击&#xff0b;号完成模块创建&#xff0c;其中有两种方式&#xff1a;…

《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

文章目录 1. 人工智能、机器学习、深度学习的关系2. 机器学习2.1 实现原理2.2 如何实施 3. 深度学习神经网络核心概念 1. 人工智能、机器学习、深度学习的关系 **人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;**是研发用于模拟、延伸和扩展人的智能…

微服务系列(2)--注册中心

在博文&#xff1a;微服务系列(1)里我们提到过注册中心的概念&#xff0c;简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件&#xff0c;它提供了服务注册、服务发现、服务健康检查等功能&#xff0c;以确保微服务之间的稳定通信。在微服务架构中&#xff0c;各…

Debian纯净系统安装php常用扩展和程序

适用于 php-fpm debian容器 mysql扩展 docker-php-ext-install pdo_mysql docker-php-ext-install mysqliredis扩展 pecl install redis docker-php-ext-enable redis# pecl无法装就&#xff1a; docker-php-source extract # 创建并初始化 /usr/src/php目录&#xff08;扩展…

应用层协议——TCP(上)

文章目录 1. TCP协议1.1 TCP协议段格式1.2 确认应答(ACK)机制1.3 16位窗口大小1.4 6位标志位1.4.1 TCP三次握手 1.5 确认应答(ACK)机制1.6 超时重传机制1.7 连接管理机制1.7.1 理解TIME_WAIT状态1.7.2 理解 CLOSE_WAIT 状态 1. TCP协议 TCP全称为传输控制协议&#xff0c;意思…

【uniapp 中使用uni-popup阻止左滑退出程序】

在uniapp中&#xff0c;可以使用uni-app插件uni-popup提供的阻止左滑退出程序的功能。具体步骤如下&#xff1a; 安装uni-popup插件&#xff1a;在HBuilderX编辑器中&#xff0c;打开manifest.json文件&#xff0c;找到“dependencies”字段&#xff0c;在其后添加&#xff1a…

〔AI 绘画〕Stable Diffusion 之 VAE 篇

✨ 目录 &#x1f388; 什么是VAE&#x1f388; 开启VAE&#x1f388; 下载常见的VAE&#x1f388; 对比不同VAE生成的效果 &#x1f388; 什么是VAE VAE&#xff1a;是 Variational Auto-Encoder 的简称&#xff0c;也就是变分自动编码器可以把它理解成给图片加滤镜&#xff…

JavaWeb-Filter过滤器

目录 Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置&#xff08;资源被访问方式&#xff09; 6.FilterChain拦截链 Filter过滤器 filter是过滤器&#xff0c;相比于Servlet的发送请求&#xff0c;filter是用于拦截请求。…

2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数

一、linux 串口终端输入长命令不换行&#xff0c;覆盖前面内容&#xff0c;现象如下图&#xff1a; 二、解决方法&#xff1a;用stty 命令设置行列数 stty columns 200 stty rows 10三、参考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口设备操作命…

【Servlet】(Servlet API HttpServlet 处理请求 HttpServletRequest 打印请求信息 前端给后端传参)

文章目录 Servlet APIHttpServlet处理请求 HttpServletRequest打印请求信息前端给后端传参 Servlet API Servlet中常用的API HttpServlet 实际开发的时候主要重写 doXXX 方法, 很少会重写 init / destory / service destory 服务器终止的时候会调用. //下面的注解把当前类和…

gin的占位符:和通配符*

1、用法 在 Gin 路由中&#xff0c;可以使用一个通配符&#xff08;*&#xff09;或一个占位符&#xff08;:&#xff09;来捕获 URL 的一部分。 r.GET("/royal/:id", func(c *gin.Context) {id : c.Param("id")//fmt.Println("into :id")c.Str…

成都到长沙自驾游路线推荐-成都至长沙自驾游攻略

请问成都到长沙自驾怎么走&#xff0c;中途在哪里休息比较合适&#xff0c;沿途有哪些景点&#xff1f; 在湖南湘西的吉首落脚是首选 一&#xff0c;成都到吉首 约在800公里。全程高速估计就是 9个小时左右。如果上午出发&#xff0c;差不多可以到吉首吃晚餐&#xff0c;再住酒…

ef core 分页

在使用 Entity Framework Core&#xff08;EF Core&#xff09;进行分页查询时&#xff0c;你可以借助以下方法来实现&#xff1a; 使用 Skip 和 Take 方法&#xff1a;Skip 方法用于跳过指定数量的记录&#xff0c;而 Take 方法用于选择指定数量的记录。结合使用这两个方法&am…

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…

命令执行漏洞

1、命令执行漏洞 1.1、简介 Django是用Python开发的一个免费开源的Web结构&#xff0c;几乎包括了Web使用方方面面&#xff0c;能够用于快速建立高性能、文雅的网站&#xff0c;Diango提供了许多网站后台开发常常用到的模块&#xff0c;使开发者可以专注于业务部分。 1.2、漏…

【Terraform学习】管理显式依赖关系-depends_on(Terraform配置语言学习)

背景&#xff1a; 关于如何在机器上拉terraform代码&#xff0c;初始化就不重复了&#xff0c;需要的可以查看前面的文章&#xff1a; 【Terraform学习】Terraform-AWS部署快速入门&#xff08;快速入门&#xff09;_向往风的男子的博客-CSDN博客 管理显式依赖关系 隐式依赖…

【删除vlan的方法】

提示错误 [SW1]undo vlan 10 Error: The VLAN has a L3 interface. Please delete it first. 解决办法 undo interface Vlanif10 #删除vlan 10下的接口 [SW1-GigabitEthernet0/0/1]dis this #删除下列的IP

接口自动化必备技能——jmeter提取token方式以及设置成全局变量(跨线程组传token值)方式

前言 今天Darren洋教大家如何使用jmeter中的插件来进行token值的提取与调用&#xff0c;今天Darren洋介绍两种jmeter提取token值的方式&#xff0c;一种是在当前线程组中直接提取token值&#xff0c;一种是跨线程组的方式进行token值的提取并调用给不同线程组里的HTTP接口使用。…

如何读取文件夹内的诸多文件,并选择性的保留部分文件

目录 问题描述: 问题解决: 问题描述: 当前有一个二级文件夹,第一层是文件夹名称是“Papers(LNAI14302-14304)",第二级文件夹目录名称如下图蓝色部分所示。第三层为存放的文件,如下下图所示,每一个文件中,均存放三个文件,分别为copyright.pdf, submission.pdf, s…

【PYTHON】WebSocket服务端与客户端通信实现

目录 1 简介 2 WebSocket优点 3 前后端交互的方式 4 心跳机制和重连机制 5 后端代码 6 测试