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)的优点 值 ...
随机推荐
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- solr客户端的使用
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAP0AAACqCAYAAABmvkmzAAAACXBIWXMAAA7JAAAOygG3NjBLAABkG0
- java8,方法引用
1:方法引用,https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html 当我们使用lambda表达式去创建一个 ...
- Spark ClassNotFoundException $$anonfun$2
Spark ClassNotFoundException $$anonfun$2 1. 软件环境: 软件 版本 Spark 原生1.6.0 Hadoop 原生2.6.5 2. 应用场景&问题描 ...
- 前m大的数(哈希入门)&&sort
http://acm.hdu.edu.cn/showproblem.php?pid=1280 普通方法(625ms) #include <stdio.h> #include <str ...
- python中关于不执行if __name__ == '__main__':测试模块的解决
1.新建测试脚本文件: 2.编辑测试脚本 import unittest import requests import json import HTMLTestRunner ur1 = 'http:/ ...
- 剑指offer3
输入一个链表,从尾到头打印链表每个节点的值. 思路:首先借助一个栈,遍历链表中的每一个值,然后存储到栈中,利用栈的先进后出特点,然后添加到数组中返回. package demo3; import ja ...
- 2:4 动态方法的调用(简化Action的配置)
动态方法的第一种方法: 所以我们要手动设置 动态调用的开关打开:strus-core-jar里面:修改常量 使用方法: 根据请求来区分用哪个方法处理,处理完了,注意要在该方法里面返回与请求相同的字符串 ...
- linux安装composer及安装yii2
wget https://getcomposer.org/download/1.3.2/composer.phar mv composer.phar /usr/local/bin/composer c ...
- 学号20155311 2016-2017-2 《Java程序设计》第9周学习总结
学号 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 整合数据库 JDBC(Java DataBase Connectivity)即java数据库连接,是一种 ...