关于内存和空间的几件事

类型系统

大部分静态类型语言的类型在编译时检查,编译后的机器语言并没有类型概念,取而代之的是对某个内存地址的字节/字等操作。

初始化变量

一般来说,主动分配的在堆空间,全局与静态变量在堆空间。所以声明char c*='hello'同时占用了栈空间与堆空间。

栈、堆

机器语言层面只会操作内存地址与字,所以栈堆是库函数或者操作系统提供的一种抽象。

只声明结构体,会占用内存吗

描述信息会占用存储空间,但没有实例化不会占用内存空间。

高性能计算简要复习

1、概念

集群

PVP:Player VS Player PVP拥有多个高性能向量处理器,有向量寄存器和指令缓冲,不用高速缓存,共享内存。

SMP:对称多处理机,拥有多个完全相同处理器,共享内存,拥有高速缓存。

MPP:大规模并行处理机。有多个内存不共享的节点。

DSM:分布共享存储多处理机。虽然物理上独立,但逻辑上共享内存。

Cluster:每个节点拥有小于16个的处理器,由网络整合。(MPP和DSM用特别设计的网络,Cluster用普通网络)

Constellation:每个节点拥有大于等于16个处理器,由自定或普通网络整合。

存储模型

UMA:Uniform Memory Access,均匀存储访问模型。物理存储器被所有处理器共享(不位于处理器中),任意处理器访问任意内存单元时间相同,处理器可带高速缓存。

NUMA:非均匀存储访问模型。存储器分布在处理器中,因而访问不同存储空间时间不同,处理器可带高速缓存。

CC-NUMA:Coherent-Cache Not Uniform Memory Acess,高速缓存一致性非均匀存储访问模型。由多个SMP机器组成,基于目录保持高速缓存一致。实际上是DSM。由于高速缓存一致性,程序员无需特别分配数据。

COMA:Cache-Only Memory Access,全高速缓存存储访问,NUMA的特例,只有高速缓存组成的内存。

NORMA:No-Remote Memory Access,非远程存储访问模型。所有存储器私有,不支持远程访问存储器。

学科

HPC:高性能计算。并行计算、超级计算。

HPCC:高性能计算与通信。配合高速网络的使用。

Distribute Computing:分布式计算。比起性能更注重功能。

Cloud Computing:云计算。按需提供资源,使计算像电力一样提供。

2、SMP/MPP/Cluster比较

SMP使用共享变量(单地址空间),而MPP和Cluster依赖消息传递通信(多地址空间)。

SMP的访问模型是UMA,其他两者是NORMA。

SMP使用总线、交叉开关连接,其余两者用网络。

3、常用静态网络/动态网络/标准互联网

静态网络

节点度:节点最多连接几个节点。

对剖宽度:最少拆去多少条边能让网络只剩一半。

链路数:边数。

网络直径:任意两点之间最长距离(两点间如果有两个距离,距离短的才是距离)。

名称规模节点度网络直径对剖宽度对称链路数
线性阵列N2N-11/N-1
环形N2双向N/22N
二叉树N32(logN - 1)1N-1

动态网络

不懂这一块。w和f是什么意思啊。

总线系统:硬件复杂度n+w,每个处理器宽带wf/n到wf之间。

多级互联网络:w*n*(logk n),每个处理器宽带wf。

交叉开关:硬件复杂度w*n^2,每个处理器宽带wf。

标准互联网

HiPPI、SCI、Myrinet、Ethernet、Infiniband

(更多…)

Hashcat使用秘籍

hashcat   /Users/guo/Downloads/file/file3.txt  -a 3 -m 20  -O  -i --increment-max 6 --increment-min 6  -o /Users/guo/Downloads/file/f3.txt -1 '?l?d?u' '?1?1?1?1?1?1'  

-a 3 是掩码暴力破解模式

-m 20 salt.md5的格式

-i 规定长度

-1是用户自定义匹配模式 ldu包括了大小写字母和数字

?1?1... 是匹配模式,这里6位数都可能是大小写字母和数字