《计算机软件保护条例》第三条规定:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。
计算机程序是由数据结构和算法构成的。
计算机程序,也称为软件,简称程序是指一组指示计算机或其他具有信息处理能力装置执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语和烹饪手法的人(体系结构)来做这个菜。
通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。
为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个引导序列开始的。
在大多数计算机中, *** 作系统例如Windows等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。
数据可以被定义为被程序处理的信息。当我们考虑到整个计算机系统时,有时程序和数据的区别就不是那么明显了。中央处理器有时有一组微指令控制硬件,数据可以是一个有待执行的程序(参见脚本编程语言),程序可以编写成去编写其它的程序所有这些例子都使程序和数据的比较成为一种视角的选择。有人甚至断言程序和数据没有区别。
编写一个程序去生成另外一个程序的过程被称之为原编程(Metaprogramming)。它可以被应用于让程序根据给定数据生成代码。单一一个程序可能不足以表示给定数据的所有方面。让一个程序去分析这个数据并生成新的程序去处理数据所有的方面可能会容易一些。Lisp就是一例支持这种编程模式的程序语言。
在神经网络里储存的权重是一种数据。正是这些权重数据,跟网路的拓扑结构一起,定义了网络的行为。人们通常很难界定这些数据到底表示什么或者它们是否可以由程序来代替。这个例子以及跟人工智能相关的其它一些问题进一步考验程序和数据的区别。
为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据,然后由处理器执行指令。整个过程可以总结为编译、链接、装载、执行。
1、编译
编译过程又可以被分为两个阶段:编译、汇编。
编译是指编译器读取字符流的源程序,对其进行词法与语法的分析,将高级语言指令转换为功能等效的汇编代码。
汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。
2、链接
链接的主要内容是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。链接又分为静态链接和动态链接:
静态链接是指在编译阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大;
动态链接则是指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去。
3、装载
程序在经过链接后,得到了可执行文件,下一步就需要将可执行程序加载到内存中。
由于现代 *** 作系统均采用分页的方式来管理内存,所以 *** 作系统只需要读取可执行文件的文件头,之后建立起可执行文件到虚拟内存的映射关系,而不需要真正的将程序载入内存。
4、运行
加载器将可执行目标文件中的代码和数据从磁盘复制到内存中,然后通过跳转到程序的第一条指令或入口点来运行程序。
在程序的运行过程中,CPU发现有些内存页在物理内存中并不存在并因此触发缺页异常,此时CPU将控制权限转交给 *** 作系统的异常处理函数, *** 作系统负责将此内存页的数据从磁盘上读取到物理内存中。
数据读取完毕之后, *** 作系统让CPU jmp到触发了缺页异常的那条指令处继续执行,此时指令执行就不会再有缺页异常了。
扩展资料
为使计算机按预定要求工作,首先要编制程序,无论是最早的 *** 作系统还是现代 *** 作系统,程序的运行都是计算机工作的本质。
早期计算机是单任务执行,由程序员直接编写 *** 作系统可以识别的机器语言,到现在可以实现多道程序并行,并且程序的开发由更利于程序员理解的高级语言编写,源程序在经过一系列翻译过程,变成计算机理解的机器语言,再执行。
整个程序执行的过程,需要CPU、内存、程序代码、设备等配合,才能实现程序要表达的功能。
参考资料来源:百度百科-计算机
计算机软件是指计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。
软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求。
计算机软件总体分为系统软件和应用软件两大类:
系统软件是各类 *** 作系统,如Windows、Linux、UNIX等,还包括 *** 作系统的补丁程序及硬件驱动程序,都是系统软件类。
应用软件可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。
计算机软件都是用各种程序设计语言编写的。最底层的叫机器语言,它由一些0和1组成,可以被某种电脑直接理解,但人就很难理解。上面一层叫汇编语言,它只能由某种电脑的汇编器软件翻译成机器语言程序,才能执行。人能够勉强理解汇编语言。人常用的计算机语言是更上一层的高级语言,比如C语言、Java语言等。这些语言编写的程序一般都能在多种电脑上运行,但必须先由一个叫做编译器或者是解释器的软件将高级语言程序翻译成特定的机器语言程序。
没有软件的计算机,也叫“裸机”,可以说是废铁一堆。计算机软件是计算机的灵魂,是计算机应用的关键。如果没有适应不同需要的计算机软件,人们就不可能将计算机广泛地应用于人类社会的生产、生活、科研、教育等几乎所有领域,计算机也只能是一具没有灵魂的躯壳。目前。以信息技术、信息产业为代表的高科技日益引起人们的关注,成为新的经济增长点。计算机软件技术作为信息技术的基础之一,已成为信息产业的主要组成部分。
*** 作系统英文名称为Operating System,简称OS,是管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。
*** 作系统负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、 *** 作网络与管理文件系统等基本事务。 *** 作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其他应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。
*** 作系统是一个庞大的管理控制程序,大致包括五个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。
目前微机上常见的 *** 作系统有DOS、UNIX、LINUX、Windows等。但所有的 *** 作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。
*** 作系统理论在计算机科学中为历史悠久而又活跃的分支,而 *** 作系统的设计与实现则是软件工业的基础与内核。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)