OS
- 关于内存
> 计算机分级存储 计算机的存储有一个特点:速度快的存储设备,通常容量小,价格贵。而容量大,价格便宜的存储设备一般存储速度会比较慢。 计算机的分级存储从快到慢: CPU寄存器 -> CPU cache -> 内存RAM -> SSD -> HDD | L1 L2 L3 cache:cache的存在满足局部性原理 时间局部性,即一个刚刚被访问的数据,有可能很快再次被访问。放在cache中非常划算,可以防止大量未命中 空间局限性:一个数据被访问,他周围的数据也有可能被访问,cpu …
- 关于锁
> 锁 竞态条件是指当多个线程同时访问和修改同一块未被保护的内存区域的时候,最终结果依赖于线程的执行顺序,可能导致数据的不一致 为了保护共享资源,确保共享资源同一时间只有一个线程可以修改,用锁来保护。锁分很多类型 自旋锁 对于一个用自旋锁保护的资源,线程抢锁失败之后,会忙等待,直到它拿到锁。 自旋锁不会主动产生上下文切换,是在用户态进行由硬件封装的原子指令,包含 检查锁的状态 将锁设置为当前线程持有 两个步骤。忙等待可以用while循环实现,最好用pause实现,可以减少循环等待时候的耗电量。 自旋 …
- 关于操作系统
> 进程和线程 进程线程的区别 进程是操作系统分配资源的最小单位,线程是操作系统调度的最小单位 每个进程有自己独立的上下文和代码,切换开销较大。同一个进程内的所有线程有共有的资源(虚拟内存空间,打开的文件),但是有自己独立的寄存器和栈(上下文),线程上下文切换的开销小。因为线程不需要切换完整的虚拟内存空间 进程中某个线程崩溃,可能导致整个进程崩溃。进程的子进5程崩溃不影响其他进程 系统会为每个进程分配内存,但不会为线程分配。线程可以使用自己所在的进程的资源 为什么要有进程和线程 进程和线程没有合二为 …