1.计算机概论

2023-05-16

学习linux前先来了解一下计算机概念,如果了解相关内容,可跳过本章节。

1.1 电脑

电脑是一种计算机,计算机实际是:接受用户输入的命令与数据,经由中央处理器的算术和逻辑单元运算后,产生或存储成有用的信息

 

1.1.1 电脑硬件的五大单元

CPU(中央处理器):具有特定功能的芯片,里面含有指令集。

CPU内分为两个主要的单元:算术逻辑单元和控制单元

内存:CPU读取的数据是从内存中来的,处理完毕的数据也是先写到内存,再到输出单元。内存相当于输入输出单元与CPU之间的中介。

电脑的五大单元:输入单元,输出单元,算术逻辑单元,控制单元,内存

 

1.1.2 CPU的架构

因为软件都需要经过CPU内部指令集完成。而指令集分为两种:精简指令集(RISC)和复杂指令集(CISC)

(1)精简指令集(RISC):指令精简,指令数据多而复杂。ARM架构

(2)复杂指令集(CISC):每条指令长而复杂,但每个指令都很丰富。X86架构

 

1.1.3 其他单元的设备

(1)系统单元:包括CPU与内存及主板相关组件

(2)存储单元:内存与辅助内存

(3)输入输出单元

 

1.1.4 运作流程

(1)CPU:脑袋。判断与控制各部分活动

(2)内存:脑袋中存放正在被思考的数据的区域。用来提供给脑袋判断用的信息

(3)硬盘:脑袋中存放回忆的记忆区域

(4)主板:神经系统。脑袋发布命令,通过神经系统传导给手脚

(5)各项接口设备:手脚皮肤眼睛等

(6)显卡:脑袋中的影像。

(7)主机电源:心脏

所以,最重要的是CPU和内存,CPU的数据源都来自于内存。不管是记忆,还是经验,都需要先放到内存中,CPU才能处理。

 

1.1.5 电脑的分类

超级计算机,大型计算机,迷你计算机,工作站,微电脑(我们平常用的电脑)

 

1.1.6 电脑上面常用的计算单位

(1)容量单位

1字节 = 8比特位

进制 = 1024

(2)速度单位

Hz:次数/秒

 

2.个人电脑架构与相关设备组件

我们常用的电脑通常指的是X86的个人电脑架构。X86的CPU主要提供商是Intel

 

早期芯片组通常分为两个网桥来控制各组件的通信,分别是北桥和南桥

北桥:负责连接速度较快的CPU,内存,显卡等组件

南桥:负责连接速度较慢的设备接口,包括硬盘,USB,网卡等

现在主流架构中,大多将北桥的内存控制器整合到了CPU当中。

 

2.1 执行脑袋运算与判断的CPU

CPU频率:CPU每秒可以进行的工作次数。

3.6GHz = CPU 1秒可以进行3.6*10^9次工作

(注:因为CPU的指令集,架构不同,可使用的二级缓存及运算机制不同,不能光看频率比较CPU性能。只有同款CPU才有意义)

 

(1)CPU的工作频率:外频和倍频

外频:CPU与外部组件进行数据传输时的速度

倍频:CPU内部用来加速工作性能的一个倍数

外频 * 倍频 = CPU频率速度

因为现在北桥已经被整合到CPU中,CPU的频率设计就不需要考虑要同步的外频,只需要考虑整体的频率即可

 

(2)32位和64位的CPU与总线“位宽”

因为CPU里的数据都来自内存,因此内存能提供的数据量越大,系统性能越快。

如何知道内存能提供的数据量呢?通过CPU中的内存控制芯片与内存键的传输速度“前端总线速度”来说明。

内存工作频率来自于CPU由内存控制器决定,也就是每秒工作多少次由内存控制器决定。那每次工作量是多少呢?这由位宽决定,分为32位和64位,也就是我们常说的电脑是32位还是64位,就是说,CPU每次处理内存中的数据,32位一处理或者64位一处理。显然,64位速度更快。

 

(3)CPU等级

i3,i5,i7

 

(4)超线程(HT)

因为现在CPU大多是多个内核,每个内核会将寄存器分成两组,形成逻辑上的分离,这样,可以同时处理多个任务。这就是超线程。

 

2.2 内存

已知CPU所有数据来自于内存。个人电脑的内存主要组件为动态随机存取内存(DRAM),它只有在通电时才能记录使用,断电后数据消失,这叫RAM的挥发性内存

内存要保证自己空间比要处理的数据大,因此一些用不到的会被释放,因此内存越大一般表示电脑速度越快,因为释放频率低。

 

(1)多通道设计

内存的数据位宽一般是64位,为了加大位宽,芯片厂商将两个内存集合在一起,形成双通道,位宽达到128位。

 

(2)DRAM和SRAM

因为内存往CPU传送数据的时候要通过内存控制器,这很影响速度,所以CPU内部有一个二级缓存Cache。

Cache整合到CPU内部,且频率与CPU相同,这需要通过静态随机读取内存(SRAM)帮忙

 

(3)只读存储器(ROM)

主板上组件参数可以调整,内置网卡或显卡的各项参数也会被记录到一个叫CMOS的芯片中。

BIOS:是一个写死到主板存储芯片上的一个程序,该存储芯片在没有电时也能记录数据,这就是只读存储器。

(就是我们开机按DEL进的那个页面)

 

2.3 显卡

显卡又叫VGA,对于图形影像的显示扮演着关键角色。图形影像的分辨率和颜色深度都会占用内存,因此显卡上面有集成内存也叫显存,显存容量影响分辨率和颜色深度

显卡上除了显存还有一个3D加速的芯片,叫GPU。显卡主要也是通过GPU的控制芯片来与CPU,内存等通信的。

 

2.4 硬盘与存储设备

存储设备一般有:硬盘,软盘,MO,CD,DVD,U盘等

(1)硬盘物理组成

硬盘由圆形碟片,机械手臂,磁头和主轴马达组成。

数据都是写在碟片上的,读写通过机械手臂上的磁头完成。实际运行中,主轴马达让碟片转动,然后机械手臂可伸展让磁头在碟片上面进行读写的操作。

 

(2)碟片上的数据

碟片是一个圆形,由一个个同心圆构成,每个同心圆就是一个磁道,每个磁道上由一块块被称为扇区最小物理单元组成。而磁盘有可能有多个碟片,因此所有碟片同一个磁道组合成一个柱面

 

(3)传输接口

磁盘与主板连接接口主要有SATA,USB,SAS接口。

 

(4)固态硬盘

传统硬盘需要马达去转动磁盘,这造成磁盘读取延迟。后来厂商拿闪存去只做高容量的设备,但是外形还是跟传统磁盘一样,这就叫固态硬盘,大大提高速度。

 

2.5 扩展卡与接口

常见集成到主板的组件包括声卡,网卡,USB控制器,显卡,磁盘阵列卡等

 

2.6 主板

(1)设备I/O地址与IRQ中断请求

主板负责电脑组件的通信,它怎么知道哪个设备在哪里呢?通过I/O地址与IRO

I/O地址相当于每个设备门牌号,IRO中断请求用于把设备的工作情况告诉CPU。

 

(2)CMOS和BIOS

CMOS:记录主板上重要参数,包括系统时间,CPU电压与频率,各项设备I/O地址与IRO等,因为这些都需要电,所以主板上有电池。

BIOS:写入到主板上的一个程序。在计算机启动时执行,加载CMOS中的参数,并尝试调用存储设备中的引导程序,进一步进入操作系统当中。

 

3 数据表示方式

众所周知,电脑是二进制,只认识0和1。那我们10进制,各种语言它是怎么识别的呢,这就需要转换,把我们人类的语言转换成计算机看得懂的语言。

现在常用的英文编码表是ASCII系统,这个编码表中,每个符号(英文,数字,符号)都会占用一个字节记录。每个汉字会用2个字节记录。

中文编码系统一开始是GBK,但是呢,GBK有问题,很多字会被编码成单引号双引号。

后来,我们国际组织统一制定了编码UTF-8,所以我们现在很多时候都用UTF-8。

 

4.软件程序运行

4.1 机器语言程序与编译型程序

电脑只认识0和1,CPU有一个指令集,我们需要编写CPU能看得懂的脚本它才能执行。但是这有问题,这需要了解机器语言,了解硬件相关的函数,程序不可移植,有专一性。程序员表示:打扰了。。。

我们写一些我们好理解的(比如java,python)程序,通过操作系统编译成CPU看得懂的。

 

4.2 操作系统

(1)操作系统内核

操作系统(OS)其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。它让CPU,内存,硬盘等从一个物件变的可以有秩序工作。硬件的所有操作都通过操作系统的内核实现。

内核主要是管理硬件以及提供相应功能,但是用户直接操作内核不小心做了什么误操作,那就完了。因此内核程序放置到内存当中受保护的区域,并且启动后就一直常驻在内存当中

 

(2)系统调用

有了内核之后,程序员是不是就要从研究硬件函数到研究内核提供的函数了?还是麻烦。为了简化,操作系统提供了一套应用程序编程接口(API),程序员遵循这个API开发就可以了。

由上述我们知道,最底层是硬件,然后是内核,然后是系统调用,再然后就是高级编程语言(java,C,python)

 

(3)内核功能

因为电脑最重要是CPU和内存,内核又是负责整个电脑的资源分配和管理,因此他具有以下功能:

系统调用接口,进程管理,内存管理,文件系统管理,设备驱动

 

(4)操作系统与驱动程序

 

4.3 应用程序

咱程序员干的就是应用程序

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.计算机概论 的相关文章

  • 解决vmware虚拟机环境下CentOs8 /dev/mapper/cl-root空间不足问题-使用gparted工具给磁盘分区扩容

    问题如图 xff1a 首先用命令df h查看文件系统的磁盘空间占用情况 dev mapper cl root空间用了97 xff0c 扩容它 xff01 1 首先 xff0c 关闭虚拟机 xff0c 编辑虚拟机 扩展 xff0c 我扩展了2
  • docker中 运行httpd

    1 获取 httpd 镜像 docker pull httpd 2 运行httpd 81 80 81 是docker映射的 httpd 端口 xff0c 80 是httpd设置的默认端口 进入docker中运行的httpd容器 目录实际跟服
  • openssl:Can‘t load /home/test/.rnd into RNG

    Can 39 t load home test rnd into RNG 140409534742976 error 2406F079 random number generator RAND load file Cannot open f
  • 线程同步的方式有哪些(简单易懂)

    什么是线程同步 线程同步 xff1a 这里的同步并非同时运行的意思 xff0c 而是指多线程通过特定的设置来控制线程之间的执行顺序 xff0c 如果没有同步 xff0c 那线程之间是各自运行各自的 xff01 特殊的线程同步 线程互斥可以看
  • Blazo身份认证授权示例以及如何对接统一登录平台

    Blazo的身份认证授权示例以及如何对接统一登录平台 在阅读本文之前 xff0c 希望您已经对ASP NET Core或者Web应用的身份认证机制有所了解 本文主要讲述Blazor WebAssembly模式下的身份认证和授权方法 xff0
  • Blazor页面元素授权——AuthorizeView 组件的使用

    Blazor页面元素授权 AuthorizeView 组件的使用 上篇博客我们说到了blazor的身份认证的实现 xff0c 对于AuthorizeView 组件来说 xff0c 可以通过级联参数来获取包含了用户信息的Authenticat
  • 面试经历---广州YY(欢聚时代)

    上周去YY xff08 欢聚时代 xff09 面试JAVA工程师 xff0c 现在回忆一下当时的面试过程 xff0c 面试问的问题有 xff1a 1 常用的集合类 HashMap HashTable ArrayList LinkedList
  • Linux Kernel ccflags/Android 12 GKI

    ccflags Makefile笔记 外部模块头文件的检索 当编译的目标模块依赖多个头文件时 xff0c kbuild对头文件的搜索位置有这样的规定 xff1a 1 直接放置在 Makefile 同在的目录下 xff0c 在编译时当前目录会
  • Java之反射

    目录 1 什么是反射机制 2 反射机制有什么用 3 Class类对象的三种实例化模式 1 getClass 方法 xff1a 2 类 class 3 使用Class类提供的方法 4 通过反射实例化对象 5 反射主要使用的种类 5 1Clas
  • Win10服务器配置环境变量 | import _ssl # if we can‘t import it, let the error propagate ImportError: DLL load

    起因是我拿到了学校的算力平台的账号 xff0c 登录后发现桌面上只有软件和文件夹 xff0c C盘文件根本就看不见 xff0c cmd也无法打开 xff0c 但是我又需要搭建自己的环境 我还使用Anaconda安装了python3 7 xf
  • arch linux安装

    arch linux安装 IOS制作开始安装联网分区开始安装 系统初始化grub添加window10引导安装后的配置更改国内源 问题总结体眠后不能唤醒的问题 总结 IOS制作 开始安装 联网 可以先通过ip link命令查看网卡状态 spa
  • mysql无法启动10061的错误!!!

    昨天晚上打开java项目准备联系几个功能 linux里面启动成功 tomcat也运行了 正在享受这个过程的时候 结果mysql显示cant connect localhost 10061的错误 瞬间一盆冷水搞得心情无比低落 之前遇见过一次这
  • Ubuntu 下忘记用户名和登录密码的解决方法(已经实践过,踩过坑)

    1 首先重启 长按 shift 键 xff08 多次连击esc也可以 xff09 上下箭头选择Advanced options for Ubuntu xff0c enter键进入 2 选择后缀带 xff08 recovery mode xf
  • Unity+Android GET和POST方式的简单实现API请求(人像动漫化)

    Unity与Android的简单交互 xff0c Unity打开Android相册并调用 前端时间本想着去弄个小工具 xff0c 就是图文生成视频 xff0c 可是这个的API接口的调用的测试权限死活申请不下来 xff0c 只能放弃 xff
  • 手写生产者/消费者模式(三种方式)

    1 生产者 消费者模式介绍 这种模式满足三点要求 xff1a xff08 1 xff09 生产者生产数据到缓冲区中 xff0c 消费者从缓冲区中取数据 xff08 2 xff09 缓冲区满时 xff0c 生产者线程阻塞 xff0c 进入等待
  • jar包完全解读

    本文抄自 xff1a jar包的一些事儿 前言 xff1a 作为java程序员 xff0c 日常工作就是打jar包 xff0c 可是对jar包的了解有多少呢 xff1f 一 什么是jar包 jar包就是 Java Archive File

随机推荐

  • 面试经历---YY欢聚时代(2015年11月21日上午初试、25日下午复试)

    YY欢聚时代一年多前去面试过一次 xff0c 当时鄙视了 xff0c 在现在的公司呆了1年半了 xff0c 感觉做得很不爽 xff0c 而且薪资又不满意 xff0c 所以想找个新工作 xff0c 就想去YY面试 下面将两次YY面试的经历写出
  • jenkins下载安装及环境搭建

    文章目录 jenkins下载首次启动jenkins环境配置 jenkins下载 jenkins官网下载 xff0c 输入jenkins io xff0c 出现如下界面 xff1a 点击下载 xff0c 往下滑 xff1a 选择这个war包下
  • Testng学习笔记(一)

    目录 TestNg简介1 TestNG使用流程1 1TestNG安装及使用1 2创建maven项目 xff0c 进行POM配置1 3 创建Test类1 4添加测试方法 2 TestNG常用注解及生命周期2 1常用注解2 2TestNG注解的
  • (史上最详细的解释看过来)深入理解函数栈帧

    函数的调用过程 xff08 栈帧 xff09 话说 xff0c 什么是函数栈帧 xff1f 我之前也是一脸懵逼的 xff08 xff09 xff0c 举个栗子 xff0c 先看一段简单的代码 xff1a span class token m
  • main函数参数及可变参数列表解析

    main函数的参数解析 平时写main函数大多都是int main xff0c 然后误以为main函数是没有参数的 xff0c 但在有些书上又看到main括号里有三个不怎么看的懂的参数 xff0c 其实仔细研究就会发现 xff0c main
  • 给定一棵二叉树,判断它是否是镜像对称的

    给定一个二叉树 xff0c 检查它是否是镜像对称的 在这里先解释一下镜像对称的概念 xff0c 顾名思义 xff0c 就像人站在镜子前面面对自己一样 xff0c 看到的一切都是对称的 镜中的反射与现实中的人具有相同的头部 xff0c 但反射
  • 判断一棵二叉树是否是平衡二叉树

    我们先来整理一下什么是平衡二叉树 xff1f 满足以下两点的就是平衡二叉树 xff1a 1 左右子树的高度差不能超过1 2 左右子树也是平衡二叉树 需要注意的是空树也是平衡二叉树 例如下面这棵树就不是平衡二叉树 因为对于B来说左右子树高度超
  • Fiddler实现手机抓包入门配置

    emmm 在此之前我也只是听过抓包抓包 xff0c 但是没有真正的接触到 xff0c Fiddler是一款很强大的抓包工具了 xff0c 但是一开始很多人可能会想我一样走上歧途 xff0c 所以在此总结一下 xff0c 希望看到的朋友少走弯
  • Idea使用Maven连接MySQL数据库

    连接MySQL数据库的步骤 xff1a 1 添加数据库 2 填写连接信息如图 3 填写连接信息完之后 xff0c 需要记一下jar包的位置 xff0c 用于添加jar包 4 显示jar包信息 5 添加文件夹命名java xff0c 并将其设
  • mybatis generator 生成中文字段注释

    首先 xff0c 试了好几次 xff0c 重写 DefaultCommentGenerator xff0c 创建MyCommentGenerator类实现CommentGenerator接口 xff0c 都是按照网上的方案来的 xff0c
  • org/apache/velocity/context/Context

    mybatisplus generator AutoGenerator 生成文件时报错如下 xff1a 请输入表名 xff1a alarm 14 38 28 569 main DEBUG com baomidou mybatisplus g
  • NVIDIA开源NeMo,CUDA,pytorch安装使用过程踩坑总结

    说明 Nemo cpu版本直接看文章最后一部分 xff08 linux版本的 xff09 xff0c windows下安装的话要先安装CUDA来支持GPU xff0c 在安装pytorch 在安装nemo 但是还是出问题了 xff0c 不建
  • 网络url转文件

    首先是获取springboot resource下面的文件 String fileUrl 61 ResourceUtils getURL 34 classpath 34 getPath 43 34 test txt 34 File file
  • ByteBuffer和String互转

    Charset charset 61 StandardCharsets UTF 8 String str 61 34 kj你好呀 kjlkjlkjlk 34 ByteBuffer buffer 61 ByteBuffer allocate
  • @Test单元测试注入bean 3种方式

    1 64 ContextConfiguration 64 ContextConfiguration Spring整合JUnit4测试时 xff0c 使用注解引入多个配置文件 64 RunWith SpringJUnit4ClassRunne
  • java 导出word

    目前来看 xff0c java导出word大致有6种解决方案 xff1a 1 xff1a Jacob是Java COM Bridge的缩写 xff0c 使用Jacob自带的DLL动态链接库 xff0c 并通过JNI的方式实现了在Java平台
  • JAVA visualVM 查看堆栈分配

    由于在做nlp xff0c 用到standFord nlp xff0c 堆栈分配总是一处 xff0c 所以需要这个 xff0c 正好学习一下 我用的是jdk8 5 xff0c 位于 JDK 根目录的 bin 文件夹下 xff0c 无需安装
  • Android Studio Gradle失败 Could not reolve play-services-vision-17.0.2.aar 等类似问题解决办法

    Android Studio Gradle失败 Could not reolve play services vision 17 0 2 aar 等类似问题解决办法 网上一些常规解决办法 如果上述常规解决办法尝试后 xff0c 都无法解决你
  • 利用fsl进行配准

    利用fsl进行配准 配准概念 配准就是将两个不同空间 体素 xff0c 扫描的位置不一致的nii xff0c 配准到同一个空间上 xff0c 使得两者在大脑上的相应位置就可以一一对应上了 通常MRI数据处理的步骤 xff1a 先配准到tem
  • 1.计算机概论

    学习linux前先来了解一下计算机概念 xff0c 如果了解相关内容 xff0c 可跳过本章节 1 1 电脑 电脑是一种计算机 xff0c 计算机实际是 xff1a 接受用户输入的命令与数据 xff0c 经由中央处理器的算术和逻辑单元运算后