《程序员的自我修养》读书笔记---01

 

计算机内部结构很复杂,但是毕竟是人发明出来的,只要花了足够的时间,了解内部结构还是不成问题的。了解的越多,越能发现前人的思维多么的奇妙,一个看起来普通的浮点数格式,当你去自习思考的时候,才知道用原码表示尾数,使用补码表示阶码等充分的发挥了它们的特性与优点。

作为高级语言程序员,我们并不需要了解太多的内部结构,在计算机的内部,一个简单的计算机模型主要包括以下三个部件:

  1. 中央处理器CPU(寄存器与运算器)
  2. 内存
  3. 输入输出设备(I/O)

对于高级语言程序员来说,只需要了解CPU的知识即可,但是要做到优化程序,就必须要清楚的知道计算机内部的结构。在早期的计算中,计算机部件基本都是靠一条总线(Bus)连接的。但是我们知道,由于I/O设备的速度远远低于CPU,为了让它们之间能够相互通信,就使用了I/O控制器将其连接。

后来随着CPU核心频率的提升,导致内存跟不上CPU速度,以及图形化操作系统的普及,为了调节各部件之间速度差距带来的不便,人们发明了北桥芯片。

SMP与多核:

有人曾预言CPU的频率将每年翻倍,前期也确实如此,但是随着CPU制作工艺的完善,这个规律好像失效了,于是便有了多核这一思想的产生。

CPU的充分利用:
多道程序(Multiprogramming):

在程序运行的时候,有时可能会不占用CPU,但是早期的计算机在运行时,却存在这样一个问题:当一个程序运行没有结束,其他程序无法启动。于是人们编写了一个监控程序,在某个程序运行且暂时无需使用CPU时,就将正在排队的其他启动,合理利用CPU资源。

分时系统(Time-Sharing system):

多道程序存在的一个致命不足便是,当我想要点击鼠标来打开其他程序时,只有在当前程序执行完后才会有反应(难以置信.jpg)。于是,为了解决这个问题,分时系统产生了,CPU会在一段时间后自动给其他程序运行。

多任务系统(multi-tasking):

也许分时系统在我们看来,已经完善了。但是,假使程序碰上了死循环,这时CPU也正在被使用,因此就只能通过拔电源来关闭程序了...多系统便由此诞生,也成为了目前几乎所有操作系统使用的方法(虽然内部实现机制可能不一样,但是核心思想相同),多任务系统提供了进程这一概念,而进程具有优先级属性(系统判定)。这样一来,当某一进程使用时间太长后,操作系统会将他中止,而且一般如鼠标点击这样的交互式进程,优先级时比较高的。

(先出去浪了,后续会补充内容的)

参考:程序员的自我修养---链接、装载与库

猜你喜欢

转载自blog.csdn.net/qq_41629142/article/details/83659416