CSAPP学习笔记 第一章 计算机系统漫游
Ch 1.0
1.计算机系统是由硬件和系统软件组成的
2.本书阐述了计算机组件是如何工作的以及执行组件是如何影响程序正确性和性能的。
3.通过跟踪hello程序的生命周期来开始对系统的学习。
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
Ch 1.1 信息就是 位+上下文
1.hello程序的生命周期始于源程序;源程序是由一系列的位序列组成的,8个位被组织成一组,称为字节;每个字节表示程序中的某些文本字符;hello.c程序是以字节序列的方式存储在文件中的。
2.只由ASCII字符组成的文件称为文本文件,所有其他文件称为二进制文件。
Ch 1.2 程序被其他程序翻译成不同的格式
1.每条C语言指令都必须被其他程序转化为一系列的低级机器语言指令。
2.编译系统:
一个现代编译器的主要工作流程如下:
源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(Linker)→ 可执行文件(executables)
对应至Hello程序:
hello.c => cpp => hello.i(修改了的源程序) => ccl => hello.s(汇编) => as => hello.o(二进制程序) + printf.o => ld => hello(executable)
Ch 1.3 了解编译系统如何工作是大有益处的
为什么要了解编译系统?
1.优化程序性能
2.理解链接时出现的错误
3.避免安全漏洞
Ch 1.4 CPU读并解释存储在内存中的指令
1.4.1 系统的硬件组成
- Bus总线
传送定长的字节块(字,word)
- I/O设备
I/O设备是系统与外界世界的联系通道;
通过一个控制器或者适配器与I/O相连
- 主存
临时存储设备,由一系列动态随机存取存储器DRAM组成;
逻辑上来说,存储器是一个线性的字节数组
- 处理器CPU
解释和执行存储于主存中指令的引擎;
处理器的核心是程序计数器(Program Counter, PC),PC记录主存中机器指令的地址;
系统运作时,处理器一直不断地执行PC指向的指令,再更新PC,使其指向下一个地址;
处理器的工作模型:指令集模型,围绕着主存、寄存器文件、算术/逻辑运算单元(ALU)进行。
处理器指令集架构和处理器微体系架构的区别:1)指令集架构描述每条机器指令的效果;2)处理器微体系架构描述的是处理器实际如何处理。

CSAPP学习笔记 第一章 计算机系统漫游的更多相关文章
- [CSAPP笔记][第一章计算机系统漫游]
计算机系统漫游 我们通过追踪hello程序的生命周期来开始对系统的学习—–从它被程序员创建,到系统上运行,输出简单的消息,然后终止.我们沿着这个程序的生命周期,简要介绍一些逐步出现的概念,专业术语和组 ...
- 《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游
本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习.一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止.我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念 ...
- CSAPP 第一章 计算机系统漫游
第一章 计算机系统漫游 C语言的起源:(系统级编程的首选) C语言与Unix操作系统关系密切 C语言小而简单:其设计由一个人掌控 C语言是为实践目的设计的:其设计用来实现Unix操作系统 C语言程序编 ...
- CSAPP:第一章计算机系统漫游
CSAPP:计算机系统漫游 关键点:上下文.程序运行.计算机系统抽象. 信息就是位+上下文一个程序的运行过程系统的硬件组成编译系统是如何工作的?一个程序的运行过程(c语言举例)计算机系统中的抽象 信息 ...
- 《跟我学Shiro》学习笔记 第一章:Shiro简介
前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- C语言学习笔记第一章——开篇
本文章B站有对应视频 (本文图片.部分文字引用c primer plus) 什么是C语言 顾名思义,c语言是一门语言,但是和我们所讲的话不同,它是一门编程语言,是为了让机器可以听懂人的意思所以编写的一 ...
- Java学习笔记 第一章 入门<转>
第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...
- c#高级编程第七版 学习笔记 第一章 .NET体系结构
第一章 .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...
随机推荐
- vertx打成jar包发布工程,访问静态页面
1:添加pom依赖,配置打包插件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...
- u-boot SPL的理解
uboot分为uboot-spl和uboot两个组成部分.SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的BROM来说的,之前的 ...
- libsvm使用
先挖个坑,有空重写svm_scale, svm_train, svm_predict几个代码,给的实在写的不敢恭维 package org.ml.svm; import java.io.File; i ...
- [LeetCode] 193. Valid Phone Numbers_Easy tag: Bash
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- Bootstrap 网格系统(Grid System)的工作原理 - 媒体查询
媒体查询 媒体查询是非常别致的"有条件的 CSS 规则".它只适用于一些基于某些规定条件的 CSS.如果满足那些条件,则应用相应的样式. Bootstrap 中的媒体查询允许您基于 ...
- Kaggle案例泰坦尼克号问题
泰坦里克号预测生还人口问题 泰坦尼克号问题背景 - 就是那个大家都熟悉的『Jack and Rose』的故事,豪华游艇倒了,大家都惊恐逃生,可是救生艇#### 的数量有限,无法人人都有,副船长发话了l ...
- jquery.lazyload 使用
1.引用js <script src="jquery.js" type="text/javascript"></script> < ...
- JSP—中文乱码
中文乱码问题? --------------------------------------- 不乱码的条件: 1.JSP页面本身的编码 pageEncoding UTF-8 (把jsp页面翻译成ja ...
- Testbench结构篇
对于standalone的block的verification: 采用结构化的Testbench:Testcase与Harness,BFM分别分离,来提高系统的可重用性.如图是一个典型结构: 其中所有 ...
- uva12083 二分图 求最大独立集 转化为求最大匹配 由题意推出二分图
这题大白书例题 : Frank 是一个思想有些保守的高中老师,有一次,他需要带一些学生出去旅行,但又怕其中一些学生在旅途中萌生爱意.为了降低这种事情的发生概率,他决定确保带出去的任意两个学生至少要满足 ...