
目录
🥇个人主页:个人主页
🥈系列专栏:【软考】程序员
计算机系统分为硬件和软件系统。计算机硬件是计算机系统中的物质基础,是摸得见看得着的。计算机软件是程序、数据、相关文档的集合,包括系统软件和应用软件

基本的计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。随着器件技术和微电子技术的发展,运算器、控制器等部件已被集成在一起,统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。
运算器是对数据进行加工处理的部件,它主要完成算术和逻辑运算。控制器的主要功能则是从主存中取出指令并进行分析,控制计算机的各个部件有条不紊地完成指令的功能。
存储器是计算机系统中的记忆设备,分为内部存储器(Main Memory,MM,简称内存、主存)和外部存储器(简称外存)。内存速度快、容量小,一般用来临时存放计算机运行时 所需的程序、数据及中间结果。外存容量大、速度慢,可用于长期保存信息。寄存器是CPU中的记忆设备,用来临时存放指令、数据及运算结果。与内存储器相比,寄存器的速度要快得多。
习惯上将CPU和主存储器的有机组合称为主机。输入/输出(I/O)设备位于主机之外,是计算机系统与外界交换信息的装置。所谓输入和输出,都是相对于主机而言的。输入设备的作用是把转换成二进制形式的信息输入到计算机的存储器中,输出设备的作用是把运算处理结果按照人们所要求的形式输出到外部存储介质上。
计算机软件是指为管理、运行、维护及应用计算机所开发的程序和相关文档的集合。如果计算机系统中仅有硬件系统,则只具备了计算的基础,并不能真正运算,只有将解决问题的步骤编制成程序并输入到计算机内存开始运行,才能完成运算。软件系统是计算机系统中的重要组成部分,通常可将软件分为系统软件和应用软件两大类。

随着大规模集成电路技术的发展,计算机硬件系统中将控制器和运算器集成在一块微处理器芯片上,通常称为CPU芯片,随着芯片的发展,在其内部又增添了高速缓冲寄存器。
计算机硬件系统主要由CPU、存储器、输入设备、输出设备和连接各个部件以实现数据传送的总线组成。
指令控制(程序的顺序控制)
(按照程序的顺序,正确取出一条指令,取指令,分析指令)
操作控制(一条指令有若干操作信号实现)
(怎么分解,例如 i+j,要怎么取i,怎么取j,对其他部件的控制)
时间控制(指令各个操作实施时间的定时)
数据加工(算术运算和逻辑运算)——ALU完成
(执行指令的过程中进行加减乘除,逻辑运算等)
中央处理器CPU=运算器+控制器
运算器:
算数逻辑单元ALU:数据的算术运算和逻辑运算
累加寄存器AC:用于暂存操作数和中间运算结果
控制器:
程序计数器(PC):存放下一条指令的地址
指令寄存器(IR):存放正在执行的程序
就是执行指令序列的过程,也就是反复地取指令、分析指令和执行指令的过程。
寻址方式是指如何确定本条指令的操作数地址及下一条将要执行指令的地址,它与硬件 结构紧密相关,而且直接影响指令格式和指令功能。
1.立即寻址
立即寻址的形式地址 A 就是操作数本身,操作数在指令中直接给出。
2.直接(内存)寻址
直接寻址 EA=A,有效地址 EA 由形式地址 A 直接给出即操作数项给出内存地址编号。
3.间接寻址
间接地址 EA=(A),有效地址 EA 由形式地址 A 间接给出。指令操作数项指示的地址中的内容是操作数的地址。
4.寄存器(直接)寻址
寄存器寻址 EA=Ri,有效地址 EA=寄存器编号。即操作数项给出寄存器的编号
5.寄存器间接寻址
寄存器间接寻址 EA=(Ri),有效地址 EA 在寄存器中。
1.内存储器:由ROM和RAM组成
只读存储器ROM: 用于检查计算机系统的配置情况并提供 最基本的I/O控制程序,如存储BIOS参数的 CMOS芯片。
计算机断电后存储器中的数据仍然存在。
随机存储器RAM: RAM中的信息随着计算机的断电自然消失
内存容量通常是指RAM的容量
- SRAM:不断电情况下,信息一直保持而不丢失。
- DRAM:需要定时对其进行刷新来维持信息不丢失。
2.高速缓冲存储器
简称高速缓存,又称Cache
随着计算机技术的高速发展,CPU主频的不断提高,对内存的存取速度要求越来越高;然而,内存的速度总是达不到CPU的速度,它们之间存在着速度上的严重不匹配。为了协调二者之间的速度差异,在这二者之间采用了高速缓冲存储器技术。
3.外存储器
例如:光盘 U盘 移动硬盘
4.层次化存储结构
存取速度从快到慢:寄存器>Cache>内存>硬盘
存取容量从小到大:寄存器<Cache<内存<硬盘
5.存储容量单位
计算机中的信息用二进制表示,常用的单位有位、字节和字。
位(bit):表示信息的最小数据单位,是二进制的一个数位,通常用“b”表示。
字节(Byte):表示信息的基本数据单位。1个字节由8个二进制位组成,通常用“B”表示。
存储容量的单位有字节(B)、千字节(KB)和兆字节(MB)以及十亿字节(GB)等。
它们之间的换算关系如下:
1 B=8 bit
1 KB=2^10 B=1024 B
1 MB=2^10 KB=1024 KB
1 GB=2^10 MB=1024 MB
字(Word):
每个字中所含的位数,是由CPU的字长所决定,它总是字节的整数倍。
按位置分类:一个单处理器系统中的总线大致分为三类:
(1) 内部总线:CPU内部连接各寄存器及运算部件之间的总线
(2) 系统总线:CPU同计算机系统的其他高速功能部件,如存储器、通道等互相连接的总线。
(3) I/O总线:中、低速I/O设备之间互相连接的总线。
总线评价指标
总线带宽(BW):总线的带宽指的是单位时间内总线上可传送的数据量。单位是字节/秒(B/s)或兆字节/秒(MB/s)。总线带宽是总线本身所能达到的最高传输速率。 与总线带宽密切相关的两个概念是总线宽度和总线的工作频率。
总线宽度(W):总线的宽度指的是总线能同时传送的数据位数,(通常题目中会有“一个总线周期中并行传输XX个字节的数据” 这类话)
总线的工作频率:以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽
越宽。(每秒 百万个时钟脉冲)
数据总线: CPU与内存或其他器件之间的数据传送的通道,决定了CPU和外
界的数据传送速度。每条传输线一次只能传输1位二进制数据。例如: 8根数据线一次可传送一个8位二进制数据(即一个字节)。“64位的CPU"是指CPU的数据
总线的宽度是64位。字长取决于数据总线的宽度。
地址总线: CPU是通过地址总线来指定存储单元的,其决定了CPU所能访问的最大内存空间的大小。例如:若计算机的地址总线的宽度为32位,则最多允许直接访问4GB的物理空间,所以最多支持4G内存。一个CPU的寻址能力为8K,那么它的地址总线的宽度为13。
控制总线:对外部器件进行控制,其宽度决定了CPU对外部器件的控制能力。
设有一个64KX32位的存储器(每个存储单元为32位),其存储单元的地址宽
度为64K=2^16,总共16位。这里32位可以说是每个存储单元为32位,也可以理
解为数据总线宽度是32。
1.输入设备和输出设备
输入设备:
键盘:字符/数字键、功能键、控制键
鼠标:常见操作有滑动、单击、双击、拖动
扫描仪:图形、图像输入设备
其他输入设备:触摸屏、声音输入设备、手写输入设备、条形码阅读器、
光学字符阅读器OCR
输出设备:
显示器:分辨率(清晰程度)、可视角度(观看范围)、信息响应时间
(流畅情况)、对比度(亮度的比值)
打印机:激光打印机、喷墨打印机、针式打印机
绘图仪:按照人们的要求自动绘制图形的设备
2.CPU与外设之间进行交换数据的方式
CPU与外设之间进行交换数据的方式:
直接程序控制
- 立即程序传送方式(无条件传送或同步传送) :/O接口总是准备接收来自主机的数据或向主机输入数据,无需查看接口的状态
- 程序查询方式:CPU通过查询执行程序查询外设的状态进行判断是否准备好,简单且容易实现,但降低了CPU的利用率
中断方式
I/O接口准备好后会发送中断信号通知CPU, CPU确认后保存正在执行程序现场转而执
行I/O中断服务程序
直接存储器存取DMA方式
数据的传送由DMA控制器进行控制,不需要CPU的干涉,只能进行简单的数据传送操
通道控制方式
CPU按约定格式准备数据和命令,然后启动通道,通道执行相应的通道程序完成所要求的操作
1.主要性能指标
2.系统可用性
分类 指标 含义 CPU主要性能指标 主频 CPU时钟频率
主频越高CPU的速度越快
主频=外频X倍频
内存总线速度 CPU与二级高速缓存和内存之间的通信速度 扩展总线速度 CPU与扩展设备之间的数据传输速度 计算机系统的效率 响应时间 从用户输入完整的操作命令到系统开始显示
应答信息为止的这段时间吞吐量 单位时间内系统完成的工作量 周转时间 用户提交作业到执行后该作业返回给用户所需的时间
平均无故障时间→(MTTF)
平均故障修复时间→(MTTR)
平均故障间隔时间→(MTBF)
系统可用性MTTF/(MTTR+MTTF)X 100%
➢系统的可用性取决于MTTF (平均无故障时间,表示系统的可靠性)及MTTR (平
均修复故障时间,表示系统的可维护性)。
➢
MTBF值越大,MTTR值越小,整个系统的可用性就越高。
➢在实际应用中,一般MTTR很小,所以通常认为MTBF≈MTTF。
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in
给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at
如thisanswer中所述,Array.new(size,object)创建一个数组,其中size引用相同的object。hash=Hash.newa=Array.new(2,hash)a[0]['cat']='feline'a#=>[{"cat"=>"feline"},{"cat"=>"feline"}]a[1]['cat']='Felix'a#=>[{"cat"=>"Felix"},{"cat"=>"Felix"}]为什么Ruby会这样做,而不是对object进行dup或clone? 最佳答案 因为那是thedocumenta
Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包
目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks
技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进
如何计算两个字符串之间的字符交集?例如(假设我们有一个名为String.intersection的方法):"abc".intersection("ab")=2"hello".intersection("hallo")=4好的,男孩女孩们,感谢你们的大量反馈。更多示例:"aaa".intersection("a")=1"foo".intersection("bar")=0"abc".intersection("bc")=2"abc".intersection("ac")=2"abba".intersection("aa")=2一些补充说明:维基百科定义intersection如下:Int