《深入理解计算机系统:计算机系统漫游》读书笔记

《深入理解计算机系统:第一章》读书笔记

  1. 目录
    1. 一个C语言程序的产生
      1. 源码
      2. 编译
    2. 计算机体系结构
      1. 总线
      2. I/O设备
      3. 主存
      4. CPU处理器
    3. C程序的执行
    4. 存储设备层次结构
      1. 高速缓存
        1. 空间局部性
        2. 时间局部性
      2. 存储设备层次结构
    5. 操作系统的抽象
      1. 基本功能
      2. 抽象
      3. 进程与线程
      4. 并发与并行
1、一个C语言程序的产生

之前在 走近计算机,走进二进制,爪哇国的诞生讲到一个java程序是怎么执行的,然而依然是知其然,而不知其所以然。今天特意来用C语言写一个程序,看看它是怎么在计算机上跑起来的。

  1. 源码 hello.c
#include <stdio.h>

int main(){
	printf("%s\n", "Hello,world!");
}
  1. 编译
    1. 源代码通过编译器编译得到目标程序
      [外链图片转存失败(img-MwoNR2fY-1567236530723)(evernotecid://48331671-1E5F-4258-9199-3A4965889F33/appyinxiangcom/21334416/ENResource/p556)]
    2. 这个时候会在桌面生成目标程序hello【可直接运行】
      在这里插入图片描述
    3. 目标程序文件里面都是二进制
      在这里插入图片描述
    4. 编译系统
      在这里插入图片描述
    5. 编译时分工是这样的 (参考来的,链接在下面)
      在这里插入图片描述
2、计算机体系结构

  1. 总线
    1. 总线是贯穿整个系统的一组电子管道,它携带信息字节并负责在各个部件间传递。
    2. 按照部件之间信息传递划分:系统总线,存储器总线,I/O总线
    3. 按照功能划分:控制总线、数据总线、地址总线
  2. I/O设备
    1. 输入/输出(I/O)设备是系统与外部世界的联系通道
    2. 一共有五种:鼠标、键盘、显示器、磁盘、扩展槽(常见的网卡)
  3. 主存
    1. 主存是一个临时存储设备,在处理器执行程序是,用来存放程序和程序处理的数据。
    2. 除去高速缓存使用SRAM外,主存一般使用的是DRAM硬件技术
  4. CPU处理器
    1. 中央处理单元(CPU),简称处理器,是解释(或执行)存储在主存中指令的引擎。
    2. 由三部分组成:控制器,运算器和寄存器
  5. 体系结构图
    在这里插入图片描述
3、目标程序的执行

现在我们目标程序有了,那么怎么执行呢,从用户输入字符到打印结果到屏幕上,计算机到底经历了什么?
[外链图片转存失败(img-Yath635v-1567236530729)(evernotecid://48331671-1E5F-4258-9199-3A4965889F33/appyinxiangcom/21334416/ENResource/p572)]
执行时对话是这样的(参考来的,链接在下面)
在这里插入图片描述

4、存储设备层次结构

从上面的过程可以看到,hello程序初始时在磁盘上,当程序加载时,它又被复制到主存中,当处理器运行程序时,指令又从主存复制到处理器,当程序执行完时,“hello,world”又得复制回显卡,这一系列过程中都涉及数据的复制,如果复制的速度跟不上,那么计算机就可能会瘫痪。

我们知道,寄存器与CPU信息传递速度是主存的数百倍级别,是磁盘的百万倍级别,可是,寄存器能存的数据太小,并且同样大小存储造价比磁盘贵得不知道多少个数量级。为了提升计算机性能同时,又不想有太多的造价负担,高速缓存应运而生。

  1. 高速缓存的原理
    1. 空间局部性
      • 就是说内存上如果某一地址空间的数据频繁的被CPU访问,那么其旁边的存储单元也有可能被访问。

    2. 时间局部性
      • 在某一段时间内,内存上如果某一地址空间的数据频繁的被CPU访问,那么在未来很可能会再次访问。

  2. 存储设备层次结构
    在这里插入图片描述
5、操作系统的抽象

  1. 基本功能

    1. 防止硬件被失控的应用程序滥用
    2. 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备
  2. 抽象

    文件是对I/O设备的抽象,虚拟存储器是对主存和磁盘I/O设备的抽象,进程则是对处理器、主存和I/O设备的抽象,虚拟机,提供对整个计算机(包括操作系统、处理器和程序)的抽象。

    结构图:
    在这里插入图片描述

  3. 进程与线程

    1. 进程
      1. 进程是操作系统对一个正在运行的程序一种抽象.
      2. 在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件.
      3. 而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的,操作系统实现这种交错执行的机制称为上下文切换。
      4. 实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。
    2. 线程
      1. 一个进程可以包含多个线程,但至少包含一个线程。
      2. 书上是这样说的,在现代系统中,一个进程实际上是可以由多个吗称为线程的执行单元,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
      3. 并且多线程之间比多进程之间更容易共享数据,线程一般来说比进程更高效。
  4. 并发与并行

    1. 并发
      1. 使计算机做得更多
      2. 单核处理器在某时间段(宏观上)处理多个任务。
      3. 注,是指宏观上(即某一时间段),其实从微观看来(在任何一个时刻),单处理器系统都只能执行一个进程的代码。
    2. 并行
      1. 使计算机处理的更快
      2. 同一个进程里面的任务可以在多个处理器上运行。
    3. 并发与并行对比图
      在这里插入图片描述

参考资料:

一位大佬的学习笔记
计算机工作原理
深入理解计算机系统(原书第二版)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值