考虑到自己对基础的掌握还是不够扎实,在重新回炉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. 《深入理解计算机系统》第七章读书笔记

    <深入理解计算机系统>第七章读书笔记 第七章:连接 连接 1.连接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.这个文件可被加载或拷贝到存储器并执行. 2.连接可以执行于编译 ...

  2. 2019年10月22日AWS SAP-C01 大捷战报

    标题用了大捷,900+分,算么?哈哈 经过自己的持续学习.不懈的努力于2019年10月22日北京拿下AWS SAP-C01 认证,在完成考试后看到屏幕上PASS的那一刻,在辛苦感觉也值得.哭泣 早上考 ...

  3. 【目标一】2019年9月15日 - 2019年9月22日晚 --- 周计划

    2019年9月15日 - 2019年9月22日晚 --- 周计划 工作日作息时间 周末或者节假日作息时间(如果没有活动 或者 不用加班的话) 心若向暖,何处不阳光:心若向阳,便何处不花开 \^_\^ ...

  4. 2019年4月22日A股暴跌行情思考

    2019年4月22日A股暴跌行情思考 原因:股指期货松绑 盘面:小幅高开,单边下跌 操作: 总结: 股指期货松绑,周末媒体YY大盘暴涨,不排除空头故意借助媒体来诱多,然开盘后暴跌. 预期过于一致时,需 ...

  5. D2 日报 第152期 2019年7月22日

    ? 开源项目 ➡️ yehuio/Coot watch 4 star 58 fork 9 玩转 IFTTT 体验极客生活,互联网自动化神器 github.com ➡️ xiaolai/regular- ...

  6. 哈罗出行2019年4月22日 找零钱问题(动态规划)

    哈罗出行2019年4月22日JAVA岗笔试题: 现存在一堆面值为 N=[n1,n2,n3,--] 面值的硬币,问最少需要多少个硬币才能找出总值为 S的零钱,假设硬币无限. 我的思路:首先将N中能一次取 ...

  7. 绝地求生6月22号服务器维护中,绝地求生2019年5月22日维护到几点?吃鸡5月22日更新内容...

    本文导航 第1页: 绝地求生5月22日更新 第8页: 改善降落时界面 第2页: 绝地求生PC1.0第29轮更新内容 第9页: 改善信号枪显示界面 第3页: 生存通行证3:百搭牌 第10页: 自定义比赛 ...

  8. 2019年pubg服务器维护,2019年5月22日绝地求生今天更新维护到几结束?

    本文导航 第1页: 5月22日更新时间 第8页: 改善降落时界面 第2页: 生存通行证3:百搭牌 第9页: 改善信号枪显示界面 第3页: 通行证结果 第10页: 自定义比赛 第4页: 结算期间 第11 ...

  9. 梦想世界 2014年8月14日服务器维护公告,2019年8月22日维护公告

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 <梦想世界>2019年8月22日维护内容如下: 本周更新内容摘要: 1.天选之战全明星争霸赛开放报名和竞猜玩法 2.调整了帮派降妖宝箱奖励发放 ...

  10. 《深入理解计算机系统》(CSAPP)读书笔记 —— 第三章 程序的机器级表示

    本章主要介绍了计算机中的机器代码--汇编语言.当我们使用高级语言(C.Java等)编程时,代码会屏蔽机器级的细节,我们无法了解到机器级的代码实现.既然有了高级语言,我们为什么还需要学习汇编语言呢?学习 ...

最新文章

  1. 特征提取,转换和选择
  2. Linux安装Nodejs
  3. sw运行很卡怎么办_windows10系统SolidWorks运行速度很慢如何解决
  4. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
  5. 在linux内核3.14.43添加自己的驱动源码,linux内核如何加入自己的驱动
  6. ffmpeg 参数_使用FFMPEG进行视频转码
  7. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制
  8. java deque_使用Deque
  9. 分布式缓存产品Redis和memcached比较区别(图)
  10. [原]最大流, 最小分割分析
  11. 手推公式+项目实操复现!《机器学习》完整详解
  12. HTTP权威指南 笔记
  13. iOS自动解锁的实现
  14. 等比数列求和公式、性质
  15. Cocos2d-x教程(33)-三维物体AABB碰撞检测算法
  16. 旅游景区游玩管理系统
  17. 通过 磁带机 备份 恢复数据 --201308
  18. 阿里巴巴并购雅虎中国[北京时间8月11日14时]
  19. Tita 绩效管理:一对一正式面谈
  20. 如何用html5制作3d旋转照片集

热门文章

  1. 浙江大华 研发类试题
  2. 更多编译器对C++11的支持比较
  3. Vue-cli使用prerender-spa-plugin插件预渲染和配置cdn
  4. c#2.0语法新关键字 partial
  5. A Simple Math Problem (矩阵快速幂)
  6. 自测-2 素数对猜想
  7. [转载]Linux shell中的竖线(|)——管道符号
  8. 从其它系统登录到SharePoint 2010系统的单点登录
  9. changedate.js
  10. 基于角色的用户权限设计的问题,大家探讨下