csapp 深入理解计算机系統 笔记

news2024/11/24 4:04:57

csapp 深入理解计算机系統 笔记

  • 参考
    • lab
  • 第1章:计算机系统漫游
  • 第 2 章:信息的表示和处理
    • Data Lab

参考

  • 计算机速成课 | Crash Course 字幕组 (全40集 2018-5-1 精校完成)
  • csapp重点解读
  • 深入理解计算机系統 csapp

lab

  • Lab Assignments
  • Lab 直接下载
  • 参考

第1章:计算机系统漫游

在这里插入图片描述
Amdahl定律: 当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度, 某一个部分占的时间百分比为 α \alpha α ,然后,把这一部分的性能提升 k 倍,系统性能提速的倍数为:
S = 1 ( 1 − α ) + α / k S=\frac{1}{(1-\alpha)+\alpha/k} S=(1α)+α/k1

第 2 章:信息的表示和处理

#include <stdio.h>
typedef unsigned char *pointer;

void show_bytes(pointer start, size_t len){
    size_t i;
    for (i = 0; i < len; i++)
    printf("%p\t0x%.2x\n",start+i, start[i]);
    printf("\n");
}

int main(){
    int a = 0x01234567;
    show_bytes((pointer) &a, sizeof(int));
}

输出:

gcc -g -O0 -o main main.c
./main
"小端表示:"
0x7fff82d76b84  0x67
0x7fff82d76b85  0x45
0x7fff82d76b86  0x23
0x7fff82d76b87  0x01

Data Lab

Data Lab: Manipulating Bits

wget http://csapp.cs.cmu.edu/3e/datalab-handout.tar
tar -xf datalab-handout.tar

# 直接安装gcc-multilib 可能会报
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc: No such file or directory
# 安装对应版本的
sudo apt install -y gcc-9-multilib 

# 编译与测试
make
./btest -f bitXor

参考

/* 德摩根定律
(1) x^y = (~x&y)|(~y&x) = ~(~((~x&y)) & (~((~y&x)))
(2)x ^ y = (x | y) & ~(x & y)
 * bitXor - x^y using only ~ and & 
 */
int bitXor(int x, int y) {
  // return (~(x & y)) & (~(~x & ~y));
  int a = ~(~x & y); //
  int b = ~((~y)&x);
  return ~(a&b);
}
// https://stackoverflow.com/questions/7300650/how-to-find-tmax-without-using-shifts
int isTmax(int x) {
  int a = ~((x + 1) ^ x); // 当是最大值是为0
  int b = !(x + 1); 
  return !(a + b);
}

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

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

相关文章

什么是深度学习的误差分解

误差分解是将深度学习模型的预测误差拆分为多个组成部分&#xff0c;以便更好地理解模型性能。在深度学习中&#xff0c;我们通常将预测误差分解为三个部分&#xff1a;偏差&#xff08;Bias&#xff09;、方差&#xff08;Variance&#xff09;和不可避免的误差&#xff08;Ir…

python离线安装ibm_db

下载离线包ibm_db以及clidriver 下载imb_db 在pypi官方网站https://pypi.org/project/ibm-db/#files下载离线安装包ibm_db-3.0.2.tar.gz。下载clidriver 下载地址&#xff1a;https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.…

Jmeter场景设置与启动方式

目录 线程组设置 name和comments Action to be taken after a sampler error Thread Properties 线程属性设置 场景运行 远程运行配置 命令行 性能测试场景是用来模拟模拟真实用户操作的工作单元&#xff0c;所以场景设计一定要切合用户的操作逻辑&#xff0c;jmeter主要…

window安装MongoDB

安装直接先去官网下载 Download MongoDB Community Server | MongoDB 安装后如下&#xff0c;我们直接双击运行&#xff0c; 这里记得选下面(可以自己选择安装盘符位置)&#xff0c;上面第一个会自动帮你安装到C盘&#xff0c;然后选择下一步 &#xff0c;这里勾选就会选择去自…

Spring MVC数据校验

一般情况下&#xff0c;用户的输入是随意的&#xff0c;为了保证数据的合法性&#xff0c;数据验证是所有 Web 应用必须处理的问题。 Spring MVC 有以下两种方法可以验证输入&#xff1a; 1.利用 Spring 自带的验证框架(复杂&#xff0c;推荐spring-boot-starter-validation) …

学无止境·MySQL②

三道小题 图一1、创建数据库Market2、创建数据表customers,在c_num字段上添加主键约束和自增约束&#xff0c;在c_birth字段上添加非空约束。3、将c_contact字段插入到c_birth字段后面4、将c_name数据类型改为varchar(70)5、将c_contact 字段改名为c_phone6、增加c_gender字段&…

机器学习笔记:随机森林

1 集成学习 集成学习通过构建多个学习器采用加权的方式来完成学习任务一般来讲&#xff0c;多个学习器同属于一种模型&#xff0c;比如决策树&#xff0c;线性模型&#xff0c;而不会交叉用多种模型为了保证集成学习的有效性&#xff0c;多个弱分类器之间应该满足两个条件 准确…

【IMX6ULL驱动开发学习】19.mmap内存映射

mmap将一个文件或者其它对象映射进内存&#xff0c;使得应用层可以直接读取到驱动层的数据&#xff0c;无需通过copy_to_user函数 可以用于像LCD这样的外设&#xff0c; 需要读写大量数据的 一、应用层 mmap用法&#xff1a; 用open系统调用打开文件, 并返回描述符fd.用mma…

Unity 获取Animation中的所有Clip

获取Animation中的所有Clip List<string> clips new List<string>();foreach (AnimationState item in animation){var clipName item.name;clips.Add(clipName);}

msvcp100.dll丢失怎样修复(一键修复方法)

msvcp100.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual Studio 2010的一部分。这个文件主要包含了C的标准库函数&#xff0c;可以被应用程序调用以完成特定的功能。当系统中缺少或损坏了msvcp100.dll文件时&#xff0c;就会出现“msvcp100.dll丢失”的错误提示。 …

【C语言实战】小伙子,你真的掌握数组了吗?--- 三子棋

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;课设 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1f…

第一百零五天学习记录:数据结构与算法基础:顺序表(王卓教学视频)

注&#xff1a;笔记截图均来自王卓数据结构教学视频 线性表的定义和特点 线性表是具有相同特性的数据元素的一个有限序列 同一线性表中的元素必定具有相同特性&#xff0c;数据元素间的关系是线性关系。 线性表的逻辑特征 稀疏多项式的运算 顺序存储结构存在的问题 1、存…

eNSP-MSTP多实例生成树

MSTP多实例生成树 文章目录 MSTP多实例生成树一、拓扑结构二、基本配置三、测试验证四、知识点详解 一、拓扑结构 二、基本配置 SW1: #创建vlan <Huawei>sys [Huawei]sys sw1 [sw1]un in en [sw1]vlan batch 2 to 20 #将接口划入vlan [sw1]port-group group-member Gig…

linux常用的命令

一.操作目录命令 1.1 ls 命令 语法&#xff1a; ls [选项] [目录或文件] 功能: 对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含…

MQTT emqx.conf

MQTT download_spencer_tseng的博客-CSDN博客 MQTT emqx-5.1.1-windows-amd64_spencer_tseng的博客-CSDN博客 c:/emqx-5.1.1-el8-amd64/etc/emqx.conf

第 108 场LeetCode双周赛

A 最长交替子序列 暴力枚举 class Solution { public:int alternatingSubarray(vector<int> &nums) {int n nums.size();for (int len n; len > 1; len--) {for (int i 0; i len - 1 < n; i) {int j i 1;for (; j < i len; j)if (nums[j] - nums[j …

mysql一条更新语句是如何被执行的——带你了解mysql更新语句执行内部顺序

文章目录 写在前面一、缓冲池 Buffer Poll二、Redo log1、磁盘寻址的过程2、redo log特点 三、Undo log四、更新过程五、InnoDB总体架构1、内存结构&#xff08;1&#xff09;Buffer Pool&#xff08;2&#xff09;预读机制&#xff08;3&#xff09;LRU算法&#xff08;4&…

安装Ceph集群

安装Ceph集群 环境准备 CentOS 7.6 主机名IPRoleadmin192.168.182.128adminnode1192.168.182.129mon/mgr/osdnode2192.168.182.130osdnode3192.168.182.131osdclient192.168.182.132 所有节点修改主机名相互解析三台node节点添加大小5G以上硬盘关闭所有节点防火墙与SeLinux所…

机器学习 day25(softmax在神经网络模型上的应用,提高数据精度的方法)

输出层采用softmax 在识别手写数字的模型中&#xff0c;预测y只有两个结果&#xff0c;所以输出层采用sigmoid激活函数且只有一个神经元。若预测y有10个结果&#xff08;0-9&#xff09;&#xff0c;该模型的前向传播计算方式与识别数字的模型完全相同&#xff0c;即隐藏层的…

【力扣算法07】之 2.两数相加 python

文章目录 问题描述示例1示例2示例 3提示 思路分析代码分析完整代码详细分析 完结 问题描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同…