2018-2019-1 20189206 《深入理解计算机系统》第一章学习笔记
2018-2019-1 20189206 《深入理解计算机系统》第一周学习总结
教材学习内容总结
第一章 计算机系统漫游
读后感
第一章给我的感觉就是将一个大概而具体的过程展现给我们,同时,每个步骤的更加具体的细节部分也是之后每一章的内容。一方面讲解了计算机系统的构成、文件在计算机中的存储等问题。通过这一章的概述在看书的时候能够把这些内容结合本科阶段学习的《微机原理与接口技术》大致联系起来,脑子中也有了相关的联系。同时也积累了以前没有注意过的细节。现将知识点总结如下,方便以后查看复习。
信息的存储
- 文本文件 是指只由ASCII码构成的文件称为文本文件,其他文件都称为二进制文件
- 系统中的信息 系统中的所有信息都是由一串比特表示的。区分它们的方式是这些数据对象的上下文。
程序的编译过程
为了在系统中运行.c程序,每条C语句都必须要转化为低级的机器语言指令,然后这些指令按照 可执行目标程序 的格式打包好,以二进制磁盘文件的形式存放起来。
- inux系统中我们刚刚学过 GCC 指令用于生成驱动文件。
- 编译系统 翻译过程可以分为四个阶段,执行四个阶段的程序称为 编译系统
- 预处理器 预处理阶段,主要工作将头文件直接插入文本中 hello.i
- 编译器 将插入头文件的.i文件翻译成文本文件.s 包含一个汇编语言程序
- 汇编器 将.s翻译成机器语言指令,将结果保存在hello.o二进制文件中
- 链接器 将程序中调用了C语言函数库的函数链接到一个单独预编译好了的目标文件中,得到了可执行的目标文件。
系统的硬件组成
- 总线
- 总线是贯穿整个系统的一组电子管道,它携带信息字节并负责在各个部件间传递。通常总线被设计成传送定长的字节块,也就是字。字的字节数是一个基本的系统参数,现在一般是32位(4个字节)或64位(8个字节)。
- I/O设备
- 是系统与外部世界的联系通道。(例如:键盘、鼠标、显示器、磁盘驱动器)每个I/O设备都通过控制器或适配器与I/O总线相连。
- 控制器是I/O设备本身或主板上的芯片组
- 控制器是在主板插槽上的卡
- 是系统与外部世界的联系通道。(例如:键盘、鼠标、显示器、磁盘驱动器)每个I/O设备都通过控制器或适配器与I/O总线相连。
- 主存
- 主存是一个临时的存储设备,在执行程序时用来存放程序和程序处理的数据。
- 处理器
- 又称为CPU,处理器的核心是大小为一个字的存储设备程序计数器,一直指向要执行的机器语言。(注:执行完一条指令后跳转到的下一条指令不一定与内存中刚刚执行的指令相邻)
- 寄存器文件 由一些单个字长的寄存器组成
- ALU算数逻辑单元
高速缓存的作用
较大的存储设备要比较小的存储设备运行的慢
为了提高程序运行的时间,采用更小更快的存储设备,能有有效提高速率,高速缓存就是存放近期可能会需要处理的数据,作为暂时的集结区域。
操作系统管理硬件
- 操作系统 可以理解为应用程序和硬件之间插入的一层软件,所有应用程序对硬件的操作都必须通过操作系统。
- 进程 是操作系统对一个正在运行的程序的一种抽象,一个系统可以同时运行多个进程,每个进程都好像在独占硬件。(并发运行 是指一个进程的指令和另一个进程的指令交错执行)操作系统实现这种交错执行的机制称为上下文切换
- 上下文 包含了操作系统保持跟踪进程运行所需的所有状态信息。
- 从一个进程到另一个进程的转换是由操作系统内核管理的,内核是操作系统代码常驻主存部分,它是系统管理全部进程所用代码和数据结构的集合
— 线程 一个进程可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中。多线程比多进程更容易共享数据,同时线程比进程更高效。
- 虚拟内存 抽象概念,提供了每个进程独占地使用主存的假象。每个进程看到的内存都是一致的,称为虚拟地址空间。
- 基本思想 把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。
- 文件 就是字节序列
重要概念
- amdahl定律 想要显著加速整个系统,必须提升全系统中相当大的部分的速度。
- 并发和并行
- 并发 指一个同时具有多个活动的系统
- 并行 利用并发使一个系统运行的更快
- 线程级并发
- 使用线程,可以在一个进程中执行多个控制流
- 指令级并行
- 现代处理器可以同时执行多条指令的属性称为指令级并行
- 单指令、多数据并行
- 允许一条指令产生多个可以并行执行的操作
- 抽象
- 文件是对I/O设备的抽象
- 虚拟内存是对程序存储器的抽象(主存和磁盘)
- 进程是对正在运行的程序的抽象(处理器、主存和磁盘)
- 虚拟机是对整个计算机的抽象
教材学习中的问题和解决过程
问题:内核和CPU是什么关系?
在看第一章的时候我同时看了《linux内核设计与实现》这本书,第一章讲到内核是操作系统的内在核心,一个应用程序执行系统调用时,称为应用程序运行在内核空间,内核称为运行于进程上下文,第一章中讲到上下文是操作系统实现进程交错的机制,我就思考二者之间的联系。在网上看了博客和百度后知道,内核是操作系统的核心属于软件部分,而CPU是实体属于硬件。
我们给操作系统发出指令,操作系统通过内核解析指令然后指示CPU怎样运作,然后回收CPU运算后的结果再编译成我们人看的懂的图形
问题:并发和并行