一、位+上下文

文本文件 / 二进制文件: 文本文件是只由ASCII码构成的文件

二、从源代码到可执行文件的顺序

源代码 ——> 可执行文件(机器代码)共有四步:

全过程代码 gcc hello.c -o hello

1、预处理,(预处理器cpp)将#开头的命令执行,例如将#include中文件加入, 扩展名为.i

  gcc -E hello.c -o hello.i

  输出文件为文本文件,前面大部分为 <stdio.h>内容,后面部分原版照抄。。

2、编译, (编译器ccl)将.i文件翻译为.s文件,输出为 汇编语言程序。

  gcc -S hello.i -o hello.s

  输出的文件我不太认识。。。估计是汇编程序

  

3、汇编,(汇编器as)将.s文件翻译成.o文件,这是一种 可重定位目标程序,是二进制文件。

  gcc -c hello.s -o hello.o

  已经是二进制文件了,查看是乱码。

4、链接, (链接器ld)将.o文件转化为hello文件,输出为可执行文件。处理一些标准库中的函数,例如printf函数, 存在于已经编译好的printf.o文件中,链接器的作用是将这两个.o文件综合,输出可执行文件。

  gcc hello.o -o hello

  这两个乱码看起来不太像,不知道内部机制是什么样的。

三、硬件简单浏览

1、总线:字长, 一般4字节(32位)或者8字节(64位)

2、主存:DRAM(动态随机存储器), 最小单位是字节,每个字节有自己的存储地址,

3、CPU构成:寄存器文件, 程序计数器,逻辑算数单元,寄存器都是1字长,

四、高速缓存

L1: 位于处理器芯片中,数万字节,速度与寄存器文件几乎一样快。

L2: 特殊的总线连接,比L1慢5倍,比主存快5倍,数十万到数百万字节, 静态随机访问存储器。

五、操作系统管理硬件

1、操作系统两个功能:防止滥用;向程序提供一致的机制控制低级硬件设备,涉及进程、虚拟存储器、文件。

  其中文件是io抽象,虚拟存储器是io\主存抽象,进程是处理器\主存\io抽象

2、进程:操作系统对正在与运行的程序的抽象。上下文切换。

3、线程:执行单元。每个线程共享代码和全局数据,处于同样的上下文中。一般比进程更加高效。

4、虚拟存储器:地址由低到高

  程序代码和数据、堆、共享库、栈、内核虚拟存储器,

5、文件:字节序列,io设备均可以抽象为文件。

六、并发和并行

并发概念比较广泛,指同时具有多个活动的系统。

并行指通过并发使一个系统运行得更快。

1、线程级并发

  多核处理器:同一个微处理器芯片上有多个cpu, 每个核有自己的L1, L2缓存,但共享高层的高速缓存和到主存的接口。

  超线程:程序计数器和寄存器文件有多个备份,运算单元只有一份,常规处理器切换线程要20000时钟周期,超线程可以自由切换。i7可以一个核2线程,那么4核就有8线程。

2、指令级并行

  更加底层,现在每个时钟周期2-4条指令,但每条指令的时间大约20个周期,通过流水线的使用,实现并行

3、单指令、多数据并行

  SIMD并行,并行对4对float数据做加法的指令。一般是为了提高处理影像、声音和视频数据应用的执行速度。

七、抽象

【CSAPP】一、计算机系统漫游的更多相关文章

  1. CSAPP =1= 计算机系统漫游

    思维导图 预计阅读时间:15min 阅读书籍 <深入理解计算机系统> 参考视频 [精校中英字幕]2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频 参考文章 < ...

  2. CSAPP:第一章计算机系统漫游

    CSAPP:计算机系统漫游 关键点:上下文.程序运行.计算机系统抽象. 信息就是位+上下文一个程序的运行过程系统的硬件组成编译系统是如何工作的?一个程序的运行过程(c语言举例)计算机系统中的抽象 信息 ...

  3. CSAPP之阅读笔记-计算机系统漫游(1)

    最近在看CSAPP(深入理解计算机系统第二版),其实最新版是第三版.但是,我看了一下价格100多大洋,于是去老夫子旧书网上买了本第二版的,花了30多块钱.哈哈. 网上看了一些关于此书的书评,都说是本好 ...

  4. [CSAPP笔记][第一章计算机系统漫游]

    计算机系统漫游 我们通过追踪hello程序的生命周期来开始对系统的学习—–从它被程序员创建,到系统上运行,输出简单的消息,然后终止.我们沿着这个程序的生命周期,简要介绍一些逐步出现的概念,专业术语和组 ...

  5. CSAPP 第一章 计算机系统漫游

    第一章 计算机系统漫游 C语言的起源:(系统级编程的首选) C语言与Unix操作系统关系密切 C语言小而简单:其设计由一个人掌控 C语言是为实践目的设计的:其设计用来实现Unix操作系统 C语言程序编 ...

  6. CSAPP学习笔记 第一章 计算机系统漫游

    Ch 1.0 1.计算机系统是由硬件和系统软件组成的 2.本书阐述了计算机组件是如何工作的以及执行组件是如何影响程序正确性和性能的. 3.通过跟踪hello程序的生命周期来开始对系统的学习. #inc ...

  7. CSAPP - Ch 1 - 计算机系统漫游

    目录 0 序言及摘要 1 信息就是位+上下文 2 程序被其他程序翻译成不同的格式 3 了解编译系统如何工作是大有益处的 0 序言及摘要 (1) 序言: CS:APP -- Computer Syste ...

  8. 《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游

    本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习.一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止.我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念 ...

  9. CSAPP =2= 信息的表示和处理

    思维导图 预计阅读时间:30min 阅读书籍 <深入理解计算机系统 第五版> 参考视频 [精校中英字幕]2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频 参考文章 ...

随机推荐

  1. Linux学习笔记之文件权限

    前言: 说起文件权限,大家在windows下应该很熟悉就对文件右键属性,然后配置一点什么读写之类的权限,然后可以分配到每个的人. 对于linux 我先为大家介绍一个使用者和组和其他的概念说明一下 文件 ...

  2. python 中的 re.compile 函数(转)

    1. 使用re.compile re模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象.可以实现更有效率的匹配.在直接使用字 ...

  3. springmvc 需要用到的核心jar包

    aopbeanscontextcoreexpressionwebwebmvc

  4. Java并发之CyclicBarria的使用(二)

    Java并发之CyclicBarria的使用(二) 一.简介 之前借助于其他大神写过一篇关于CyclicBarria用法的博文,但是内心总是感觉丝丝的愧疚,因为笔者喜欢原创,而不喜欢去转载一些其他的文 ...

  5. 《棋牌游戏服务器》斗地主AI设计

    设计目标 要取得良好效果,首先要搞清楚一个问题:我们想得到一个什么样的斗地主AI?我们的AI是用在手游产品当中,在真实玩家不足时为用户提供陪玩服务,这个目标决定了这个AI要具备以下两个核心特点:1.执 ...

  6. shell编程学习笔记--整数自增

    在Shell脚本中,用于while或for循环中经常要涉及到整数自增的情况,下面罗列下可能的方式 [方式一]declare -i来声明整数变量 root@localhost:~# declare -i ...

  7. json-lib反序列化抽象属性及对象

    使用json默认反序列化接口反序列化对象时,对象的类型必须的确定的,比如不能是抽象类型,否则会报无法实例化对象的异常 如有下列类定义: public abstract class AbstracObj ...

  8. cn_03_r2_enterprise_sp2_x86_vl_X13_46432

    1. 使用的 ISO为:cn_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46432.iso 2.序列号 用的序列号是“DF74D-TWR86-D3F ...

  9. TiDB 在摩拜单车的深度实践及应用

    一.业务场景 摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级: P0 级核心业务: ...

  10. c++中的函数对象《未完成》

    头文件: #pragma once #include<iostream> #include<vector> using namespace std; class Student ...