《程序员的自我修养》阅读笔记(一)

    这本书的初版是2009年出版的,但是其理论知识放在2021年仍然管用,十多年计算机的框架并没有发生大的变化。这本书讲解了一门编程语言是如何诞生的,通过这本书,可以理解一些操作系统和软件的运行机制和原理。

简要的计算机发展

    我们了解过计算机原理就会知道,早期的计算机基本上围绕着CPU、内存和I/O这三个部分(似乎现在也是)。这些部件通过总线(BUS)连接,CPU和内存的频率一致。而I/O设备的频率则要慢的多,那么,I/O设备与总线频率不一致,这怎么办?所以,为了协调I/O设备与总线的速度,就有相应的控制器与总线连接,然后由控制器负责交互双方数据。

                

    后来,随着硬件发展,CPU的频率越来越高,导致内存跟不上CPU的速度了,于是人们决定,让系统总线与内存频率一致,CPU通过倍频的方式与系统总线通信。再后来,由于更高的需求,比如三维游戏等,I/O总线的速度太慢了,为了协调各个设备的交互,人们就设计了南桥和北桥,北桥专门用来处理高速设备,南桥则用来处理低速设备,比如鼠标、键盘。

    CPU的频率就这样不停提升,于是有一天,它的频率终于逼近了工艺的极限,(书中为4GHz,不过在18年时Intel做出了5GHz的处理器,i7-8086K,名字纪念了四十年前8086处理器)在成本和效率的均衡下,人们决定向多核处理器的方向发展。

    虽然多核CPU的速度在理论上与数量应该是成正比的,然而在实际情况下,处理器其实并不能完全将一个大问题平均地拆分为多个小问题,(这一点在如今比较火热的机器学习上很有体现,比如说卷积神经网络,一般一个具有实际意义的网络都是比较大的,所以它的多个卷积层会组成一个很大的方程,这个方程也许有数千个参数,这样一个方程很难平均分配给多个处理单元来计算)同时还受到缓存限制。不过,在处理内容基本独立时,比如数据库的访问,这种结构就可以最大发挥其性能了。

操作系统有啥用

    由于性能提升了,计算机能做的事也更多了,因此各种程序也变得更加复杂,为了整理这么多复杂的程序,将其分门别类,层次结构的概念就非常重要。通过层,将硬件、操作系统、运行库、应用软件按从下到上的顺序构成。而这些层次要怎么相互通信呢?于是,就有了接口。接口本质其实就是一个通信的协议,由下层的对象提供接口,由上层的对象使用。

    除了最下层的硬件和最上层的软件,此外的所有层都是中间层,因此操作系统也是中间层,计算机科学领域的任何问题都可以通过增加一个间接的中间层解决(没人知道这句话是谁说的,但是时间检验了其正确性)

                       

        通过这张图,我们可以看出,操作系统作为一个独立的层,处在最底层的硬件层之上。也就是说,它的运行将影响到其上一层的所有程序。刚刚提到了接口的概念,所以我们能想到,操作系统的重要作用之一正是提供接口给其上面的层。(对于一个虚拟机的操作系统,其实可以理解为它是一个应用层的软件,然后又可以以它为底往上一直套娃)

    早期的CPU造价很贵,在运行一个程序时,也许会有CPU空闲的时候,比如此时程序正在读取硬盘内容,为了让CPU一直运行,榨干其价值,操作系统会有监控程序,当CPU空闲时,监控程序就启动另外需要CPU资源的程序。后来这种思想更加精进后,出现了更多其他种类的调度模式,有比较“大同”的分时系统,程序运行一段时间后就将CPU让给其他程序,还有很不“皿煮”的抢占式,操作系统将CPU资源分配给它认为目前最需要的程序。这种模式的操作系统往往是多任务系统,所有应用程序都以进程的方式运行,并且有自己独立的地址空间。

     讲到了进程怎么能不讲线程,不过这个咱们下次再扯,除此之外,操作系统还有很多功能,说完难免要长篇大论。写这篇笔记时微软的Windows11即将要发布了,对于这个新系统,它是否会一些历史性的变革?我还是抱有很强烈的期待的。

文中图片引用自:

《程序员的自我修养》作者:俞甲子,电子工业出版社,2020年11月出版

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值