问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

计算机是怎样运行程序的?

发布网友 发布时间:2022-04-23 03:45

我来回答

4个回答

热心网友 时间:2023-10-13 18:09

为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据,然后由处理器执行指令。整个过程可以总结为编译、链接、装载、执行。

1、编译

编译过程又可以被分为两个阶段:编译、汇编。

编译是指编译器读取字符流的源程序,对其进行词法与语法的分析,将高级语言指令转换为功能等效的汇编代码。 

汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。

2、链接

链接的主要内容是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。链接又分为静态链接和动态链接:

静态链接是指在编译阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大;

动态链接则是指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去。

3、装载

程序在经过链接后,得到了可执行文件,下一步就需要将可执行程序加载到内存中。

由于现代操作系统均采用分页的方式来管理内存,所以操作系统只需要读取可执行文件的文件头,之后建立起可执行文件到虚拟内存的映射关系,而不需要真正的将程序载入内存。

4、运行

加载器将可执行目标文件中的代码和数据从磁盘复制到内存中,然后通过跳转到程序的第一条指令或入口点来运行程序。

在程序的运行过程中,CPU发现有些内存页在物理内存中并不存在并因此触发缺页异常,此时CPU将控制权限转交给操作系统的异常处理函数,操作系统负责将此内存页的数据从磁盘上读取到物理内存中。

数据读取完毕之后,操作系统让CPU jmp到触发了缺页异常的那条指令处继续执行,此时指令执行就不会再有缺页异常了。

扩展资料

为使计算机按预定要求工作,首先要编制程序,无论是最早的操作系统还是现代操作系统,程序的运行都是计算机工作的本质。

早期计算机是单任务执行,由程序员直接编写操作系统可以识别的机器语言,到现在可以实现多道程序并行,并且程序的开发由更利于程序员理解的高级语言编写,源程序在经过一系列翻译过程,变成计算机理解的机器语言,再执行。

整个程序执行的过程,需要CPU、内存、程序代码、设备等配合,才能实现程序要表达的功能。

参考资料来源:百度百科-计算机

热心网友 时间:2023-10-13 18:09

概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做那些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。20世纪80年代以来ALU和控制单元(二者合成*处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)指令如同数据一样在计算机内部是以二进制来表示的。比如说,10110000就是一条Intel x86系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。它们通常由者数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构

热心网友 时间:2023-10-13 18:10

简单讲,你把它想象*排队,轮到谁谁就去呗!

热心网友 时间:2023-10-13 18:10

建议你去了解汇编。。。我也不明不白的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酒驾缓刑节保证书怎么写 合同法律咨询免费 这款充电宝可以带上飞机吗? 倪俊卿成就及荣誉 江苏种牛站有几家? 山东宏正牧业有限公司服务承诺 吃早餐后抽血会影响体检结果吗 电脑如何设置护眼模式(台式电脑如何设置护眼模式) 电脑显示器设置护眼电脑屏幕怎么设置比较护眼 广告机是否支持分屏显示功能? C++程序的执行顺序是什么? 程序执行的特点是什么啊 一个C程序的运行是从什么开始到什么结束的? excel表格如何打印指定区域 excel表格中怎样设置打印区域? Excel表格如何设置打印区域? 念珠菌性龟头炎擦什么药好? 如何添加我运营的公众号 微信公众平台运营者怎么邀请绑定 微信公众号绑定运营者账号,提示无权限绑定运营者账号操作 怎么回事啊?求解!_百度问一问 设置微信公众号运营者绑定老是接收不到邀请信息啊,到底怎么回事! 显示“无权限绑定运营者的操作”怎么解决? 无权限绑定运营者的操作?为什么? 微信公众号绑定运营者账号,提示无权限绑定运营者账号操作是什么原因... 微信公众号里设置的运营怎么绑定手机? 手机运营商账号绑定怎么绑定 不是自己的运营车怎么绑定自己手机 怎么绑定微信公众号运营者的微信 微信公众号如何绑定运营者且有危险吗? 微信公众号绑定运营者账号,提示无权限绑定运营者账号操作 怎么回事啊... C#的程序执行顺序 简答题:计算机执行程序的过程 自残一会儿后,手不流血了,手也没有什么力气,头还有点晕,不怎么站得稳了还,这是怎么回事 自残后怎么处理伤口 三岁的小朋友自残撞头 心理问题,每次和男朋友吵架他都会自残,打自己头,只... 关于自残的问题! 会自残的人是什么心理 自残的人是什么心理? 自残是心理有问题吗? 火腿面怎么做 自残行为是心理疾病吗 芹菜火腿面的做法步骤图,芹菜火腿面怎么做 关于"自残"的心里问题 豆腐火腿面的做法步骤图,豆腐火腿面怎么做 自残是正常的吗 麻辣酸菜火腿面的做法步骤图,怎么做好吃 经常自残,会得什么病?? 一生气就发疯,想自残撞头,怎么回事 有朋友自残,我要怎么劝?