计算机组成原理核心知识点总结&面试笔试要点[通俗易懂]

作为一名计算机专业的学生,计算机组成原理、计算机网络、操作系统这三门课程可以说是专业核心基础课,是至关重要的,其内容是一名合格的coder所必备的知识集;非科班出身的程序员要是想要有所提升,也需要认真学习这三门课程,可以快速形成计算机知识的结构体系,理解计算机底层原理,在工作实践中可以借鉴优秀的设计;而且很多互联网公司在笔试和面试中都会涉及到这三门课程的知识点,因此我通过视频学习对这三门课程就行…

大家好,又见面了,我是你们的朋友全栈君。

  作为一名计算机专业的学生,计算机组成原理、计算机网络、操作系统这三门课程可以说是专业核心基础课,是至关重要的,其内容是一名合格的coder所必备的知识集;非科班出身的程序员要是想要有所提升,也需要认真学习这三门课程,可以快速形成计算机知识的结构体系,理解计算机底层原理,在工作实践中可以借鉴优秀的设计;而且很多互联网公司在笔试和面试中都会涉及到这三门课程的知识点,因此我通过视频学习对这三门课程就行复习巩固,同时分三篇博客记录总结。

计算机组成原理

一 计组之概述篇

  1. 计算机的发展历史
    第一阶段(1946-1957):电子管计算机 特点:集成度低,体积大,功耗高,运行速度慢,操作复杂。
    第二阶段(1957-1964):晶体管计算机 特点:相对电子管计算机,体积小,速度快,功耗低,可靠性高,配备显示器。
    第三阶段(1964-1980):集成电路计算机 特点:操作系统诞生。
    第四阶段(1980-至 今):超大规模集成电路计算机 特点:集成度高,速度快,体积小,价格低,用途广泛。
    第五阶段( f u t u r e) :生物计算机&&量子计算机 …

  2. 计算机的分类
    超级计算机、大型计算机、迷你计算机(普通服务器)、工作站、微型计算机(个人计算机)

  3. 计算机的体系与结构
    冯·诺伊曼体系:将程序指令数据一起存储的计算机设计概念结构,存储器+控制器+运算器+输入设备+输出设备。
    冯·诺伊曼体系
    现代计算机的结构:以存储器为核心,解决冯·诺伊曼体系瓶颈问题(CPU与存储设备之间的性能差异)。
    在这里插入图片描述

  4. 计算机的层次
    在这里插入图片描述

  5. 计算机的字符与编码集
    字符编码集的历史:ASCII码 –> Extended ASCII码
    中文编码集:GB2312、GBK、Unicode(统一码、万国码)

二 计组之组成篇

  1. 计算机的总线与I/O设备
    a.计算机的总线(Bus)
     概述:连接多个设备或者接入点的数据传输通路。
    作用:解决不同设备之间的通信问题。
     分类:片内总线(高集成度内部的信息传输线)、系统总线(细分为:数据总线&地址总线&控制总线,是CPU、主内存、IO设备、各组件之间的信息传输线)
     总线的仲裁:为了解决总线使用权的冲突问题,三种方法:链式查询、计时器定时查询、独立请求。
    b.常见的输入输出设备
     字符输入设备:键盘
     图形输入设备:鼠标、数位板、扫描仪
     图像输出设备:显示器、打印机、投影仪
    c.输入输出接口的通用设计
     数据线:I/O设备与主机进行数据交换的传送线(单向&双向)。
     状态线:I/O设备状态向主机报告的信号线。
     命令线:CPU向I/O设备发送命令(读写信号、启动停止信号)的信号线。
     设备选择线:主机选择I/O设备进行操作的信号线。
    d.CPU与I/O设备的通信
     程序中断:提供低速设备通知CPU的一种异步的方式,CPU可以在高速运转的同时兼顾低速设备的响应。
     直接存储器访问(DMA):
    在这里插入图片描述

  2. 计算机的存储器
    a.存储器的分类:
     按照存储介质:半导体存储器(内存、U盘、固态硬盘)、磁存储器(磁带、磁盘)
     按照存取方式:随机存储器RAM(随机读取,与位置无关)、串行存储器(按顺序查找,与位置有关)、只读存储器ROM(只读不写)
    b.存储器的层次结构
    在这里插入图片描述
    缓存-主存层次:局部性原理,在CPU与主存之间增加一层速度快容量小的Cache,解决主存速度不足的问题。
    主存-辅存层次:局部性原理,主存之外增加辅助存储器,解决主存容量不足的问题。
    局部性原理:是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
    在这里插入图片描述
    c.计算机的主存储器
     内存RAM(随机存取存储器Random Access Memory):通过电容存取数据,掉电将丢失所有数据。
    d.计算机的辅助存储器
    e.计算机的高速缓存
     工作原理:命中率是衡量缓存的重要性能指标,理论上CPU每次都能从高速缓存取数据的时候,命中率为1。
    在这里插入图片描述
    在这里插入图片描述
    高速缓存的替换时间:当缓存没有数据,需要从主存载入数据的时候。
    高速缓存的替换策略:随机算法、先进先出算法(FIFO)、最不经常使用算法(LFU)、最近最少使用算法(LRU)。

  3. 计算机的CPU
    a.计算机的指令系统
     机器指令的形式:操作码(指明指令所要完成的操作)+地址码(给出操作数或操作数的地址);
     机器指令的操作类型:数据传输、算术逻辑操作、移位操作、控制指令;
     机器指令的寻址方式:指令寻址(顺序寻址+跳跃寻址)、数据寻址(立即寻址(速度快)+直接寻址(寻找操作数简单)+间接寻址(寻址范围大,速度慢))
    b.计算机的控制器
     作用:控制器是协调和控制计算机运行的。
     组成:程序计数器(存储下一条指令的地址)、时序发生器(发送时序脉冲)、指令译码器(控制器的主要部件之一,翻译操作码+地址码)、指令寄存器(控制器的主要部件之一,从主存或缓存存取计算机指令)、主存地址寄存器(保存当前CPU正要访问的内存地址单元)、主存数据寄存器(保存当前CPU正要读或写的主存数据)、通用寄存器(比一般专用寄存器大,可以暂时存放或传送数据或指令,可保存ALU的运算中间结果)。
    c.计算机的运算器
     作用:进行数据运算加工。
     组成:数据缓冲器(输入缓冲暂时存放外设送过来的数据,输出缓冲暂时存放送往外设的数据)、ALU(算术逻辑运算)、状态字及寄存器(存放运算状态和运算控制信息)、通用寄存器(比一般专用寄存器大,可以暂时存放或传送数据或指令,可保存ALU的运算中间结果)。
    d.计算机指令执行的过程
     指令执行过程:取指令-分析指令-执行指令
    (3-10-0629)
    CPU的流水线设计:因运算器和控制器不能同时工作,CPU的综合利用率并不高,所以CPU的流水线设计可以提高CPU的利用率,提高大概3倍。

三 计组之计算篇

  1. 进制运算的基础知识
    进位制:即进制,是一种计数方式,亦称进位计数法,有限种数字符号来表示无限的数值。
    传送门——>关于进制转换推荐看文
  2. 二进制数据的表示方法
    a.有符号数和无符号数
    原码表示法:0表示正数,1表示负数,规定符号位位于数值的第一位;表达简单,容易理解,但运算复杂。
    b.二进制的补码表示法
    定义:(4-4-0104)
    引入目的:为了消除减法(未完全实现)引入补码的概念,使用正数代替负数。
    规律:负数的补码等于反码+1,如十进制数-7,反码表示为1,1000,补码表示为1,1001。
    举个小例子计算题:(4-4-0622)
    c.二进制的反码表示法
    定义:(4-5-0216)
    引入目的:找出原码和补码之间的规律,消除转换过程中的减法操作。
    规律:负数的反码等于原码除符号位外按位取反,如十进制数-7,原码表示为1,0111,反码表示为1,1000
    举个小例子计算题:(4-5-0330)
    d.小数的二进制补码表示
    定义:(4-6-0032)
    上述两个整数的反码补码计算规律同样适用。
  3. 二进制数据的运算
    a.定点数与浮点数
    定点数:小数点固定在某个位置。
    浮点数的表示格式:符号、阶码、尾数
    (4-7--555)
    浮点数的表示范围:单精度± (2-2^-23) × 2127
    双精度± (2-2^-52) × 21023 其中大于浮点数绝对值最大的数为上溢,小于绝对值最小的数据为下溢
    浮点数的规格化:尾数使用纯小数、尾数最高位必须是1。
    b.定点数的加减法运算
    加法运算:数值位与符号位一同运算,并将符号位产生的进位自然丢掉(模2^n舍去)。
    (4-8-0107)
    举两个小栗子计算题(整数和小数):(4-8-0509)(4-8-0607)
    减法运算:将B[补码]转换成-B[补码]来计算,其中-B[补码]=B[补码]连同符号按位取反,末尾加1,例如B[补码]=1,0010101 ,则-B[补码]=0,1101011
    举个小栗子计算题:(04 08-1654)
    c.浮点数的加减法运算
    步骤:对阶(使得阶码一致,尾数才可以运算)–>尾数求和–>尾数规格化–>舍入–>溢出判断
    运算:先进行对阶,后与定点数的加减法相同。
    举个小栗子计算题:
    (4-9-1315)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    d.浮点数的乘除法运算
    乘法:阶码相加,尾数求积。
    除法:阶码相减,尾数求商。

四 计组之实践篇

  1. 实现双向链表
    单向链表:节点1–>节点2–>节点3–>节点4–>节点5 其中每一个节点都有下一个节点的地址或引用。
    双向链表:节点1⇋节点2⇋节点3⇋节点4⇋节点5 每一个节点都有上一个和下一个节点的地址和引用。
    双向链表优点:可以快速找到上/下节点,也可以快速去掉链表中的某一个节点。
    传送门——>实现双向链表
  2. 实现FIFO缓存置换算法
    淘汰缓存时,把最先进入链表的结点淘汰掉。
    传送门——> 实现FIFO缓存置换算法
  3. 实现LRU缓存置换算法
    传送门——> 实现LRU缓存置换算法
  4. 实现LFU缓存置换算法
    传送门——> 实现LFU缓存置换算法

五 重要知识点及笔&面试常考题目

传送门——>计算机组成原理试题1
传送门——>计算机组成原理试题2
传送门——>计算机组成原理试题3

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128595.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月12日 上午7:40
下一篇 2022年4月12日 上午8:00


相关推荐

  • linux重启syslog服务命令_win7到正在启动进不去

    linux重启syslog服务命令_win7到正在启动进不去在CentOS6.x中,日志服务已经由rsyslogd取代了原先的syslogd。RedHat公司认为syslogd已经不能满足工作中的需求,rsyslogd相比syslogd具有一些新的特点:基于TCP网络协议传输日志信息。更安全的网络传输方式。有日志信息的即时分析框架。后台数据库。在配置文件中可以写简单的逻辑判断。与syslog配置文件相兼容。rsyslogd日志服…

    2022年8月15日
    7
  • java subset_如何使用Java NavigableSet类的subSet()方法

    java subset_如何使用Java NavigableSet类的subSet()方法使用该 subset 方法从限制中获取元素 首先 创建 NavigableSet 并添加元素 NavigableSet newTreeSet lt gt set add 10 set add 25 set add 40 set add 55 set add 70 set add 85 现在 使用 subset 方法 set subSet 40 85 以下是实现 sub

    2026年3月17日
    3
  • 激活visio2013的产品密钥_visio激活确认id

    激活visio2013的产品密钥_visio激活确认id最近需要用Visio,由于密钥过期了,也不知道怎么重新输密钥,于是网上搜索,终于找到了一个方法。KMSpico工具,安装完后直接打开点击左边红色按钮就可以了。如图:最后附上工具链接https://pan.baidu.com/s/1Ya2twOrHkKLrPu9WgHf8_Q…

    2022年8月13日
    7
  • Android一个ListView列表之中插入两种不同的数据

    http://www.cnblogs.com/roucheng/ Android一个ListView列表之中插入两种不同的数据代码如下:更多特效:http://www.cnblogs.c

    2021年12月22日
    56
  • metricbeat监控mysql_Metricbeat 参考指南(步骤1:安装Metricbeat)

    metricbeat监控mysql_Metricbeat 参考指南(步骤1:安装Metricbeat)步骤 1 安装 Metricbeat 你应该尽可能安装 Metricbeat 接近你要监视的服务 例如 如果你有 4 台运行 MySQL 的服务器 建议你在每个服务器上运行 Metricbeat 这允许 Metricbeat 从本地主机访问你的服务 并且不会导致任何额外的网络流量 也不会在出现网络问题时阻止 Metricbeat 收集数据 多个 Metricbeat 实例的指标将在 Elasticsearc 服务器上合并 在你开始

    2026年3月19日
    2
  • Java零基础快速入门的方法

    Java零基础快速入门的方法各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java。因此,也是吸引了不少年轻人投入到Java的学习之中。​所以,今天就跟大家分享一份系统的Java学习教程路线图,零基础也可以无压力的走进Java,学习Java!第一阶段:Java语言入门到精通学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我

    2022年6月3日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号