计算机程序和功能在哪,一个程序在计算机中是如何运行的

本文详细解析了程序如何从硬盘加载到内存,通过CPU和寄存器的配合完成计算,重点介绍了CPU缓存、内存地址和数据流动过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个程序在计算机中是如何运行的

首先看一段代码:

public class demo {

public static void main(String[] args) {

System.out.println("小朋友,你是否有很多问号?");

}

}

demo保存在哪?

如下图可见:这个java源文件保存在我本地的E盘,那它又是保存在电脑的什么部分呢?

9ba366915b2f731087d6b57efcabcfbc.png

计算机的五个基本组成部分:

运算器:运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理

控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等

存储器:存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息

输入设备:输入设备是计算机的重要组成部分,输入设备与输出设备合你为外部设备

输出设备:输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来

在计算机中,保存信息主要靠存储器,而存储器又分为内部存储器和外部存储器,内部存储器就是内存了,而这个外部存储器主要就是磁盘了,我们写的这个Java源文件就是存放在电脑中的磁盘了。

那么代码保存到磁盘中之后呢?代码被保存到磁盘之后,接下来就要CPU和内存登场。

CPU和内存

先来看看硬盘、CPU和内存的关系:

5a4c3aba40f89b1aacd7999b878279ec.png

在CPU内部设置一个缓存,可以将使用频繁的数据暂时读取到缓存,需要同一地址上的数据时,就不用大老远地再去访问内存,直接从缓存中读取即可。

从这张图可以看出,它们之间数据读取的关系,代码保存到了硬盘中,如果要执行这段代码的话,需要把这段代码从硬盘中读取到内存中,此时的代码已经变成了二进制文件存储在内存中,为了更好的去理解,我们把上面的代码再进一步改写下:

public class demo {

public static void main(String[] args) {

int a = 1;

int b = 2;

sum = a + b;

System.out.println(sum);

}

}

也就是加入了一个基础的加法运算,此时这段代码已经变成二进制文件放到了内存中,现在要继续执行,也就是要执行代码的加法操作,此时的数据a和b,也就是1和2已经是二进制的形式在内存中,现在需要把a和b做加法运算,CPU收到这个指令(将a和b相加),就会去内存中将a和b读取,然后存放到自己的寄存器中,然后由CPU中的运算器去做加法运算,得到的结果依然放到寄存器中。

内存:内存条知道吧,我们电脑中的内存条,它是属于内部存储器,主要就是用来存放数据的,也可以理解为我们这里说的内存,这是实际存在的,我们可以看得见的内存条,但是关于数据存储,怎么存储,是不是还有点模糊,那么我们抽象点来说,这个内存其实就是一个个的小格子,就像这样:

31c01797e6b27153ac629a66c2c0136a.png

这些小格子就是用来存放数据和指令的,而且每个格子都有自己的编号,这个编号大家也熟悉,就是我们经常说的内存地址。

CPU主要功能:

从内存中读取数据,然后放到寄存器中

把寄存器中的数据写入到内存

进行数学运算和逻辑运算(加减乘除,AND,OR)

依据相应的条件进行跳转,执行其他指令(一条指令跳转到另外一条指令)

CPU的重点组成部分

寄存器:存储部件,容量非常有限,主要用来存放数据

运算器:是计算的核心,操作寄存器中存放的数据

CPU和内存的交互

根据上面的代码,取数据a和b,那么读取到的数据a和b是被放到了CPU中的寄存器中了,在CPU中有两个比较重要的组件就是运算器和寄存器,寄存器有很多个,再看内存,是一个个的小格子,每个格子有编号,比如说现在数据a和b分别存放在#1和#2上,然后CPU将他们读取放在寄存器R1和R2上

5951298ee3a59790c8adba4d82a515fe.png

计算a和b的和了,然后就轮到运算器出马了,它会拿到寄存器R1和R2,也就是拿到数据a和b,然后做加法运算

174b73a1bf178bb24d85c0504f596a14.png

那么计算之后的结果也就是sum,运算器会再次把它放到寄存器,比如R1中,这个时候之前的数据b就会被覆盖,如此一来,CPU和内存就一起完成一次加法运算操作。

总结

总的来说,就是我们写的程序是放在硬盘中的,在运行的时候才会被调入到内存中,也就是说内存中的数据是从硬盘来的,而CPU中寄存器的数据又是从内存中装载进来的,然后CPU会根据相应的指令去操作寄存器中的数据,比如加减乘除什么的,以此来完成一个程序在计算机中的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值