2019年2月22日 深入理解计算机系统(CS:APP)第一章读书笔记
考虑到自己对基础的掌握还是不够扎实,在重新回炉python之前,我计划用每天一章的速度回炉CS:APP。
----
1. 信息就是位+上下文:
所有数据在计算机中以位为最小单位存储,包括代码和程序、文件,上下文是对这些位数据的解读方式。
2. 程序被其他程序编译成不同格式、3. 了解编译系统如何工作大有益处:
GCC编译器编译的四个阶段程序为:预处理器(将源程序处理为被修改的源程序)、编译器(将修改后的源程序编译为汇编程序)、汇编器(输出汇编后的二进制程序)、链接器(链接多个二进制文件,输出可执行目标文件)
了解不同语言的编译方式,有助于我们优化程序性能、理解出现的错误、避免安全漏洞。
4. 处理器读并解释存储在存储器中的指令:
简单的说,计算机程序就是加载到存储器中,供处理器依次执行的程序。
1.5 高速缓存、1.6 形成层次结构的存储设备
由于硬盘、内存、存储器存在性能差异,通常来说,从磁盘中读数据比从主存中读数据的开销大1000万倍,而从寄存器中读数据比从主存中读数据快100倍。
因此推出了高速缓存(SRAM: L1\L2…),可以做到比从主存中读数据快5-10倍速度。
1.7 操作系统管理硬件
操作系统的两个基本功能:防止硬件被失控的应用程序滥用;在控制复杂而又通常广泛不同的低级硬件设备方面,为应用程序提供简单一致的方法。//吐槽,从这点来看,安卓可以算是一个操作系统吗?
1.7.1 进程、1.7.2 线程、1.7.3 虚拟存储器、1.7.4 文件
程序在处理器运行过程中,操作系统会提供一个假象,就好像这个程序独占使用处理器、内存、IO设备,处理器看起来是连续不断的处理数据,这些现象就是通过进程的概念来实现。
实际上,处理在处理程序的过程中,会同时处理多个程序,也就是多个进程同时并发运行,换个角度说,处理器处理多个进程是交错执行的,这种机制被称为上下文切换(context switching)。
操作系统运行程序所需要的信息、状态、内存情况、执行位置等,统一称为上下文(context),任意一时刻,系统上都只有一个程序在运行,当操作系统决定转移到下一个程序执行时,就会发生上下文切换。
发生上下文切换时,处理器指令会从应用程序代码切换到操作系统代码。
通常我们认为一个进程只有单一的控制流(或者称为处理流),不过,一个进程实际上可以有多个称为线程的执行单元组成,每个线程共用进程的上下文,并共享执行代码。
虚拟存储器同样是一个抽象概念,他提供了一个假象,好像所有进程都独占的使用主存,每个进程看到的存储器资源都是一致的:
从高到低依次为:
内核虚拟存储器(用户态不可读)、用户栈、共享库的存储器映射区域、运行时堆、读/写数据、只读的代码和数据。
简单来说,虚拟存储器是操作系统控制下的精密操作,包括地址翻译、页置换等,基本思路是把虚拟存储器内存保存在磁盘上,然后用主存作为磁盘的高速缓存。
文件不过是存储的字节序列,每个I/O设备,都可以被看成是文件,所有文件的输入、输出都是用 Unix I/O的一组系统函数调用来实现。
1.8 利用计算机网络和其它系统通讯
从简单、单一角度看,网络是计算机系统中的一个I/O设备。
1.9 下一章。
转载于:https://www.cnblogs.com/seenthewind/p/10416872.html
2019年2月22日 深入理解计算机系统(CS:APP)第一章读书笔记相关推荐
- 《深入理解计算机系统》第七章读书笔记
<深入理解计算机系统>第七章读书笔记 第七章:连接 连接 1.连接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.这个文件可被加载或拷贝到存储器并执行. 2.连接可以执行于编译 ...
- 2019年10月22日AWS SAP-C01 大捷战报
标题用了大捷,900+分,算么?哈哈 经过自己的持续学习.不懈的努力于2019年10月22日北京拿下AWS SAP-C01 认证,在完成考试后看到屏幕上PASS的那一刻,在辛苦感觉也值得.哭泣 早上考 ...
- 【目标一】2019年9月15日 - 2019年9月22日晚 --- 周计划
2019年9月15日 - 2019年9月22日晚 --- 周计划 工作日作息时间 周末或者节假日作息时间(如果没有活动 或者 不用加班的话) 心若向暖,何处不阳光:心若向阳,便何处不花开 \^_\^ ...
- 2019年4月22日A股暴跌行情思考
2019年4月22日A股暴跌行情思考 原因:股指期货松绑 盘面:小幅高开,单边下跌 操作: 总结: 股指期货松绑,周末媒体YY大盘暴涨,不排除空头故意借助媒体来诱多,然开盘后暴跌. 预期过于一致时,需 ...
- D2 日报 第152期 2019年7月22日
? 开源项目 ➡️ yehuio/Coot watch 4 star 58 fork 9 玩转 IFTTT 体验极客生活,互联网自动化神器 github.com ➡️ xiaolai/regular- ...
- 哈罗出行2019年4月22日 找零钱问题(动态规划)
哈罗出行2019年4月22日JAVA岗笔试题: 现存在一堆面值为 N=[n1,n2,n3,--] 面值的硬币,问最少需要多少个硬币才能找出总值为 S的零钱,假设硬币无限. 我的思路:首先将N中能一次取 ...
- 绝地求生6月22号服务器维护中,绝地求生2019年5月22日维护到几点?吃鸡5月22日更新内容...
本文导航 第1页: 绝地求生5月22日更新 第8页: 改善降落时界面 第2页: 绝地求生PC1.0第29轮更新内容 第9页: 改善信号枪显示界面 第3页: 生存通行证3:百搭牌 第10页: 自定义比赛 ...
- 2019年pubg服务器维护,2019年5月22日绝地求生今天更新维护到几结束?
本文导航 第1页: 5月22日更新时间 第8页: 改善降落时界面 第2页: 生存通行证3:百搭牌 第9页: 改善信号枪显示界面 第3页: 通行证结果 第10页: 自定义比赛 第4页: 结算期间 第11 ...
- 梦想世界 2014年8月14日服务器维护公告,2019年8月22日维护公告
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 <梦想世界>2019年8月22日维护内容如下: 本周更新内容摘要: 1.天选之战全明星争霸赛开放报名和竞猜玩法 2.调整了帮派降妖宝箱奖励发放 ...
- 《深入理解计算机系统》(CSAPP)读书笔记 —— 第三章 程序的机器级表示
本章主要介绍了计算机中的机器代码--汇编语言.当我们使用高级语言(C.Java等)编程时,代码会屏蔽机器级的细节,我们无法了解到机器级的代码实现.既然有了高级语言,我们为什么还需要学习汇编语言呢?学习 ...
最新文章
- 特征提取,转换和选择
- Linux安装Nodejs
- sw运行很卡怎么办_windows10系统SolidWorks运行速度很慢如何解决
- .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
- 在linux内核3.14.43添加自己的驱动源码,linux内核如何加入自己的驱动
- ffmpeg 参数_使用FFMPEG进行视频转码
- mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制
- java deque_使用Deque
- 分布式缓存产品Redis和memcached比较区别(图)
- [原]最大流, 最小分割分析
- 手推公式+项目实操复现!《机器学习》完整详解
- HTTP权威指南 笔记
- iOS自动解锁的实现
- 等比数列求和公式、性质
- Cocos2d-x教程(33)-三维物体AABB碰撞检测算法
- 旅游景区游玩管理系统
- 通过 磁带机 备份 恢复数据 --201308
- 阿里巴巴并购雅虎中国[北京时间8月11日14时]
- Tita 绩效管理:一对一正式面谈
- 如何用html5制作3d旋转照片集