《深刻理解计算机系统》学习总结(一)

1.1 信息就是位+上下文

  • 位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位
  • 位之上又有字节(byte) 8个位组成1个字
  • 计算机中储存信息用0和1(也就是位)来存储 但单独的位又没法达到存储信息的目的 只有连续的位才能达到存储的信息的目的 即位+上下文就是信息

1.2程序被其余程序翻译成不一样的程序

在用户端编写的程序都须要被其余程序翻译成不一样的格式来使计算机执行某种指令

例如hello程序shell

#include <stdio.h>

 int main()
 {
     printf("hello,world\n");
     return 0;
 }
复制代码

hello程序在计算机中通过一系列翻译最终获得一个可执行目标程序缓存

预处理器 编译器 汇编器 连接器一块儿构成编译系统

  • 预处理主要是处理一些宏定义,好比 #define、#include、#if 等。预处理的实现有不少种,有的编译器会在词法分析前先进行预处理,替换掉全部 # 开头的宏,而有的编译器则是在词法分析的过程当中进行预处理。当分析到 # 开头的单词时才进行替换。当文件被预处理后就会生成另外一个文件(即图片中hello.c预处理后生成hello.i)
  • 编译器降源程序代码编译为汇编语言进入汇编器
  • 汇编器将编译器生成的汇编语言程序翻译为机器语言指令 将指令打包打包成一种叫作可重复定位目标程序的文件,并将结果保存在hello.o中 (hello.o为二进制文件)
  • 连接阶段,程序调用标志C库里面的函数如‘printf’函数。‘printf’函数存在于一个名为printf.o的单独的预编译好的目标文件中。连接便是hello.o和print.o经过某种方式合并在一块儿,结果获得hello文件(可执行目标文件)

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

  • 优化程序性能
  • 理解连接是出现的错误
  • 避免安全漏铜

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

1.41系统的硬件成组成安全

  • 总线:贯穿整个系统的一组电子管道
  • I/O设备:即输入和输出设备
  • 主存:即咱们平时所说的运行内存
  • 处理器:中央处理单元(CPU)

1.42运行hello程序bash

  • shell从键盘上读取hello命令
  • shell执行一系列指令来使可执行hello文件从磁盘加载到主存
  • 处理器执行hello程序的main程序中的机器语言指令
  • 这些指令将字符串中的字节从主存复制到寄存器文件,再从寄存器文件中复制到显示设备

1.5高速缓存相当重要

  • 根据机械原理,较大的存储设备要比较小的存储设备运行得慢
  • 计算机运行快慢:磁盘<主存<处理器
  • 针对磁盘、主存、处理器之间的差别,设计了一种更小更快的存储设备,称为高速缓存,做为暂时的集结区域,存放处理器近期可能会须要的信息

1.6存储设备造成层次结构

存储器层次结构的主要思想是上一层的存储器做为低一层存储器的高速缓存并发

1.7操做系统管理硬件

  • 进程:进程是操做系统对一个正在运行的程序的一种抽象
  • 一个CPU看上去能够并发地处理多个进程,这是经过处理器在进程间切换来实现的
  • 操做系统实现这种交错执行的机制称为上下文切换
  • 线程:多个线程组成一个进程,每一个线程都运行在进程的上下文中,并共享同一的代码和全局数据
  • 虚拟内存:虚拟内存为一个抽象概念,它为每一个进程提供了一个假象,即每一个进程都在独占地使用主存
  • 文件:广义说,全部输出输入设备均可以成为文件(显示屏、键盘、鼠标)

1.8重要主题

Amdahl定律:当咱们对系统的某个部分加速时,其对系统总体性能的影响取决于该部分的重要性和加速程度函数

  • 并发:并发是指一个时间段内,有几个程序都在同一个CPU上运行,但任意一个时刻点上只有一个程序在处理机上运行。
  • 并行:并行是指一个时间段内,有几个程序都在几个CPU上运行,任意一个时刻点上,有多个程序在同时运行,而且多道程序之间互不干扰。
相关文章
相关标签/搜索