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.pswp.cn/news/37340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37340.shtml
英文地址,請注明出處:http://en.pswp.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 測試