Coding,the witchery of the real world

0%

专业课拾遗

排序的一些说明

image-20191215193056423

img

计数排序即对各个数计数然后取出来成一个列表,其中k代表桶的个数

img

CMM/CMMI

image-20191215204122666

内存分块

image-20191216130607801

image-20191216130633107

流水线的局限性

  • 不一致的划分
  • 流水线过深,收益反而下降
    • 考虑到每个阶段的延迟

几种存储

(RAS Row Access Strobe||CAS Column Access Strobe)

SRAM Static Random-Access Memory

DRAM Dynamic Random-Access Memory

PROM Programmable Read-Only Memory只能被编程一次

EPROM Erasable Programmable Read-Only Memory

EEPROM Electric~~

库打桩

编译时打桩

链接时打桩

运行时打桩

非本地跳转

setjmp(buf)获取longjmp(buf,num)中num的值,实现跳转,也可以配合switch做异常处理

页表

VPO==PPO

VPN中的TLBT为标记位,TLBI为有效位,去找PPN,找到即生成PPN+PPO的物理地址

找不到就要去查询页表了,看是几级页表,对VPN进行划分,一级一级查询下去

空闲链表

隐式空闲链表 头部大小字段隐含连接

优点简单,缺点开销与堆中已分配块和空闲块的总数呈线性关系

etc.

显式空闲链表 按地址排序的首次适配比LIFO排序的首次适配有更高的内存利用率,接近最佳适配利用率

缺点:空闲块必须足够大,包含所有需要的指针,头部和可能的脚部。。导致更大的最小块大小提高内部碎片的程度

分类空闲链表

  • 简单分离存储
    • 大小相等的块集合
  • 分离适配
    • 对合适的块(可选的)分割,剩余的合并回去
    • 首次适配搜索内存利用率近似对整个堆的最佳适配搜索内存利用率
  • 伙伴系统
    • 分配2^k大小的块,二分分割
    • 可能有显著的内存碎片
    • 不适合通用场景,但对于特定应用的工作场景(固定二次幂)就非常有吸引力了

万物皆是IO