读书笔记--《深入理解计算机系统》第一章 计算机系统漫游

第一章:计算机系统漫游

1.信息=位+上下文
①. 系统中所有的信息——包括磁盘文件、存储器中的程序、用户数据、网络数据都是由一串 表示的。
②. 区分不同对象的唯一方法是:我们 读到这些数据对象时的上下文

2.CPU基本操作(汇编语言的工作过程):
①、加载:把一个字节或字从内存复制到寄存器,以覆盖原来的数据。
②、存储:把一个字节或字从寄存器复制到内存的某个位置,以覆盖这个位置上原有的内容。
③、操作:把两个寄存器的内容复制到ALU,ALU对这两个值作算术操作,并将结果放到某个寄存器中,以覆盖该寄存器原有内容。
④、跳转:从指令本身抽出一个字,并将这个字复制到PC寄存器中,以覆盖PC中原有的值。

3.文件
文件就是字节序列,仅此而已。
文件这个 简单而又精致的概念其内涵是相当丰富的,因为 它向应用程序提供了一个统一的视角,来看待系统中可能含有的各式各样的I/O设备,如磁盘、键盘、显示器、网络等等。

4.抽象
计算机中的一个重大课题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性。

操作系统(内核)是应用程序和硬件之间的媒介,它提供了三个基本的抽象:
①、文件对I/O设备的抽象。
②、虚拟存储器对内存和磁盘的抽象。
③、进程对处理器、内存和I/O设备的抽象。

读后感: 
  作者从一开始就明确地指出了计算机以及软件的本质:计算机是用于处理信息的工具,而信息就是上下文。所谓的“位”,通俗地讲就是1或0,对应到物理量就是电平的高低,这就是信息的最小单位。而“上下文”指的是“语境”,同样的一串位(比如“1001 0011”)在不同情况(语境)下,表示的意思也不一定相同。
      就好比在英语的世界里,26个英文字母就是“”,这些可以通过不同的组合来表示不同的信息,如"apple" 就是由位组合而成的“字”,许许多多的连起来就是一句话、一首歌、一篇文章、一部小说等等。所以,我们在电脑屏幕上看到的一切信息,包括一个图标、一个MP3文件、一部电影等等,其本质都是一连串1/0的组合。
      认识到事物的本质,是掌握相关知识的关键。有了上面对计算机软件的本质认识,我们可以进一步理解所谓的文件、操作系统、编程语言、业务模块等等,这些堪称庞大的“模块”无非是一些牛人前辈们对信息进行了一系列加工、封装、架构,从而打造出了现如今纷繁复杂的计算机系统。
      作为普通码农的我们,都是活在极其聪明的前辈们构建的“概念”里,比如K&R构建(发明)了C语言,Linus用C语言构建了Linux系统,Andy Rubin在Linux系统上又构建了Android操作系统。这些能用别人做好的东西发明另一样东西的人,可谓是牛人中的战斗机;还有一部分人能把别人发明的东西、别人构建的概念很容易就学会,并且用得很好,这部分人就是牛人;而剩下就像你我这样的人(自认为是牛人的都不会看到这里,嘿嘿),疲于奔命,学习日新月异的技术,为的只是不被时代淘汰,为的只是混口饭吃,还有的是为了有朝一日能挤进牛人圈子里。
      怎么样才能从菜鸟变成技术牛人呢?这也是我经常问自己的问题。如今有一点点感悟,斗胆说出来与大家分享一下,有什么不对的地方也请大家不吝赐教。既然我们是跟在别人屁股后面,学习别人发明出来的东西、别人构建出来的概念,那么我们完全可以战略上藐视它,战术上重视它:
      ①、我要学习的东西在本质上就是一连串的1/0,没什么神秘,没什么了不起的。(藐视它,你才不会被它吓跑)
      ②、我要学习的东西它是什么(能干什么)?它怎么是做到的?为什么要这么做?(重视它,你才能掌握好它)
      在上面说的第②点中,能回答第一个问题是普通用户,能回答第二个问题是开发人员,能回答第三个问题是才是真正的技术牛人。
      我认为计算机世界里还有一点很重要,那就是“抽象”,用艺术来形容这个词都不为过。"计算机中的一个重大课题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性。" 这句话本身就很抽象,但能够真正理解它,将使你如虎添翼。我所理解的抽象,即是对一类事物共性的提取过程或结果。抽象的艺术随处可见,比如Linux里把所有的I/O都抽象成了文件,带来的好处就是应用开发者可以通过统一的读写接口访问硬件,简单地控制着各种硬件的工作。Linux里的各种驱动模型也是抽象的结果,比如platform总线提供了一种通用的方法让驱动程序和设备相互匹配;usb模块又基于platform总线,抽象出了usb控制器的通用行为;input子系统抽象出了所有输入设备的共性;framebuffer抽象出了显示器的通用操作和属性等等。于是乎,驱动开发人员的开发步骤几乎可以简化成三个步骤:分配某个结构体、填充该结构体、将该结构体注册入内核。应用开发人员的开发步骤也可简化成:打开、读写、关闭。 回过头来想想,发明这套机制的是何等高明之人啊,我辈除了顶礼膜拜之外,只能认真研习,仔细品味才对得起神人们贡献出的智慧结晶。
      好了,今天就到这里了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值