1.32 位和 64 位 CPU 最主要区别在于⼀次能计算多少字节数据: 32位一次4字节。64位一次8字节,称为CPU位宽 CPU 的位宽越高,一次能读取的内存指令越多
22.CPU 的硬件参数都会有 GHz 这个参数,⽐如⼀个 1 GHz 的 CPU,指的是时钟频率是 1 G,代表着 1 秒会产⽣ 1G 次数的脉冲信号。这个参数越高越好,超频指的就是把 CPU 内部的时钟给调快了,于是 CPU ⼯作速度就变快了,但是也是有代价的,CPU 跑的越快,散热的压⼒就会越⼤,CPU 会很容易奔溃。
3.地址总线并不是只有一条,有多少条线路就有多少位宽,如果地址总线只有 1 条,那⼀次只能操作 2 个内存地址,如果想要 CPU 操作 4G 的内存,那么就需要 32 条地址总线,因为 2 ^ 32 = 4G 。线路位宽就是32
4.CPU 的位宽最好不要⼩于线路位宽,因为 32位 CPU ⼀次最多只能操作 32 位宽的地址总线和数据总线。所以32 位 CPU 最⼤只能操作 4GB 内存,就算你装了 8 GB 内存条,也没⽤。
并不是说CPU的位宽,越高越好。如果计算的数额不超过 32 位数字的情况下,32 位和 64 位 CPU 之间没什么区别的,只有当计算超过 32 位数字的情况下,64 位的优势才能体现出来。
5.CPU的多个核共用L3,多个CPU共用内存,L1和L2是每个核心都有的
6.CPU 并不会直接和每⼀种存储器设备直接打交道,⽽是每⼀种存储器设备只和它相邻的存储器设备打交道
7.内核具有很⾼的权限,可以控制 cpu、内存、硬盘等硬件,⽽应⽤程序具有的权限很⼩,因此⼤多数操作系统,把内存分成了两个区域。⽤户空间的代码只能访问⼀个局部的内存空间,⽽内核空间的代码可以访问所有内存空间。
8.虚拟内存管理的操作系统中,通常会把阻塞状态的进程的物理内存空间换出到硬盘,等需要再次运⾏的时候,再从硬盘换⼊到物理内存。
9.每个进程的⽤户地址空间都是独⽴的,⼀般⽽⾔是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。
互斥锁加锁失败后,线程会释放 CPU ,给其他线程; ⾃旋锁加锁失败后,线程会忙等待,直到它拿到锁;
10.当加锁失败时,互斥锁⽤「线程切换」来应对,⾃旋锁则⽤「忙等待」来应对。
11.select 实现多路复⽤的⽅式是,将已连接的 Socket 都放到⼀个⽂件描述符集合,然后调⽤select 函数将⽂件描述符集合拷⻉到内核⾥,通过遍历⽂件描述符集合的⽅式,当检查到有事件产⽣后,将此 Socket 标记为可读或可写, 接着再把整个⽂件描述符集合拷⻉回⽤户态⾥,然后⽤户态还需要再通过遍历的⽅法找到可读或可写的 Socket,然后再对其处理。