`

计算机程序的执行过程理解

阅读更多

<第一部分>

学过任何一门程序语言的人都会知道,一个可执行程序的形成要经过的步骤是:

编辑 ---> 编译 形成 .obj 文件 ---> 链接形成 .exe 文件。

那么计算机程序到底是怎样运行的呢?上面的简单过程我相信都可以想到。但是其实质,需要这些步骤的理由是什么?我们有没有想过呢?

首先当然是编程,需要的是程序设计语言。现在大多数我们都是使用 java,c,c++ 等高级程序语言。但是计算机所能识别的知识计算机语言即二进制代码。这需要编译器和汇编器的帮助。其次,机器语言需要加载到内存,形成运动中的程序,即进程,这就需要操作系统的帮助,进行程序的调度等。进程需要在计算机芯片 CPU 上执行才算是真正的执行,要不然就是处于等待队列中的,没有真正的运行,而程序要在 CPU 上执行必须由操作系统完成。再次,在 CPU 上执行的机器语言指令需要变成能够在一个个时钟脉冲里执行的基本操作,这需要指令集结构和计算机硬件的支持,而整个程序的执行过程还需要操作系统提供的服务和程序语言提供的执行环境。这样,一个程序到微指令执行的过程就完成了。

程序执行至少需要四个因素:

1.       程序设计语言

2.       编译系统

3.       操作系统

4.       指令集结构(计算机硬件系统)

(转自:http://blog.sina.com.cn/s/blog_724d24bf0100yfe9.html)

 

<第二部分>

java程序执行原理

<o:p> </o:p> 首先了解一下什么是计算机程序。计算机的作用在于它可以帮助人类完成计算功能,它由硬件和软件两部分组成,硬件包括中央处理器( CPU )、存储器、输入输出设备等,软件包括计算机程序、相关文档及数据。而计算机程序可以看作整个计算机系统的灵魂,它向计算机发出指令,指挥数据的输入、运算和输出,由于计算机程序的作用太重要了,因此好多人把软件和程序看成是一回事。

计算机程序是由一条条的指令组成的,但计算机所能接受的指令是由 0 1 构成的二进制数据,这叫做机器指令。让计算机算一下 1+2 等于几怎么办呢?只能向计算机输入类似于下面的代码了:

0011111 0000000 0000001 000000 00000010

当然了,具我的老师说,他的老师编写过这样机器指令程序,当时还没有键盘这种东西,首先根据程序中 0 1 的位置在纸带上打孔,然后把纸带送到机器上进行读入,然后……,试想一下,如果使用机器指令编写一个企业管理信息系统的话,得浪费多少木材资源啊,估计要毁坏一个大兴安岭。

好在对于我们来说噩梦已经结束了,如今编程语言已经从机器语言、汇编语言发展成接近人类语言的高级语言, Java 也正是一种优秀的高级程序设计语言。

我们利用 Java 语言编写程序,实际上是编写程序的源代码( source code ),程序设计者能看懂这些源代码,但计算机是不懂的, 50 多年来它们一直顽固不化,仍然只认得机器指令。

怎么才能让 Java 编写的程序能够在计算机上执行呢?

首先要利用 Java 编译器( JDK 自带的工具)把它转换成一种叫做 Java 字节码( Byte Code )的东西,这个过程叫做编译,它可以检查程序中的错误。

Java 字节码可以在计算机上运行了吗?还是不行,这种字节码只有 Java 虚拟机( JVM )才能读懂,也就是说一台计算机如果想运行 Java 程序的话,安装 Java 虚拟机是必不可少的。 Java 虚拟机连同一些必要的 Java 核心类库一起称作 Java 运行时环境,这是执行 Java 程序必不可少的工具,可以免费获得并安装。

运行 Java 程序时, Java 虚拟机首先读入字节码、对节码进行正确性,针对客户计算机平台生成对应的机器指令,由客户机器执行机器指令。

<o:p> </o:p>
    好了,我们回顾一下 Java 程序开发及运行的过程。

现在假如你是一个优秀的 Java 程序设计师,老板交给你一个非常重要的任务:为客户编写一个 Java 应用系统,这个系统具有一项高级功能——计算两个数相加的和!

你该怎么办呢?

<!--[if !supportLists]-->1.              <!--[endif]-->编写满足需求的 Java 源程序,将源程序保存为以 .java 为扩展名的文件。例如 Add.java

<!--[if !supportLists]-->2.              <!--[endif]-->利用 JDK 提供的 javac 命令将源文件编译为字节码文件,例如输入:

javac Add.java

java 编译器可以生成名称为 Add.class 的字节码文件。

<!--[if !supportLists]-->3.              <!--[endif]-->在装有 Java 运行环境的机器上执行 Add.class ,例如输入:

java Add

其他的工作交给 Java 虚拟机完成。

<!--[if !supportLists]-->4.              <!--[endif]-->你的心里暗暗想: Java 虚拟机者是个好东东。

上面介绍的是手工编译、执行 Java 程序的过程,目前有很多优秀的开发工具用于开发 Java 应用程序(如 Eclipse NetBeans Jbuilder 等),编写完代码后可以通过菜单项或快捷按钮进行编译、运行程序。但我们应该了解:在图形化界面的背后还是调用了 javac java 命令

转自:http://shenhai.iteye.com/blog/64954

 

 

 

<第三部分>

 

 

 

 

 

分享到:
评论

相关推荐

    计算机程序的正确定义

    程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。  程序(港台称之为程式...在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。

    加深对单片机的理解,单片机的指令执行过程详解

    为了加深初学者对51单片机指令的理解,现在把指令执行的过程在此详细说明,希望对你有启发! 单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段...

    计算机程序设计的要点与规范分析-.docx

    由于计算机的底层程序是由0和1组成,所以,不管使用哪种语言进行计算机程序编写,在程序执行的时候,都会最终转化成0和1的形式。 1 计算机程序设计的概念 计算机程序是指具备特别作用的指令,该指令是根据事务的时间...

    计算机程序设计(Java)-教案--单元二--Java语言开发基础.docx.docx

    计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。课堂教学计划表 计算机程序设计(Java)-教案--...

    计算机组成原理实验5- TEC-2试验计算机微程序控制器实验

    4. 进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理; 二. 实验内容 对存放在低位字节的8位有效符号补码数进行符号扩展,即将其变成16位的同值补数,结果仍保存在原寄存器中。

    计算机程序设计语言发展史和对程序设计语言未来的看法.docx

    作为信息技术中最重要的 部分,讣算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只 能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关 系到讣算机发展的重中之重;...

    计算机组成原理实验5-TEC-2试验计算机微程序控制器实验

    4. 进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理; 二. 实验内容 对存放在低位字节的8位有效符号补码数进行符号扩展,即将其变成16位的同值补数,结果仍保存在原寄存器中。

    深入理解计算机系统 英文

    从程序员的角度通过了解一个程序的执行过程深入理解计算机系统。。。

    TEC-2实验计算机微程序控制器实验二

    TEC-2实验计算机微程序控制器实验二  实验内容: 设计一条指令,实现对存放在DR寄存器中低位字节的8位有符号补码数进行符号扩展(即将其变为16位...进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理。

    哈工大-计算机系统大作业-程序人生

    本文以分析简单的入门级程序hello为切入口,从计算机系统...本文将《深入理解计算机系统》全书内容融会贯通,帮助深入理解计算机系统,了解系统如何通过硬件和系统软件的交织、共同协作以达到运行应用程序的最终目的。

    深入理解计算机系统 English 版

    这本书对编程有很大的帮助 帮助我们理解计算机系统和程序执行的过程 熟读这本书对代码的执行效率有很大的提高

    计算机组成原理实验 实验4 微程序控制器实验 设计一条加法指令

    4. 了解微指令的执行过程,掌握微程序的设计方法,理解动态微程序设计的概念 5. 进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的工作原理 二、实验内容: 设计一条加法指令,使得用绝对地址表示的内存...

    ACCP 5.0使用Java语言理解程序逻辑

    《什么是程序》 程序源于生活,是指完成事务的一种既定方式和过程,程序可以看作一系列动作的执行过程的描述。 计算机按照某种顺序完成一系列指令,这一系列指令的集合称为程序

    计算机体系结构指令调度实验报告

     (3) 用WinDLX模拟器运行调度后的程序sch-after.s ,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。  (4) 根据记录结果,比较调度前和调度后的性能。  (5) 论述指令调度对于提高CPU...

    程序设计运行报告.doc

    《高级语言程序设计》 课程设计报告 专 业: 计算机科学与技术 班级学号: 14570222 姓 名: 李天一 指导教师: 郑全英 2015年 6 月4 日 1. 课程设计目的和要求 本课程设计的目的是进一步培养学生结构化程序设计的...

    Untitled9.m

    通过实验教学加深学生对电力网数学模型概念的理解,学会运用数学知识建立电力系统的数学模型,掌握数学模型的形成过程及其特点,熟悉各种常用应用软件,熟悉硬件设备的使用方法,加强编制调试计算机程序的能力,提高...

    ACM程序设计导引及在线实践

    作者总结了多年计算机程序设计类的课程教学经验,认为在程序设计课程的教学中应该把握五个基本的教学环节:第一,让学生充分理解计算机程序在内存中的运行原理和过程。第二,以一门高级程序设计语言为例,让学生了解...

    信息技术:计算机解决问题的过程(教学设计).docx

    本节课的教学目的是让学生理解分析问题、设计算法、编写程序和调试程序等用计算机解决问题的基本过程,认识其在算法与程序设计中的地位和作用,它也是后续课程如模块化程序设计、各种算法设计等课程的基础。...

    体验计算机解决问题的过程教学设计-.docx

    体验计算机解决问题的过程教学设计-全文共6页,... 结合人工步骤,带领学生总结计算机编写程序解决问题的一般过程。 高的方程求解跃跃欲试,手动计算后发现效率低。 3.积极思考,归纳计算机编写程序解决问题的过程。

Global site tag (gtag.js) - Google Analytics