计算机系统漫游 —— 深入理解计算机系统笔记

计算机系统由硬件和系统软件组成

系统是硬件和软件相互交织的集合体

理解编译过程的目的

  • 优化程序性能
  • 理解链接时出现的错误
  • 避免安全漏洞

系统的硬件组成

总线:

贯穿系统的电子管道,携带信息字节并在各个部件间传递。
传送定长的字节块——字(Word).
字节长是一个基本的系统参数。如4个字节,8个字节

I/O 设备

输入/输出设备是系统与外部世界的联系通道。
每个I/O设备通过一个控制器或适配器与I/O总线相连。
控制器—>主板芯片组
适配器->主板插槽上的卡

主存

临时存储设备,用来存放程序和程序处理的数据
物理:DRAM
逻辑:线性字节数组

处理器 CPU

执行主存指令的引擎
不断执行指令

高速缓存

减少主存与CPU的直接数据访问
高速缓存用来存放近期可能会需要的信息
物理:SRAM

存储器层次结构

存储器
寄存器
L1
L2
L3
DRAM
SSD
HDD

从上倒下访问速度越来越慢

OS管理硬件

操作系统

OS: 应用程序与硬件之间的中间层

  • 防止硬件被应用程序滥用
  • 提供API来控制复杂的低级硬件设备
  • 通过进程、虚拟存储器、文件来实现应用程序与硬件之间的交互

进程

对正在运行的程序的一种抽象。
CPU一个核只能执行一个进程,当新的进程需要执行时,会进行上下文切换。

上下文: 操作系统保持跟踪进程运行情况所需的所有状态信息

线程

每个线程运行在进程的上下文中,共享同样的代码和全局数据。
多用于网络服务器并发处理请求。

虚拟存储器

给每个进程提供一层独占主存的抽象。

虚拟地址空间
内存虚拟内核存储器 OS内核
在运行时动态的扩展大小
共享库 共享代码库
在运行时动态的扩展大小
程序代码和数据 可执行文件

文件

字节序列
I/O设备都可以认为是文件。
网信也可以视为文件

并发和并行

Concurrency 并发

  • 计算机做的更多
  • 同时具有多个活动的系统

超线程,同时多线程,允许一个CPU执行多个控制流的技术,简单的说就是当A线程取数据的时候,B线程立马执行,在单个周期上进行判断应该执行那个线程,如果没有超线程技术,则需要在多个时钟周期内切换

Parallelism 并行

  • 计算机做的更快
  • 用并发时系统运行的更快
  • 可以在系统的多个层次上使用
  • 指令级并行
  • 单指令多数据并行

抽象

抽象时计算机领域的重要概念

文件对I/O抽象
虚拟存储器对程序存储器抽象
进程对运行的程序抽象
虚拟机对计算机的抽象

Hello World程序运行的过程

源文件通过编译系统经过如下步骤生成源程序
文本->预处理->编译->汇编-> 连接->源程序
.c -> .i -> .s -> o -> binary

通过Shell运行,程序加载到主存,从main开始执行,通过指令Hello World执行如下步骤显示到屏幕上
主存->寄存器->显示设备

源程序: 由0和1组成的位(bit)序列,8个位被组织成一组,为1个字节,每个字节表示程序中某个文本字符。

区分不同数据对象的唯一方法是根据这些数据对象的上下文

Shell: 命令行解释器

Compilation System

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 汇编语言:一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的...
    9ba348473cee阅读 1,965评论 0 0
  • 计算机系统是由硬件和软件系统组成的,它们共同工作来运行应用程序。作为程序员,也需要了解这些组件是如何工作的,以及这...
    knightaoko阅读 702评论 0 2
  • 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。 系统中的所有信息都是由一串位表示的,区分不同对象...
    长仙人阅读 275评论 0 0
  • 人越来越焦虑了。看着身边跟我们差不多的人,慢慢成为了我们追赶不上的对象,能不焦虑么。想买的买不起,想去的地方也去不...
    我家的牛阅读 249评论 0 4
  • 黎民,泛指普通百姓。 庶民,指一般的民众。 黎庶,指平民大众。 黎氓,亦作“ 黎萌 ”,泛指普通百姓。 黎首,泛指...
    西土瓦大神阅读 5,681评论 0 2