什么是程序?

什么是程序?,第1张

程序可以看作对一系列动作的执行过程的描述。刚才我们描述的是个形式非常简单的程序,实际上这个过程也可能变得复杂。例如,轮到取款时发现带的是个错误的储蓄卡,你就需要同家取卡,再次排队,这样就出现了重复性动作,步骤也会相应增加。

我们使用计算机,就是要利用计算机处理各种小同的问题。但是,计算机不会自己思考,它是人类手中的木偶啊,因此我们要明确告诉它做什么工作以及做哪几步才能完成这个工作。

试想一下,计算机程序执行的整个过程是怎样的呢?

计算机完成一件我们分配给它的任务,就像“取钱”这件工作,它按照我们的命令去做,我们说“立正”,它不能“稍息”,这样在我们的支配下完成预定工作。

这里,我们所下达的每个命令称为指令,它对应着计算机执行的一个基本动作。我们告诉计算机按照某种顺序完成系列指令,这一系列指令的集合称为程序。

扩展资料:

在国标《质量管理体系 基础和术语》GB/T19000—2008/ISO9000:2005中第3.4.5条 程序procedure中对于“程序”的定义进行了规定。

一个环节,内部嵌套着一系列复杂的列逻辑慎密的一个组件,如若一个地方出问题则会影响到整个主体(可以理解为事务)。

术语定义

在中华人民共和国国家标准《质量管理体系 基础和术语》GB/T19000—2008/ISO9000:2005(代替GB/T19000—2000)中第3.4.5条 程序procedure中对于“程序”的定义是“ 为进行某项活动或过程(3.4.1)所规定的途径。”

程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。

参考资料:百度百科-程序

一个程序可以产生多个任务,但是一个任务只能对应一个程序,由一个程序产生。

为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据。从计算机的底层来说,这是由高级语言代码转译成机器语言而被CPU所理解,进行加载。

如果您在一个符合大多数的计算机上, *** 作系统例如Windows、Linux等,加载并执行很多的程序,在这种情况下,每一个程序是一个单独的映射,并不是计算机上的所有可执行程序。

一般的,程序是由高级语言编写,然后在编译的过程中,被编译器/解释器转译为机器语言,从而得以执行。

扩展资料:

程序设计的规范

程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。

程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。

程序设计规范是进行程序设计的具体规定。程序设计是软件开发工作的重要部分,而软件开发是工程性的工作,所以要有规范。语言影响程序设计的功效以及软件的可靠性、易读性和易维护性。专用程序为软件人员提供合适的环境,便于进行程序设计工作。

参考资料来源:百度百科-程序

参考资料来源:百度百科-程序设计

程序是计算机指令的集合,它以文件的形式存储在磁盘上。说白了你的所有的可运行软件都是以程序形式存在于硬盘上的。如果程序启动了(运行了)程序被加载后运行于内容中就形成了一个进程。进程只是线程的容器,里面至少包含一个线程,具体的功能需要由程序员编程通过线程执行相关的 *** 作。如有兴趣,以下为C++中对 进程 线程 程序的孙鑫老师一个说明。

进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。

进程由两个部分组成:

1、 *** 作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。

2、地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。若要使进程完成某项 *** 作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。

单个进程可能包含若干个线程,这些线程都“同时” 执行进程地址空间中的代码。

每个进程至少拥有一个线程,来执行进程的地址空间中的代码。当创建一个进程时, *** 作系统会自动创建这个进程的第一个线程,称为主线程。此后,该线程可以创建其他的线程。系统赋予每个进程独立的虚拟地址空间。对于32位进程来说,这个地址空间是4GB。

每个进程有它自己的私有地址空间。进程A可能有一个存放在它的地址空间中的数据结构,地址是0x12345678,而进程B则有一个完全不同的数据结构存放在它的地址空间中,地址是0x12345678。当进程A中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程A的数据结构。当进程B中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程B的数据结构。进程A中运行的线程不能访问进程B的地址空间中的数据结构,反之亦然。

4GB是虚拟的地址空间,只是内存地址的一个范围。在你能成功地访问数据而不会出现非法访问之前,必须赋予物理存储器,或者将物理存储器映射到各个部分的地址空间。

4GB虚拟地址空间中,2GB是内核方式分区,供内核代码、设备驱动程序、设备I/O高速缓冲、非页面内存池的分配和进程页面表等使用,而用户方式分区使用的地址空间约为2GB,这个分区是进程的私有地址空间所在的地方。一个进程不能读取、写入、或者以任何方式访问驻留在该分区中的另一个进程的数据。对于所有应用程序来说,该分区是维护进程的大部分数据的地方。线程

线程由两个部分组成:

1、线程的内核对象, *** 作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。

2、线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。

当创建线程时,系统创建一个线程内核对象。该线程内核对象不是线程本身,而是 *** 作系统用来管理线程的较小的数据结构。可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。

线程总是在某个进程环境中创建。系统从进程的地址空间中分配内存,供线程的堆栈使用。新线程运行的进程环境与创建线程的环境相同。因此,新线程可以访问进程的内核对象的所有句柄、进程中的所有内存和在这个相同的进程中的所有其他线程的堆栈。这使得单个进程中的多个线程确实能够非常容易地互相通信。

线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。

因为线程需要的开销比进程少,因此在编程中经常采用多线程来解决编程问题,而尽量避免创建新的进程。线程运行

*** 作系统为每一个运行线程安排一定的CPU时间 —— 时间片。系统通过一种循环的方式为线程提供时间片,线程在自己的时间内运行,因时间片相当短,因此,给用户的感觉,就好像线程是同时运行的一样。

如果计算机拥有多个CPU,线程就能真正意义上同时运行了。互斥对象

互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。

互斥对象包含一个使用数量,一个线程ID和一个计数器。

ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7901482.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存