跳至主要內容

计算机操作单位专题

LincZero大约 2 分钟

计算机操作单位专题

操作单位

本章中的 “单位” 并不是指 字节比特 这种基本单位,而是侧重于指计算机系统进行某一操作的基本单位

这些操作可以是 “读写/传输拷贝/创建释放/修改”,研究这些操作的最小单位

常见的操作单位

总结如下:

  • 任务单位
    • 线程: 系统调度的最小单位、并发执行的最小单位
    • 进程: 资源分配的最小单位
  • 存储单位
    • 比特:存储的最小单位,但基本不能单独操作。也有认为存储的基本单位是字节的
    • 字节寻址的最小单位。**CPU访问?**的最小单位。在抽象层次上可修改,但物理上很少单独操作
    • CPU与内存数据交换的最小单位。与之相关的:系统位数 (64bit/32bit)、结构体的字节对齐 (8Byte/4Byte )
    • 块/CacheLineCache与内存进行数据传输/交换的最小单位、缓存的最小传输基本单位,利用了空间局部性 (通常为64Byte/128Byte等)
    • 虚拟内存和物理内存映射的最小单位,页面指环、虚拟内存最小分配和释放单位(其实字节才是内存中最小的分配和释放单位,但操作系统为了提高效率和解决碎片问题,通常会以更大的单位进行内存分配。当一个进程申请内存时,操作系统会分配给它若干个页。即使你只申请了一个字节,操作系统也会分配给你一个完整的页。这有可能产生内存碎片)
    • :……

还有一些非计算机的,可能是框架或库的。其实原理都是想通的

  • :MySQL数据库记录的最小单位
  • :MySQL数据库的读写的最小单位、内存和磁盘进行数据交换的最小单位 (默认16KB),若以为单位效率非常低
  • :MySQL为某个索引分配空间的单位分配(1MB,连续的 64 个 (16KB的) 页会被划为一个区)

共同点、总结、启发

  • 概念
    • 当存在操作OA的最小单位UA时,可能存在一些操作OB的最小单位UB,而单位UB是单位UA的数倍。 即有时一些操作,出于某种目的会操作一个更大的单位而非小单位。
  • 作用(为什么要这样做)
    1. 减少操作OB的次数:大部分都属于这种
    2. 利用空间局部性或空间相邻性原理:例如 CacheLine、MySQL的索引空间以区为单位。方便检查上下文和顺序I/O
    3. 可直接处理一个大单位:例如字、处理大单位与小单位相比没额外的性能损耗