程序员的自我修养总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序员的自我修养总结

第一章温故而知新第二节万变不离其宗凡是单纯讲史的章节我全部略去。本节讲的主要是由CPU、内存和I/O之间速度不匹配而设计的硬件架构及其发展。这个就不用细说了CPU最快,内存次之,I/O更慢。由于CPU和内存速度还算接近,所以把CPU和内存算作一类,I/O单独算作一类。当然这里说的I/O是指I/O设备,并不是操作。随着发展CPU频率越来越高,处理速度越来越快,内存跟不上节奏了,它们之间的I/O也出现了速度不匹配的问题。因为I/O设备可分为高速设备和低速设备两种,所以为高速搭配北桥,低速搭配南桥。它们之间的关系可用下图表示:CPU的频率只能达到4GHz无法提升,这是由CPU制造工艺决定的,是个瓶颈,目前还无法突破。一个CPU能力有限,那就让多个CPU共同工作提升效率。但是这样的CPU阵列各部件利用率不高,于是,发展出了多核心,其他部件共享的多核CPU设计。说白了,原来的CPU里面每个CPU一个核心,除此之外还有围绕这个核的其他部件。但是现在多核CPU除了核心彼此独立外,其他的部件是共享的。这一节就这么点内容。第3节站得高看得远从下图可以看出计算机的结构大概是这样的:最底层是硬件,它提供硬件规格描述。再往上是操作系统内核,它提供系统调用。再往上是运行库,它提供各种系统API。再往上就是各种系统软件了。这种设计具有上层屏蔽下层,上层提供接口的特点。这一节对接口的解释非常好。作者说接口是一种协议,协议二字比较贴切。当然这个协议不是计算机网络中的protocol。第4节操作系统的功能有二。1、提供抽象接口。2、管理硬件。1.4.1 不要让CPU打盹操作系统经历了从多道程序设计、分时操作系统、到多任务操作系统等阶段。多道程序设计是指CPU空闲的时候出让CPU以提高CPU利用率的设计;分时是指给每个程序固定的时间片执行,时间片一到就停止的设计,不过这个时间片是轮转着用的,不是一个程序用完了就没了;多任务就是现在操作系统设计了,程序以进程的方式存在。抢占:OS对程序执行具有绝对的控制权,OS依据一定标准判断该剥夺哪个程序的执行就剥夺,想让哪个程序执行就让哪个程序执行。1.4.2 设备驱动GDI和directX等都是硬件的抽象,是一个中间层,它们屏蔽了硬件的具体细节,提供了通用的操作接口。LBA(Logical Block Address):因为硬盘结构复杂,概念繁多,寻找一个扇区要经过很多步骤,这个比较麻烦。与其如此,不如干脆为每个扇区配置一个逻辑编号,这样找扇区就好像是哈希算法一样快。1.5 内存不够怎么办?程序在内存中的地址空间是需要相互隔离的。这是为了防止一个程序在无意间修改其他程序造成意料之外的结果,另外,这也是为了信息安全。内存利用率要高,要不然程序在内存和硬盘之间进行I/O操作所花费的时间可就多了。程序运行的地址应该是确定的。因为多数程序指令跳转的目标地址是固定的,如果运行地址不确定就不能保证每次都在目标地址上运行,这就需要重定向进行调整,浪费时间。解决上述问题的办法是使用中间层,即把程序的运行地址与目标地址建立一种映射关系。1.5.1 关于隔离我们平时说的什么32位,64位CPU啥的都是指CPU的处理能力,从硬件的角度讲,即,计算机的地址总线的条数。从CPU的设计上讲就是CPU一次能够处理的二进制位数,而这个位数还有一个学名叫字长。内存的物理地址空间就是真实的内存空间,虚拟地址空间则是应用于进程的逻辑地址空间。1.5.2 分段我在想如何从16进制的差值一下推断出地址空间的大小?以下是我的想法。1位16进制数字代表4位2进制数字,换句话说16进制数字转换为2进制数字是以24为单位进行换算的。那么根据某个16进制数字所在位置乘以当前权值就可以得到该位置上的16进制数字所代表的2进制数字。而16进制某位的权值等于低一位的权值乘以24,并且16进制最低位的权值是20,因此可以根据这个规律换算出相应的2进制数字。来看个例子。书上说从00X00A00000的地址空间大小就等于|0x00A00000-0=|A00000|因为A是10所以其等价于|1000000|,现在按照上述规律进行换算。10×220+0×216+0×212+0×28+0×24+0×20=10M(byte)。分段的方法可以使各进程彼此隔离,并且可以使程序运行的地址确定。分段的缺点就是它以程序为单位进行处理,但是根据程序运行的局部性原理,程序通常情况下只有一少部分需要常驻内存,因此以程序为单位换进换出严重影响了内存的利用率和处理速度。1.5.3 分页页面有3种:1、虚拟页;2、内存页;3、磁盘页。MMU(Memory Management Unit)负责把虚拟地址转换成物理地址。1.6 众人拾柴火焰高1.6.1 线程基础使用线程的好处?1、

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档