前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解计算机系统 第一章 笔记

深入理解计算机系统 第一章 笔记

作者头像
MashiroT
发布2022-10-28 08:51:58
3050
发布2022-10-28 08:51:58
举报
文章被收录于专栏:MashiroのBlog

深入理解计算机系统 笔记

第一章 计算机系统漫游

信息就是位 + 上下文

位 = bit 8位 = 8bit = 1byte = 1字节

程序被其他程序翻译成不同的格式

  • 源程序 hello.c -> 预处理器 (cpp)
  • hello.i -> 编译器 (ccl)
  • hello.s -> 汇编器 (as)
  • hello.o (bin)
  • printf.o (bin)
  • ... -> 链接器 (ld)
  • hello可执行目标程序 (bin)
预处理阶段

读取源程序的头文件的内容,插入程序文本,得到另一个C程序 hello.i

编译阶段

将程序翻译成汇编语言,包含程序main的定义,hello.i -> hello.s

汇编阶段

将汇编语言翻译成机器语言指令,并将指令打包成 可重定位目标程序,hello.s -> hello.o (bin)

链接阶

程序中调用的函数存在于标准C库中,而该函数存在于单独预编译好的目标文件中 链接器负责将这类文件合并到我们的程序中,之后得到 可执行目标文件

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

不要教编译器优化代码

系统的硬件组成

  • 总线
  • I/O设备
  • 主存 (内存)
  • 处理器
总线

贯穿整个系统的电子管道,负责在各个部件之间传递信息字节。 总线被设计成传送定长的字节块,也就是 字长是操作系统的基本参数: 8位 = 字节 16位 = 字 32位 = 双字 64位 = 四字

I/O设备

I/O设备时系统与外部世界的联系通道。 每个I/O设备都通过一个控制器或适配器与I/O总线相连,两者的区别在于封装方式的不同。 控制器是I/O设备本身或主板的芯片组;适配器是插在主板上的卡。

主存

主存由DRAM芯片组成 逻辑上可看成线性的字节数组,没个字节都有唯一的地址 (数组索引)

处理器

CPU 是解释或执行储存在主存中指令的引擎。 其核心是一个大小为一个字的 寄存器 ,称为 程序计数器 (PC) PC指向主存中含有该条指令的地址。 从通电开始到断电技术,处理器一直在不断地执行PC指向的指令,再更新PC指向的地址。 处理器按照指令执行模型来操作,这个模型由 指令集架构 决定。

解释或执行指令的操作围绕着 主存,寄存器文件和算数/逻辑单元 (ALU)

高速缓存

现代处理器主要分为 L1, L2, L3 三级缓存,而 L0 指的是CPU寄存器。速度逐级减少。

进程

进程是操作系统对一个正在运行的程序的一种抽象。 在一个系统上可以同时运行多个进程,而每个进程都好像在独占硬件。 并发 是说一个进程的指令和另一个进程的指令时交错执行的。

无论在单核还是多核系统中,一个CPU看上去都是在并发的执行多个进程,这是通过处理器在进程间的切换来实现的。 操作系统实现这种交错执行的机制成为 上下文切换

上下文切换

当系统决定要把控制权从当前进程转移到某个新进程时,就会执行 上下文切换 即 保存当前进程的上下文、恢复新进程的上下文、将控制权转移到新进程,新进程会从它上次停止的地方开始。

上下文切换的操作是由操作系统的 内核管理的 内核不是独立的进程,它是系统管理全部进程所用代码和数据结构的集合

线程

在现代操作系统中,一个进程实际上可以由多个称为 线程 的执行单元组成

虚拟内存

虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在 独占主存,每个进程看到的内存都是一致的,称为 虚拟地址空间

虚拟内存的进本思想是把一个进程虚拟内存的内容存储在硬盘上,然后用主存作为高速缓存

虚拟地址空间
程序代码和数据

对所有进程来说,代码是从同一固定地址开始 代码和数据区在进程开始时就被置顶了大小

堆可以在进程运行时动态地拓展和收缩

共享库

存放C标准库之类的共享库代码和数据的区域

编译器用栈来实现函数调用,栈在程序执行期间可以动态的拓展和收缩 特别的,每当我们调用一个函数时,栈就会增长;从一个函数返回时,栈就会收缩 注:方法的压栈和弹栈

内核虚拟内存

地址顶部空间区域是为内核保留的 不允许应用程序读写或直接调用内核代码定义的函数,相反的,应该通过调用内核,通过内核来执行函数

Amdahl定律

S=\frac{1}{(1-\alpha)+\alpha/k}

当我们对系统的某个部分加速时,其对系统整体性能得影响取决于该部分的重要性和加速程度。 想要显著加速整个系统,必须提升全系统中相当大的部分的速度。

并发和并行

并发

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

并行

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

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

计算机系统中的抽象

  • 文件 - I/O设备的抽象
  • 虚拟内存 - 程序存储器的抽象
  • 进程 - 正在运行的程序的抽象
  • 虚拟机 - 整个计算机的抽象
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 10 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 深入理解计算机系统 笔记
    • 第一章 计算机系统漫游
      • 信息就是位 + 上下文
      • 程序被其他程序翻译成不同的格式
      • 了解编译系统如何工作是大有益处的
      • 系统的硬件组成
      • 高速缓存
      • 进程
      • 线程
      • 虚拟内存
      • Amdahl定律
      • 并发和并行
      • 计算机系统中的抽象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档