没有合适的资源?快使用搜索试试~ 我知道了~
首页图解系统:程序员的操作系统指南
"图解系统-小林coding-v1.0.pdf" 这本《图解系统》是由小林编写的,主要面向程序员,旨在帮助那些对操作系统有一定基础但又不甚牢固,或是对知识理解不全面的读者。作者通过通俗易懂的语言和丰富的图表,将复杂的操作系统知识讲解得清晰明了,使读者能够更好地理解和串联知识点。 本书包含超过15万字的文字和400张图表,内容不仅限于操作系统,还涵盖了计算机组成原理和Linux系统知识,以及相关的命令操作。对于想要巩固操作系统知识,尤其是准备面试的程序员来说,这是一份非常实用的资料。据称,该书至少覆盖了90%的面试中可能出现的操作系统问题,且内容深度足以应对大厂的要求。 书中提到,阅读《图解系统》不必按照传统的教科书顺序,读者可以根据自己的需求选择章节进行阅读。它不是一本详尽无遗的教科书,但更注重实用性,避免冗余,强调直击关键知识点。此外,书中可能存在错别字和疏漏,作者鼓励读者发现错误后通过邮箱反馈,以便进行修订和更新。 在内容方面,书中的亮点包括对Linux线程和进程的实现机制的解析,以及对协程的讨论。这些主题在现代软件开发中至关重要,对于程序员来说,理解并掌握这些概念能显著提升他们的技术水平和面试竞争力。 《图解系统》是一本非常适合程序员和面试者的自学指南,它的直观性和实用性使得读者能够快速地理解和应用所学知识,对于提升个人技能和增加面试成功率具有显著帮助。读者在阅读过程中,可能会有恍然大悟的感觉,仿佛找到了理解大学课程的新视角,也可能会因此感到相见恨晚。
资源详情
资源推荐
现代⼤多数 CPU 都使⽤来流⽔线的⽅式来执⾏指令,所谓的流⽔线就是把⼀个任务拆分成多个⼩任务,于
是⼀条指令通常分为 4 个阶段,称为 4 级流⽔线,如下图:
四个阶段的具体含义:
1. CPU 通过程序计数器读取对应内存地址的指令,这个部分称为 Fetch(取得指令);
2. CPU 对指令进⾏解码,这个部分称为 Decode(指令译码);
3. CPU 执⾏指令,这个部分称为 Execution(执⾏指令);
4. CPU 将计算结果存回寄存器或者将寄存器的值存⼊内存,这个部分称为 Store(数据回写);
上⾯这 4 个阶段,我们称为指令周期(Instrution Cycle),CPU 的⼯作就是⼀个周期接着⼀个周期,周
⽽复始。
事实上,不同的阶段其实是由计算机中的不同组件完成的:
取指令的阶段,我们的指令是存放在存储器⾥的,实际上,通过程序计数器和指令寄存器取出指令的
过程,是由控制器操作的;
指令的译码过程,也是由控制器进⾏的;
指令执⾏的过程,⽆论是进⾏算术操作、逻辑操作,还是进⾏数据传输、条件分⽀操作,都是由算术
逻辑单元操作的,也就是由运算器处理的。但是如果是⼀个简单的⽆条件地址跳转,则是直接在控制
器⾥⾯完成的,不需要⽤到运算器。
指令的类型
指令从功能⻆度划分,可以分为 5 ⼤类:
数据传输类型的指令
,⽐如 store/load 是寄存器与内存间数据传输的指令, mov 是将⼀个内存地
址的数据移动到另⼀个内存地址的指令;
运算类型的指令
,⽐如加减乘除、位运算、⽐较⼤⼩等等,它们最多只能处理两个寄存器中的数据;
跳转类型的指令
,通过修改程序计数器的值来达到跳转执⾏指令的过程,⽐如编程中常⻅的 if-
else 、 swtich-case 、函数调⽤等。
信号类型的指令
,⽐如发⽣中断的指令 trap ;
闲置类型的指令
,⽐如指令 nop ,执⾏后 CPU 会空转⼀个周期;
指令的执⾏速度
CPU 的硬件参数都会有 GHz 这个参数,⽐如⼀个 1 GHz 的 CPU,指的是时钟频率是 1 G,代表着 1 秒
会产⽣ 1G 次数的脉冲信号,每⼀次脉冲信号⾼低电平的转换就是⼀个周期,称为时钟周期。
对于 CPU 来说,在⼀个时钟周期内,CPU 仅能完成⼀个最基本的动作,时钟频率越⾼,时钟周期就越
短,⼯作速度也就越快。
⼀个时钟周期⼀定能执⾏完⼀条指令吗?答案是不⼀定的,⼤多数指令不能在⼀个时钟周期完成,通常需
要若⼲个时钟周期。不同的指令需要的时钟周期是不同的,加法和乘法都对应着⼀条 CPU 指令,但是乘法
需要的时钟周期就要⽐加法多。
如何让程序跑的更快?
程序执⾏的时候,耗费的 CPU 时间少就说明程序是快的,对于程序的 CPU 执⾏时间,我们可以拆解成
CPU 时钟周期数(CPU Cycles)和时钟周期时间(Clock Cycle Time)的乘积。
时钟周期时间就是我们前⾯提及的 CPU 主频,主频越⾼说明 CPU 的⼯作速度就越快,⽐如我⼿头上的电
脑的 CPU 是 2.4 GHz 四核 Intel Core i5,这⾥的 2.4 GHz 就是电脑的主频,时钟周期时间就是 1/2.4G。
要想 CPU 跑的更快,⾃然缩短时钟周期时间,也就是提升 CPU 主频,但是今⾮彼⽇,摩尔定律早已失
效,当今的 CPU 主频已经很难再做到翻倍的效果了。
另外,换⼀个更好的 CPU,这个也是我们软件⼯程师控制不了的事情,我们应该把⽬光放到另外⼀个乘法
因⼦ —— CPU 时钟周期数,如果能减少程序所需的 CPU 时钟周期数量,⼀样也是能提升程序的性能的。
对于 CPU 时钟周期数我们可以进⼀步拆解成:「指令数 x 每条指令的平均时钟周期数(Cycles Per
Instruction,简称 CPI )」,于是程序的 CPU 执⾏时间的公式可变成如下:
因此,要想程序跑的更快,优化这三者即可:
指令数
,表示执⾏程序所需要多少条指令,以及哪些指令。这个层⾯是基本靠编译器来优化,毕竟同
样的代码,在不同的编译器,编译出来的计算机指令会有各种不同的表示⽅式。
每条指令的平均时钟周期数
CPI,表示⼀条指令需要多少个时钟周期数,现代⼤多数 CPU 通过流⽔
线技术(Pipline),让⼀条指令需要的 CPU 时钟周期数尽可能的少;
时钟周期时间
,表示计算机主频,取决于计算机硬件。有的 CPU ⽀持超频技术,打开了超频意味着
把 CPU 内部的时钟给调快了,于是 CPU ⼯作速度就变快了,但是也是有代价的,CPU 跑的越快,
散热的压⼒就会越⼤,CPU 会很容易奔溃。
很多⼚商为了跑分⽽跑分,基本都是在这三个⽅⾯⼊⼿的哦,特别是超频这⼀块。
总结
最后我们再来回答开头的问题。
64 位相⽐ 32 位 CPU 的优势在哪吗?64 位 CPU 的计算性能⼀定⽐ 32 位 CPU ⾼很多吗?
64 位相⽐ 32 位 CPU 的优势主要体现在两个⽅⾯:
64 位 CPU 可以⼀次计算超过 32 位的数字,⽽ 32 位 CPU 如果要计算超过 32 位的数字,要分多步
骤进⾏计算,效率就没那么⾼,但是⼤部分应⽤程序很少会计算那么⼤的数字,所以只有运算⼤数字
的时候,64 位 CPU 的优势才能体现出来,否则和 32 位 CPU 的计算性能相差不⼤。
64 位 CPU 可以寻址更⼤的内存空间,32 位 CPU 最⼤的寻址地址是 4G,即使你加了 8G ⼤⼩的内
存,也还是只能寻址到 4G,⽽ 64 位 CPU 最⼤寻址地址是 2^64 ,远超于 32 位 CPU 最⼤寻址地
址的 2^32 。
你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运⾏在 64 位的电脑上吗?64 位的操
作系统可以运⾏在 32 位的电脑上吗?如果不⾏,原因是什么?
64 位和 32 位软件,实际上代表指令是 64 位还是 32 位的:
如果 32 位指令在 64 位机器上执⾏,需要⼀套兼容机制,就可以做到兼容运⾏了。但是如果 64 位指
令在 32 位机器上执⾏,就⽐较困难了,因为 32 位的寄存器存不下 64 位的指令;
操作系统其实也是⼀种程序,我们也会看到操作系统会分成 32 位操作系统、64 位操作系统,其代表
意义就是操作系统中程序的指令是多少位,⽐如 64 位操作系统,指令也就是 64 位,因此不能装在
32 位机器上。
总之,硬件的 64 位和 32 位指的是 CPU 的位宽,软件的 64 位和 32 位指的是指令的位宽。
关注作者
哈喽,我是⼩林,就爱图解计算机基础,如果觉得⽂章对你有帮助,欢迎微信搜索「⼩林coding」,关注
后,回复「⽹络」再送你图解⽹络 PDF
1.2 存储器⾦字塔
⼤家如果想⾃⼰组装电脑的话,肯定需要购买⼀个 CPU,但是存储器⽅⾯的设备,分类⽐较多,那我们肯
定不能只买⼀种存储器,⽐如你除了要买内存,还要买硬盘,⽽针对硬盘我们还可以选择是固态硬盘还是
机械硬盘。
相信⼤家都知道内存和硬盘都属于计算机的存储设备,断电后内存的数据是会丢失的,⽽硬盘则不会,因
为硬盘是持久化存储设备,同时也是⼀个 I/O 设备。
但其实 CPU 内部也有存储数据的组件,这个应该⽐较少⼈注意到,⽐如寄存器、CPU L1/L2/L3 Cache
也都是属于存储设备,只不过它们能存储的数据⾮常⼩,但是它们因为靠近 CPU 核⼼,所以访问速度都⾮
常快,快过硬盘好⼏个数量级别。
问题来了,那机械硬盘、固态硬盘、内存这三个存储器,到底和 CPU L1 Cache 相⽐速度差多少倍呢?
在回答这个问题之前,我们先来看看「存储器的层次结构」,好让我们对存储器设备有⼀个整体的认识。
剩余431页未读,继续阅读
zh_19995
- 粉丝: 80
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功