计算机基础知识

计算机的组成部件

CPU

CPU 由运算器和控制器组成,在下面的冯诺依曼体系中,我直接将控制器和运算器直接合并一起来说,也就是CPU,所以你可能在一些书籍上看到冯诺依曼体系是由五大部件构成的,其中CPU 就包含了两大部件运算器和控制器。

CPU 主要的工作就是进行运算,它可以进行各种运算,并且由于包含控制器这一部件,所以也负责对其他部件(输入输出设备,存储器)有着控制的作用。

现在我们来看一下CPU 的性能指标:

打开任务管理器,点击性能,在下面就有CPU 的性能指标:

基频 / 默频:

G = 10 ^ 9 , Hz 表示一秒能进行多少次运算,2.6 GHz 说明一秒能进行 26 亿次计算


现在的CPU 会有一个实时的速度,这个速度叫做睿频 / 加速频率,CPU 会根据当前的任务量来进行频率变更,调整到合适的频率进行作业。


CPU 的核心数,分为物理核心和逻辑核心,下面的内核就是物理核心,逻辑处理器就是逻辑核心,简单理解就是一个CPU 内部有多少个人可以干活,物理核心指的是实际一共有多少人,逻辑核心指实际一共能干多少份任务。

在很早之前 CPU 是单核心的,也就是一次只能处理一个任务,如果学过操作系统的话,应该知道单道批处理系统。这就导致CPU 作业的效率十分底下,在没有多核心的情况下,研发者尽可能在原有的单核处理下提高性能,但是还是不够快,最后提出了多核心的CPU 。


CPU 的执行指令的流程:取指令,解析指令,执行指令

这些指令存储在内存中

GPU

和CPU 类似,也是做运算处理工作的,不过它是专门的,也就是不能想CPU 一样进行各种各样的运算,它主要是负责处理运算简单但是运算量很大的任务,例如:图形渲染工作(大型游戏,3D建模...),挖矿等等。

GPU还有一个我们熟悉的名字 ------ 显卡,核显表示 CPU 自带GPU ,性能稍微差一些,如果你对游戏有着极高的画质追求,一个好的显卡(GPU)是必不可少的,例如市面上的4090

寄存器

寄存器是中央处理器(CPU)内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。

一个CPU核心一共也就是几十个寄存器,寄存器的造价也是很高的,并且容量就更小了。

存储器

内存和外存都属于存储器,不过内存的造价高容量也比较小,而外存(磁盘,硬盘)造价低容量也高

CPU 访问内存的速度是十分快的,相比于CPU访问外存 的速度快上几千倍。

在手机领域中,人们常说的内存实际上就是外存,运存也就是内存,大家注意区分即可。

常见的电脑内存一般有 8G,16G,32G,只要你的超能力够大,你还可以买更大的内存空间。

输入 / 输出设备

输入设备有键盘,鼠标等等,输出设备有屏幕,音响等等。

这里的输入输出是站在CPU 的角度看待的:

其他设备

电源,主板等等...

冯诺依曼体系

操作系统

操作系统(Operation System, OS)是一组做计算机资源管理的软件的统称,操作系统是一个极为重要的系统软件.

操作系统由两个基本功能:

1)防止硬件被时空的应用程序滥用

2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

常见的操作系统有 Windows,Linux,MacOS,IOS,Android

进程

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对一个正在运行的程序的⼀种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

很多操作系统主要是由C语言编写的,也可能会夹带一些 C++.

PCB

进程控制块(Process Control Block)简称为 PCB

我们可以将PCB 理解为一个很大的结构体,这个结构体包含进程的各种属性和信息。

操作系统会对这些进程进行管理,会使用链表将这些 PCB 连接起来,这里的链表不一定只有一个链表。


PCB 的属性细分:

进程状态:就绪,执行,阻塞

就绪状态:表示进程随时可以在CPU上运行

执行状态:说明进程此时正在CPU上执行

阻塞状态:表明慈进程现在不能直接在CPU上执行

进程的优先级:

在CPU执行进程的时候,一般是多个进程并发执行的,如果此时有一个进程优先级更高,就会立刻抢占CPU资源立刻执行任务。

进程的上下文:

由于进程是并发执行的,所以在执行进程的时候要回到上次执行的状态下继续执行而不是重新执行,这就是进程的上下文

进程的记账信息:

进程的记账信息会统计每一个进程吃到了多少CPU资源,如果发现有一些进程很久都没有吃到CPU资源,那么操作系统就会分配一些CPU资源给它,避免有些进程迟迟都没有执行。

上面的四个属性涉及到进程调度的问题。


这里拓展一下并发执行和并行执行的区别

一个CPU核心上,按照分时复用,执行多个进程的方式叫做并发执行

多个CPU 核心同时执行多个进程叫做并行执行

在现代CPU中,并发与并行执行是同时存在的,程序员在写代码的时候,将并发和并行统称为并发。

相关推荐
程序员鱼皮3 天前
刚毕业,去做边缘业务,还有救吗?
计算机·程序员·互联网·求职·简历
程序员鱼皮8 天前
不敢相信,Nginx 还能这么玩?
前端·后端·计算机·程序员·编程经验
程序员鱼皮9 天前
6 年 30k star,这个明星项目停止更新!
计算机·程序员·互联网·github·编程
程序员鱼皮16 天前
1024 程序员节,我做了个闯关小游戏!
前端·后端·计算机·程序员·互联网·编程·网站·代码
程序员鱼皮17 天前
鱼厂首档自制综艺《码王争霸赛》,8 年程序员竟被半年小白血虐?
计算机·程序员·互联网·编程
AEIC学术交流中心—李老师17 天前
【SPIE独立出版 | 往届会后3个半月检索】第四届电子信息工程与数据处理国际学术会议(EIEDP 2025)
人工智能·算法·计算机·ei检索·研究生·ei会议·国际学术会议
无名之逆1 个月前
大一计算机课程之线性代数
开发语言·线性代数·考研·计算机·面试·开发·期末
小小怪下士 XIA1 个月前
JAVA的ArrayList 和 LinkedList的区别
java·开发语言·计算机·程序员·arraylist·linkedlist·区别
程序员鱼皮1 个月前
高产胜那啥,带你上线我的新项目!
前端·后端·计算机·程序员·互联网·开发·项目·编程经验
无名之逆1 个月前
线性代数入门
开发语言·线性代数·考研·计算机·面试·期末·期末速成