【读书笔记】程序员的自我修养:链接、装载与库 第一章 温故而知新

来源:互联网 发布:生产计划编制软件 编辑:程序博客网 时间:2024/05/17 18:40
1、对于系统程序开发者来说,计算机多如牛毛的硬件设备中,有三个不见最为关键,他们分别是中央处理器CPU、内存和I/O控制芯片。
2、CPU核心频率的提升,导致内存跟不上CPU的速度,于是产生了与内存频率一致的系统总线,而CPU采用倍频的方式和系统总线通信。
3、为了协调CPU、内存和高速的图形设备,人们专门设计了一个高速的北桥芯片,以便他们之间能够高速的交换数据。
4、由南桥将磁盘、USB、键盘、鼠标等低速设备汇总后连接到北桥上。
5、系统总线采用的PCI结构,低速设备采用的是ISA总线。
6、在频率上短期内没有提高的余地了,人们开始增加CPU的数量来提高CPU的速度。
7、每个层次之间都需要通信,必须有一个通信协议,一般称其为接口,接口的下面那层是接口的提供者,由它定义接口;上面那层是接口的使用者。
8、成熟的操作系统出现以后,硬件逐渐被抽象成了一系列概念。在Unix,中硬件设备的访问形式跟访问普通文件形式一样;在window中图形硬件被抽象成了GDI,声音和多媒体设备被抽象成了DirectX对象;磁盘被抽象成了普通文件系统,等等。
9、现代的硬盘普遍使用一种叫做LBA(Logical Block Address)的方式,整个硬盘中所有的山区从0开始编号,一直到最后一个扇区,这个扇区编号叫做逻辑扇区号。它抛弃了所有复杂的磁道,盘面之类的概念。
10、分段基本思路是把一段与程序所需要的内存大小的虚拟空间映射到某个物理地址空间。
11、分页吧地址空间人为的等分成固定大小的页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统决定也的大小。
12、当进程需要用到的页在磁盘中,不是在内存中,就会出现页错误。操作系统将信息从磁盘中取出来载入内存。
13、几乎所有的硬件都采用一个叫做MMU(Memory Management Unit)的部件来进行页映射,CPU发出的是Virtual Address, 即我们的程序看到的是虚拟地址。经过MMU转换之后就变成了Physical Address。
14、线程有时候被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。
15、一个进程由多个线程组成,各个线程之间共享程序的内存空间(代码段,数据段,堆)以及一些进程级的资源(如打开文件和信号)
16、处于运行中线程拥有一段可以执行的时间,这段时间称为时间片,当时间片用尽的时候,该进程将进入就绪状态
17、在优先级调度的环境下,线程优先级改变一半有三种方式,用户指定优先级;根据进入等待状态的频繁程度提升或者减低优先级;长时间得不到执行而被提升优先级
18、在不可抢占线程中,线程主动放弃执行无非两种情况,当线程试图等待某事件时(I/O等);线程主动放弃时间片。
19、Linux将所有的执行实体(无论是线程还是进程)都成为任务。Linux下不同任务之间可以选择共享内存空间,因而在实际意义上,共享了同一个内存空间的多个任务构成了一个进程,这些任务也就成了这个进程的线程。
20、fork产生新任务的速度非常快,因为fork并不复制原任务的内存空间,而是和原任务一起共享一个写时复制的内存空间,所谓写时复制,指的是两个任务可以同时自由的读取内存,但任意一个任务试图堆内存进行修改时,内存就会复制一份供给修改方单独使用。
21、源自操作仅适用于比较简单特定的场合。原子的交换、增加、减少、异或操作。
22、所谓同步,既是指在一个线程访问数据未结束的时候,其他线程不能对同一个数据进行访问。如此,对数据的访问被原子化了。
23、互斥量和而原信号量很类似,资源仅同时允许一个线程访问,但和信号量不同的是,信号量在整个系统可以被任意线程获取并释放,同一个信号量可以被系统中的一个线程获取之后由另外一个线程释放。而互斥量则要求哪个线程获取了互斥量,那个线程就要负责释放这个锁,其他线程越俎代庖去释放互斥量是无效的。
24、临界区是比互斥量更加严格的同步手段。把临界区的锁的获取称为进入临界区,把锁的释放称为离开临界区。临界区和互斥量与信号量的区别在与,互斥量和信号量在系统的任何进程都是可见的,也就是说,一个进程创建了一个互斥量或者信号量,另一个进程试图去获取该所示合法的,然而,临界区的作用范围仅限于本进程,其他的进程无法获取该锁。除此之外,临界区具有和互斥量相同的性质。
25、读写锁可以避免下面的问题,如果使用信号量、互斥量或者临界区中的任何一种来进行同步,对于读取频繁,而仅仅偶尔写入的情况会显得非常低效率。
26、条件变量类似一个栅栏。线程可以等待条件变量,一个条件变量额可以被多个线程等待;线程也可以唤醒条件变量,此时某个或所有等待此条件变量的线程都会被唤醒并继续执行。
27、一个函数被重入,表示这个函数没有执行完成,由于外部因素或者内部调用,有一次进入函数执行。(1)、多个线程同时执行这个函数。(2)、函数自身(可能是经过多层调用之后)调用自身。
28、volatile关键字试图阻止过度优化,(1)、阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回。(2)、阻止编译器调整操作volatile变量的指令顺序。但是volatile仍然无法阻止CPU动态调度换序。
29、barrier质量会阻止CPU将该命令之前的指令交换到barrier之后。
30、多线程,一对一模型,一个用户使用的线程就唯一对应一个内核使用的线程,反过来不一定。优点:线程之间的并发是真正的并发。缺点:用户线程数量收到限制。(2)内核线程调度上下文切换开销大,导致用户线程执行效率下降。
31、多线程,多对一模型,多个用户线程映射到一个内核线程上,优点是线程之间的切换由用户态代码进行速度快。以及几乎无限制的线程数量。缺点是一个用户线程阻塞,所有的线程都将无法执行。

32、多线程,多对多模型,多个用户线程映射到少数但不止一个内核线程。



cpu频率,cpu主频,I/O控制
CPU主频:即CPU内核工作的时钟频率(CPU Clock Speed)包括两部分:外频与倍频,两者的乘积就是主频主频=外频×倍频
从网上来看cpu主频就是cpu频率
总线频率:代表主板芯片的性能。这里指的是前端总线(FSB)。CPU就是通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片和内存、显卡交换数据。前端总线是CPU和外界交换数据的最主要通道,因此前端总线的数据传输能力对计算机整体性能作用很大,如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。
主频也叫时钟频率,单位是兆赫(MHz)或千兆赫(GHz),用来表示CPU的运算、处理数据的速度。
外频:实际上指的是CPU与存储器/其他设备的数据交换频率(外频实际大小要根据CPU及主板所支持的数据为主,CPU及主板都可以适当的增加外频),外频不光是CPU的性能参数,同时可以说是计算机整体性能的重要指标,因为它基本上涉及到计算机主机内所有的板卡及存储设备。
倍频:CPU主频和外频之间的比例关系,一般为:主频=外频*倍频。
I/O控制器:是控制计算机输入输出的一个最基本的控制系统。通过这个控制系统计算机才可以与外界进行交流互动;这个系统包括了计算机最基本的输入功能比如键盘、鼠标等还有计算机最基本的输出功能,打印功能。当然还包括其他的很多很多的计算机其他外部设备。这个系统是计算机比较核心的一个计算机系统了,很是复杂。原因就是连接他的外设很多,计算机系统使用中断系统来处理控制I/O设备。
参考http://wiki.dzsc.com/info/2364.html
0 0
原创粉丝点击