程序员的自我修养-读书笔记(1)

1. 温故而知新

1.2万变不离其中

三个核心部件:CPU,内存,I/O控制芯片

北桥芯片(PCI 桥):协调CPU,内存,高速图形设备。PCI总线之后又有AGP, PCI express

南桥芯片(ISA 桥):协调USB,键盘,鼠标

 

 

1.4 不要让CPU打盹

分时系统:W95, mac os x之前的系统

多任务:unix,linux,win NT

2) Windows中,图形硬件抽象成了GDI, 多媒体设备抽象为DirectX, 磁盘为文件

3)硬盘的基本存储单位为扇区,比如,一个硬盘2个盘片,就是4个盘面,每个盘面多个磁道(同心圆),每个磁道多个扇区。

4)VA到物理地址PA之间的映射靠硬件MMU实现

1.6 众人拾柴火焰高

1) 线程组成:线程ID,PC,寄存器,堆栈

2)当线程数<=CPU数,线程才是真正地并发

3)线程核心三状态:运行,就绪,等待

4)windows有明显的线程进程概念,而linux只有task(单线程的进程)

5)线程同步:

     信号量(二元和多元):可以A线程获取,B线程释放

     互斥量:同一个线程获取和释放

     临界区:只能本线程使用

     读写锁:上面三种效率低(如频繁读取,偶尔写入),采用共享或独占方式

 

6)过度优化可能导致多线程不能同步(如在寄存器中不写回内存,CPU调整代码执行顺序)

    volatile 不优化,可以阻止寄存器不写回

 

2.5 静态链接

1)库就是目标文件的包,如运行时库

2)各个模块独自编译,并不知道其他模块的地址,所以需要链接来重新统一分配地址。叫重定位。

posted @ 2015-08-18 11:36  波罗蜜  阅读(192)  评论(0编辑  收藏  举报