读《程序员自我修养》收获

2017-2-12


1.程序从简单做起,再逐步展开,变得复杂。

2.只有真正写书的人才能体会“水平有限的分量”,以此得出只有做了才能真正体会其中味

3.程序员的自我修养不是学习语言和工具,而是每个想成为编程高手的内功。

4.提升程序员的思考境界

5.软件最底层到CPU指令,x86,x64,MIPS等

6.计算机核心硬件CPU,内存,I/O控制芯片

7.北桥总线式高速总线(显卡),南桥是低速总线(硬盘),南桥汇总低速设备总线之后再
连接到北桥总线。(PCI/ISA)扩展成(AGP/PCI-E)

8.由于受到制造工艺限制,CPU的瓶颈速率4GHz。扩展成SMP(对称多处理器)。

9.多核CPU类似于SMP,它类似于把多个CPU打包在一起,只是共享了昂贵的缓存部件。

10.我们已经进入多核时代。

11.分层结构是操作系统设计的核心设计,应用层-》操作系统API-》操作系统内核-》硬件。

12.操作系统的功能是管理硬件资源+提供给应用程序调用硬件的接口。

13.操作系统的发展:一个CPU只能同时运行一个程序-》多道程序(程序IO时让出CPU,while(1)
会造成死机现象)-》多任务系统(每个程序以进程方式运行,拥有独立的地址空间,如果有很多进程
每个进程分配的时间短,多进程之间来回切换频繁,有CPU假忙现象)。

14.硬盘的最小存储单元是扇区,每个扇区512个字节。整体到局部为:硬盘=n*盘片=2*盘面=x*磁道=
y*扇区。

15.驱动程序与硬件的交互是通过读写I/O端口寄存器实现的,X86平台有65536个硬件端口寄存器,
每个硬件被分配到不同的寄存器地址。这个端口是否类似网络编程中的端口?

16.IDE接口有IDE0+IDE1两个通道,每个通道可以连接两个设备Master+Slave,IDE0的端口地址
是0x1F0-0x1F7+0x376-0x377。(如果在安装win7版一下的操作系统扫描不到硬盘,需要在BIOS
上修改硬盘模式ACHI-》IDE)。

17.直接访问物理内存 存在三个问题:a、地址空间不隔离,进程之间可能会相互影响;b、内存使用效率低
,内存不够的时候需要频繁与硬盘相互切换;c、程序的运行地址不确定,涉及到程序的重定位问题。

18.分段内存 虽然解决17中的a、c问题,但是不能解决内存不足时,整块地切入切出程序,导致
程序执行效率低的问题。段地址方式中,每个程序在装载之前都已经确定固定内存空间比如10M,
然后此程序访问的地址只能是0x00000000-0x001000000,再将此地址一一对应到物理地址,如果
程序访问地址超过0x00000000-0x001000000范围,监控程序就可以检测到;每个程序的虚拟地址
空间0x00000000--0x00000000+需要的内存大小;

19.分页内存 解决了17的所有问题。它将虚拟内存空间和物理内存空间都分成相同大小的内存页,
一般每页大小为4KB,只有操作系统有权限管理这些内存页的重要权限,并用使用频率机制实现
高效加载应用程序的虚拟内存页。

20.CPU操作的都是操作的都是虚拟地址,然后经过MMU(内存管理单元)映射到物理地址,MMU芯片
集成在CPU中。

展开阅读全文

没有更多推荐了,返回首页