第一章    计算机系统漫游

1.1信息就是位+上下文

源程序实际上就是一个由0和1组成的位(又称比特位)序列,这些位被组织成8个一组,称为字节。每个字节都表示程序中某个文本字符。

系统中的所有信息都是由一串比特表示的。区分不同数据对象的唯一方法就是我们读到这些数据对象时的上下文。

1.2程序被其他程序翻译成不同的格式

unix> gcc –o hello hello.c   翻译成一个可执行目标文件hello四个阶段:

预处理阶段:预处理器根据#开头命令,修改原始程序,得到另一个程序,通常以i为扩展名。

编译阶段:编译器将.i翻译成.s文件,包含一个汇编语言程序。

汇编阶段:汇编器将hello.s翻译成机器语言指令。变成.o的二进制文件,它的字节编码时机器语言指令而不是字符。

链接阶段。将类似printf的函数(printf.o的单独预编译目标文件中)并入,结果的到hello文件,是一个可执行目标文件,可执行文件加载道存储器后,由系统负责执行。

1.3了解编译系统如何工作是大有益处的

优化程序性能,理解链接时出现的错误,避免安全漏洞。

1.4处理器读并解释存处在存储器中的指令

Cpu:中央处理单元;ALU;算术/逻辑单元;PC;程序计数器; USB:通用串行总线。

总线:总线携带信息字节并负责在各个部件间传递。通常总线被设计成传送定长的字节块,也就是字。字中的字节数是一个基本的系统参数,各个系统不尽相同。假定字长为4字节,并且假设总线依次只传一个字。

IO设备:键盘鼠标,显示器,磁盘

主存:由一组DRAM芯片组成。存储器是由一个线性字结数组组成每个字节都有自己唯一的地址(数组索引);这些地址是从零开始的。

处理器:CPU在指令的要求下可能会执行这些操作。

加载:从主存拷贝一个字节或者一个字到寄存器,覆盖寄存器原来的内容。

存储:从寄存器拷贝一个字节或者一个字到主存的某个位置,覆盖这个位置上原来的内容。

更新:靠被两个寄存器的内容到ALU,ALU将两个字相加,并将结果存储到一个寄存器中。

IO读:从IO设备中拷贝一个字节或者一个字到寄存器。

IO写:从一个寄存其中拷贝一个字节或者一个字到一个IO设备。

转移:从指令本身中抽取一个字,并将这个字拷贝到程序计数器中,覆盖PC中原来的值。

当输入./hello后,shell程序就逐一读取字符到寄存器,再把它存放到存储器中。

输入会车后,shell执行一系列指令,这些指令将hello目标文件中的代码和数据从磁盘拷贝到主存,从而加载hello文件,包括最终输出的字符串”hello,world\n”

一旦程序加载道存储器,处理器就开始执行主程序中的机器语言指令。这些指令将hello world\n中的字节从存储器中拷贝到寄存器文件,从寄存器文件拷贝到显示设备,最终线时到屏幕

1.5高速缓存

用来存放处理器在不久的将来可能会需要的信息。

1.6形成层次结构的存储设备

1.7操作系统管理硬件

可以把操作系统看成是应用程序和硬件之间插入的一层软件,都依靠操作系统提供的服务。所有应用程序对硬件的操作尝试都必须通过操作系统。

操作系统有两个基本功能,防止硬件被失控的应用程序滥用;在控制复杂而又通常广泛不同的低级硬件方面,为应用程序提供简单一致的方法。(进程,虚拟存储器,文件)

文件是对io设备的抽象表示,虚拟存储器是对主存和磁盘io设备的抽象表示,进程则是对处理器,主存和io的抽象表示。

进程是操作系统对运行程序的一种抽象。实际上一个进程的指令和另一个进程的指令是交错执行的。交错执行机制称为上下文切换。

上下文切换:保存当前进程的上下文,恢复新进程的上下文,然后将控制权转移到新进程。新进程会从它上次停止的地方开始。

线程:一个进程由多个线程组成,每个线程都运行在进程的上下文中。共享同样的代码和全局数据。多线程比多进程之间容易共享数据。

虚拟存储器:是一个抽象概念,每个进程看到的存储器都是一致的,称之为虚拟地址空间。

1.8利用网络系统和其它系统通信

转载于:https://www.cnblogs.com/tongzhiyong/archive/2009/12/13/1623288.html

Computer Systems A Programmer's Perspective(深入理解计算机系统)第一章读书笔记相关推荐

  1. Computer Systems A Programmer’s Perspective ----阅读翻译日志

    2019独角兽企业重金招聘Python工程师标准>>> 借助google 翻译读一下这本书吧,做个记录 Computer Systems A Programmer's Perspec ...

  2. 读《Computer Systems: A Programmer’s Perspective》

    1.x64的指针是64位的,想想就是. 2.c++中,>>操作,一般来讲,无符号整数是逻辑右移,有符号整数是算术右移. 3.计算机中是用补码计算的,符号位0表示正,1表示负,正数的补码等于 ...

  3. Computer Systems A Programmer's Perspective

    阅读笔记 摘自 <深入理解计算机系统>仅记录了感兴趣的内容 计算机系统漫游 信息就是位+上下文 hello.c经历的四个阶段 shell命令解释器--运行程序 系统的硬件组成 操作系统管理 ...

  4. 《深入理解计算机系统》chapter2读书笔记

    2.1 2.1.6 bool代数简介 not ~ and & or | exclusive-or ^ 我们可以将四个bool运算扩展到位相量的运算 `a = [a_w-1, a_w-2, a_ ...

  5. 读深入理解计算机系统 - 第一章 计算机系统漫游 - 1.1 信息 = 位 + 上下文

    1.1 信息 = 位 + 上下文 先说一下位,计算机的最小单位,一个位可以取两个值1/0(高电平/低电平)代表两种状态(1个位=1bit). 但是世界事物千千万,无法用一个位来表示,怎么办呢? 某不知 ...

  6. 深入理解计算机系统——第九章 Virtual Memory

    深入理解计算机系统--第九章 Virtual Memory 9.1 Physical and Virtual Addressing 9.2 Address Spaces 9.3 VM as a Too ...

  7. 《深入理解计算机系统》第七章读书笔记

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

  8. 深入理解计算机系统9个重点笔记

    引言 深入理解计算机系统,对我来说是部大块头.说实话,我没有从头到尾完完整整的全部看完,而是选择性的看了一些我自认为重要的或感兴趣的章节,也从中获益良多,看清楚了计算机系统的一些本质东西或原理性的内容 ...

  9. 深入理解Magento – 第一章 – Magento强大的配置系统

    深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第一章 – Magento强大的配置系统 Magento的配置系统就像是Magento的心脏,支撑着Magento ...

最新文章

  1. python【蓝桥杯vip练习题库】BASIC-23芯片测试(统计)
  2. webpack入门(四)——webpack loader 和plugin
  3. SAP Spartacus PageMetaService 的单元测试
  4. [你必须知道的.NET]第十八回:对象创建始末(上)
  5. C++轻量级微服务_微服务的部署
  6. 提升效率小工具,我用30分钟就干完一天的活
  7. MySQL int类型的显示
  8. 17. 使用“swap技巧”除去多余得容量
  9. 透析Java本质-谁创建了对象,this是什么
  10. 微软账号登陆不上_微软待办(todo)如何跟Outlook任务同步?
  11. python 邮件抄送是什么意思_python 获取邮件中的发件人From、收件人To、抄送人Cc...
  12. 阿里2018届实习生内推经历
  13. 2017北邮计算机考研经验总结,北邮计算机专考研经验总结.docx
  14. 2022年电梯考试电梯检验员练习题及答案
  15. Java程序设计 基础知识
  16. 让孩子进阶中产的唯一路径是编程?
  17. IOS 笔记大全 (UI控件到网络协议)
  18. Python列表必会的基础操作
  19. 实验详解手工指定MPLS的LSP(Huawei设备)
  20. Java static与final详细讲解

热门文章

  1. Python基础知识(3)
  2. C# 运行时中的泛型
  3. 不解禁administrator账号的情况下以管理员身份运行bat文件
  4. 【mysql5.6】数据类型
  5. 在JSP中应用JavaBean
  6. POJ 1523 (割点+连通分量)
  7. 类继承和初始化类的执行顺序
  8. 你还认为中国没有桌面虚拟化核心技术?
  9. SVM与feature
  10. 心爱SEO博客开通了请光临百度