《深入理解计算机系统》第一章

该专栏是读《深入理解计算机系统》第三版后的总结和思考——基于个人知识背景和内容偏好。

一、概述

  1. 计算机系统=硬件+软件,计算机系统用程序处理信息,而信息就是bits+context。
  2. 程序的诞生:C源程序需要编译系统的预处理、编译、汇编、链接才编程器可执行文件。简单理解下,预处理是将宏替换为代码,编译是将C转成汇编代码,汇编是将汇编代码转成机器码的二进制文件,最后链接将被调用的模块与之合并。
  3. 程序的执行:我们在命令行窗口输入一个命令按回车,计算机系统大致这么运行——shell程序将键盘输入内容读入寄存器,然后存到内存,再刷写到图形适配器,我们就看到了它。按了回车之后,shell程序查找磁盘中该命令对应的指令并加载到内存,然后cpu执行这些指令。最后执行得到的结果从内存写到图形适配器,我们就看到了命令执行结果。

二、计算机系统各概念是对软硬件的抽象

  • IO设备->文件
  • IO设备+主存->虚拟内存
  • IO设备+主存+处理器->进程
  • 处理器->指令集
  • IO设备+主存+处理器+OS->虚拟机
  1. 操作系统OS:管理硬件,提供统一的操作接口。
  2. 进程:OS对正在运行的程序的抽象,操作系统可以交替运行不同进程一小段时间,实现多进程的并发。各进程运行中的状态称为上下文,交替运行需要CPU切换进程相应的状态,称上下文切换。
  3. 线程:在进程的基础上增加了状态共享,让切换更轻量级。线程也可以有自己的状态,比如java中的ThreadLocal。
  4. 虚拟内存:对内存的抽象,让每个进程都可以像独享内存空间一样使用内存。包括:
    a. 程序代码、数据
    b. 堆,占用的内存大小可以动态变化
    c. 共享库,类似a,但是共享
    d. 栈,用于函数调用时存放函数地址,动态的
    e. 内核虚拟内存,内核保留的,应用程序不能直接访问
  5. 文件:bits或字节序列,磁盘、显示器、键盘等都是文件设备。
  6. 网络:系统间通信的媒介。

三、关于性能

  1. Amdahl定律:对系统某个部分加速,其影响跟该部分在系统占比和加速大小有关。想要加速多,就得加速系统的大部分
  2. 并行有三个层次:线程级的超线程,指令级并行,SIMD
  3. 数据在不同速度设备之间来回复制,慢的设备很容易成为性能瓶颈。高速缓存就是用来解决这个问题的:将比内存更快的SRAM放到CPU与内存之间,存放CPU最近可能会用到的内存中的数据,优先供CPU取用,以提高数据访问速率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值