2017-2-12
1.程序从简单做起,再逐步展开,变得复杂。
2.只有真正写书的人才能体会“水平有限的分量”,以此得出只有做了才能真正体会其中味
3.程序员的自我修养不是学习语言和工具,而是每个想成为编程高手的内功。
4.提升程序员的思考境界
5.软件最底层到CPU指令,x86,x64,MIPS等
6.计算机核心硬件CPU,内存,I/O控制芯片
7.北桥总线式高速总线(显卡),南桥是低速总线(硬盘),南桥汇总低速设备总线之后再
连接到北桥总线。(PCI/ISA)扩展成(AGP/PCI-E)
连接到北桥总线。(PCI/ISA)扩展成(AGP/PCI-E)
8.由于受到制造工艺限制,CPU的瓶颈速率4GHz。扩展成SMP(对称多处理器)。
9.多核CPU类似于SMP,它类似于把多个CPU打包在一起,只是共享了昂贵的缓存部件。
10.我们已经进入多核时代。
11.分层结构是操作系统设计的核心设计,应用层-》操作系统API-》操作系统内核-》硬件。
12.操作系统的功能是管理硬件资源+提供给应用程序调用硬件的接口。
13.操作系统的发展:一个CPU只能同时运行一个程序-》多道程序(程序IO时让出CPU,while(1)
会造成死机现象)-》多任务系统(每个程序以进程方式运行,拥有独立的地址空间,如果有很多进程
每个进程分配的时间短,多进程之间来回切换频繁,有CPU假忙现象)。
会造成死机现象)-》多任务系统(每个程序以进程方式运行,拥有独立的地址空间,如果有很多进程
每个进程分配的时间短,多进程之间来回切换频繁,有CPU假忙现象)。
14.硬盘的最小存储单元是扇区,每个扇区512个字节。整体到局部为:硬盘=n*盘片=2*盘面=x*磁道=
y*扇区。
y*扇区。
15.驱动程序与硬件的交互是通过读写I/O端口寄存器实现的,X86平台有65536个硬件端口寄存器,
每个硬件被分配到不同的寄存器地址。这个端口是否类似网络编程中的端口?
每个硬件被分配到不同的寄存器地址。这个端口是否类似网络编程中的端口?
16.IDE接口有IDE0+IDE1两个通道,每个通道可以连接两个设备Master+Slave,IDE0的端口地址
是0x1F0-0x1F7+0x376-0x377。(如果在安装win7版一下的操作系统扫描不到硬盘,需要在BIOS
上修改硬盘模式ACHI-》IDE)。
是0x1F0-0x1F7+0x376-0x377。(如果在安装win7版一下的操作系统扫描不到硬盘,需要在BIOS
上修改硬盘模式ACHI-》IDE)。
17.直接访问物理内存 存在三个问题:a、地址空间不隔离,进程之间可能会相互影响;b、内存使用效率低
,内存不够的时候需要频繁与硬盘相互切换;c、程序的运行地址不确定,涉及到程序的重定位问题。
,内存不够的时候需要频繁与硬盘相互切换;c、程序的运行地址不确定,涉及到程序的重定位问题。
18.分段内存 虽然解决17中的a、c问题,但是不能解决内存不足时,整块地切入切出程序,导致
程序执行效率低的问题。段地址方式中,每个程序在装载之前都已经确定固定内存空间比如10M,
然后此程序访问的地址只能是0x00000000-0x001000000,再将此地址一一对应到物理地址,如果
程序访问地址超过0x00000000-0x001000000范围,监控程序就可以检测到;每个程序的虚拟地址
空间0x00000000--0x00000000+需要的内存大小;
程序执行效率低的问题。段地址方式中,每个程序在装载之前都已经确定固定内存空间比如10M,
然后此程序访问的地址只能是0x00000000-0x001000000,再将此地址一一对应到物理地址,如果
程序访问地址超过0x00000000-0x001000000范围,监控程序就可以检测到;每个程序的虚拟地址
空间0x00000000--0x00000000+需要的内存大小;
19.分页内存 解决了17的所有问题。它将虚拟内存空间和物理内存空间都分成相同大小的内存页,
一般每页大小为4KB,只有操作系统有权限管理这些内存页的重要权限,并用使用频率机制实现
高效加载应用程序的虚拟内存页。
一般每页大小为4KB,只有操作系统有权限管理这些内存页的重要权限,并用使用频率机制实现
高效加载应用程序的虚拟内存页。
20.CPU操作的都是操作的都是虚拟地址,然后经过MMU(内存管理单元)映射到物理地址,MMU芯片
集成在CPU中。
集成在CPU中。