关于编程的一些概念

来源:互联网 发布:淘宝怎么拆分订单 编辑:程序博客网 时间:2024/06/05 01:57
  这是本人在培训小组新成员时,认为程序员新手需要去理解的一些概念。但也可能是本人的一些粗俗理解。

关于编程的一些概念

 

1】什么是程序

从字面的角度理解,程序是关于事情办理的一系列步骤;从计算机的角度看,程序是用于控制计算机工作的一系列指令代码和数据的组合;从电子学的角度看,程序是在计算机内存上的一系列高电平和低电平的组合。对于程序员来说,程序是一种思想,一种逻辑。

 

2】程序在哪里运行

CPU的结构决定了程序只能运行在RAMNorFlash等一类的连续存储器上。对于硬盘和NandFlash等一类的存储器,不能用于运行程序,因为它们存储单元是不连续的。一般情况下,对于PC机,程序运行在RAM一类的内存上。而对于单片机系统,程序也有可能运行于ROMNorFlash之上。

 

3】什么是内存空间

程序本身只是一种逻辑,它需要CPU把它解释执行,使其变成一种实现。CPU在读取代码指令或访问数据时,需要利用地址总线进行寻址。地址总线的位数多少决定了CPU的寻址范围。若CPU的地址总线是8位,那么它的寻址范围是256字节。若CPU的地址总线是16位,那么它的寻址范围是64k字节。我们日常应用的PC一般使用32CPU,所以它的寻址范围是4G字节。

 

实际上,我们编写的程序的大小和程序所访问的地址都不能超出CPU的寻址范围。不然的话,CPU将访问不到超出范围的代码和地址。由于一般情况下程序运行于内存之上,因此我们把CPU的寻址范围称为程序的内存空间。在我们编程时,也把程序的内存空间简称为内存。

 

对于刚入门的程序员,很容易把程序的内存空间和PC机的物理内存条混淆。其实程序的内存空间是一个逻辑上的空间。对于复杂多任务的windows操作系统来说,内存空间是一个虚拟的空间,只有程序在真正运行时,才会映射到物理内存上运行。也许你的PC机上的内存条只有256M,但是windows上的程序可以使用4G甚至更大的内存空间。对于简单的基于指令集的单任务的单片机系统来说,程序使用的内存空间也有可能刚好就是物理内存。因为它没有象windows一样复杂的内存管理机制,但是也可以通过片选指令或程序拷贝,使多个应用程序在内存中交替运行。

 

4】程序的启动过程

程序的启动过程主要分为系统程序和应用程序两种不同的启动过程。

 

PC机在启动windows时,首先启动主板上的BIOS程序,然后BIOS把硬盘上的系统程序拷贝到内存上运行。而单片机系统的启动要依系统的具体设计而定。有些单片机从内部的ROM启动,然后跳到外部的NorFlash运行或把外部NandFlash上的程序拷贝到内存运行;也有一些直接从外部的NorFlashNandFlash启动运行。

 

多任务操作系统和单任务的单片机系统对应用程序的启动也有所区别。例如,Windows对应用程序的启动显得有些抽象。当一个程序在Windows32位系统上被启动时,Windows首先为其分配4G的虚拟内存,然后再把程序文件映射到虚拟内存的0x00400000地址运行。相对来说,单片机系统启动应用程序的过程就比较好理解。系统在内存空间里为应用程序分配一个大小固定的区域,然后通过片选指令或程序拷贝使应用程序在这个区域中交替运行。

 

5】什么是API

APIApplication Programming Interface,即应用程序接口的简称。我们学习一门程序设计语言,语言本身并没有告诉我们如何实现画图像,播放声音,控制外围设备等功能。这些功能都得由相应的系统根据不同的硬件设备具体实现。系统把实现的功能以函数的形式提供给应用程序使用。这些函数就是我们所说的API

当然,这只是狭义上的理解,因为有的系统也提供单纯软件功能的API,例如Windows内码转换函数MultiByteToWideChar()等。每个系统提供的API函数数量不一,Windows提供多达几千个API函数,而有的单片机系统只提供几十API函数。

 

6】什么是回调函数

我们编写程序常常会调用系统提供的API函数,但反过来系统也可以调用我们写好的函数。这种由我们编写好提供给系统调用的函数就称为回调函数。回调函数最大的作用之一就是当系统发生事件时可以让我们做出不同响应。例如当系统中断时,系统可以处理我们在中断回调函数里写的不同的响应程序。还有我们使用Windows API编写图形界面程序时,就需要编写一个用于处理用户各种事件的回调函数,然后把该函数指针传递给系统,等待系统的调用。系统对不同的回调函数都有不同的定义,即系统规定了回调函数的原型。

 

7】什么是硬件驱动程序

硬件驱动程序,顾名思义就是使硬件动起来的程序。实际上,驱动程序是一套用于系统与硬件设备进行通信的协议程序。驱动程序最大的任务就是协调系统与硬件设备的通信时序以及发送和接收指令码和数据。一般情况下,系统通过以下过程对硬件设备进行控制。首先,CPU的通信口和硬件设备的通信口连接,然后,驱动程序按照规定好的协议控制CPU向硬件设备发送时序脉冲和指令码,硬件设备则按照时序脉冲接收指令码并对指令码进行解释工作。

原创粉丝点击