《深入理解计算机系统》章节一总结

信息就是位+上下文

  • 区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。
  • 比如,在不同的上下文中,一个同样的字节可能表示一个整数、浮点数、字符串或者机器指令。

程序运行流程

#include <stdio.h>

int main()
{
    printf("hello, world\n");
    return 0;
}
  1. 图解
    在这里插入图片描述

  2. 运行可执行文件

    • shell程序等待输入
    • 将命令读入寄存器,再把它放到内存中
    • 敲击回车,shell程序知道我们已经结束了命令输入
    • 将代码从磁盘复制到主存
    • 通过图形适配器显示’hello, world\n’

高速缓存

  • 读取速度

    寄存器 >> 主存 >> 磁盘

  • 针对读取差异,高速缓存存储器应运而生

    访问速度几乎与寄存器一样,主要缓存常用信息,避免每次都从主存中取

操作系统管理硬件

在这里插入图片描述

操作系统两个基本功能:

  1. 防止硬件被失控的应用程序乱用
  2. 想应用程序提供简单一致的机制来控制复杂而又大不相同的硬件设备

进程

  1. 定义

    进程是对一种正在运行的程序的抽象。

线程

  1. 与进程的关系

    一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中。

  2. 重要性

    多线程之间比多进程之间更容易共享数据,线程一般来说都比进程更高效。

虚拟内存

这是一个抽象概念,它为每个进程提供了一个家乡,即每个进程都在独占地使用主存。在Linux中,地址空间最上面的区域是保留给操作系统中的代码和数据的,为所有进程公用,对用户不透明,地址空间的底部区域存放用户进程定义的代码和数据。

Ammdahl 定律

若系统执行某应用程序需要的时间为 Told ,假设系统某部分所需执行时间与该时间的比例为α,二改部分性能提升比例为k,即该部分初始所需时间为 αTold ,现在所需时间为 (αTold)/k,因此,总的执行时间为:

Tnew = (1-α) Told + ((αTold)/k) = Told[(1-α) + α/k]

由此,可以计算加速比为 S = Told / Tnew

1 ( 1 − α ) + α / k \frac{1}{ (1-α) + α/k } (1α)+α/k1

并发和并行

  1. 并发

    一个同时具有多个活动的系统

  2. 并行

    用并发来使一个系统运行得更快

    并行可以在计算机系统的多个抽象层次上运用

    • 线程级并发
    • 指令集并发
    • 单指令、多数据并行

计算机系统中的抽象在这里插入图片描述

练习

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值