深入理解计算机系统:几个重要概念

本文详细探讨了计算机系统的执行程序过程,包括编译系统的工作流程和程序计数器的角色。此外,介绍了存储器层次结构和局部性原理。接着,概述了操作系统抽象,如进程、线程和虚拟存储器的概念,以及文件作为I/O设备的抽象。最后,讨论了信息存储中的字和无符号数问题,以及整数乘法和除法的优化技巧,特别是涉及2的幂的运算。
摘要由CSDN通过智能技术生成

执行程序系统

编译系统

  • 从源代码文本文件到可执行目标文件的转化由编译系统(compilation system)完成
    • 预处理器(cpp):hello.c —> hello.i
      • 根据以字符 # 开头的指令修改原始程序
    • 编译器(cc1):hello.i —> hello.s
      • 将预处理之后的文本文件翻译为汇编语言程序(依然是文本文件)
    • 汇编器(as):hello.s —> hello.o
      • 将汇编语言程序翻译成一系列机器语言指令,然后将机器语言指令打包成可重定位目标程序
    • 链接器(ld):hello.o + printf.o —> hello
      • 将程序用到的其他模块与当前程序链接到一起,最终得到可执行目标文件

程序计数器 PC

  • 程序计数器为一个字长(64 位系统中是 8 个字节)的存储设备,是 CPU 的核心
  • 在任何时刻,PC 都指向内存中的某条机器语言指令,也就是说,PC 中保存着一条机器语言指令的地址
  • CPU 不断地执行 PC 指向的指令,然后更新 PC,使其指向下一条指令(前后指令不一定相邻)

存储器层次结构

  • L0:CPU 寄存器
  • L1 ~ L3:L1 ~ L3 高速缓存(SRAM,静态随机访问存储器)
  • L4:主存(DRAM,动态随机访问存储器)
  • L5:本地磁盘
  • L6:远程存储设备(分布式文件系统、Web 服务器)

局部性原理

  • 程序具有访问局部区域里的数据的趋势

操作系统抽象

进程:对处理器、主存和 I/O 设备的抽象

  • 处理器在多个进程间快速切换,称为上下文切换
    • 单处理器在任一时刻只能执行一个进程的代码
    • 当操作系统把控制权从一个进程转移到另一个进程时,便进行上下文切换:
      • 保存当前进程的上下文
      • 恢复新进程的上下文
      • 将控制权转移到新进程

线程

  • 一个进程可以由多个线程组成,每个线程都运行在进程的上下文中,并共享相同的代码和全局数据
  • 线程一般比进程高效,多线程之间共享数据也比进程之间容易

虚拟存储器:对主存和磁盘 I/O 的抽象

  • 每个进程使用专有的虚拟地址空间,从而形成每个进程独占主存的假象
  • 每个进程看到的虚拟地址空间由一组准确定义的区构成,从低地址到高地址依次为:
    • 程序代码和数据
    • 运行时堆
    • 共享库
    • 用户栈
    • 内核虚拟存储器

文件:对 I/O 设备的抽象

  • 文件就是字节序列,别无其他
  • 每个 I/O 设备都可视为文件
  • 系统的所有输入输出都通过一组 Unix I/O 系统函数调用读写文件来实现

信息存储

  • 任一计算机的字长指明了整数和指针数据的标称大小
  • 字长决定了虚拟地址空间的最大大小,对于字长为 w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值