‘壹’ 可执行程序为什么在内存中运行,而不是在硬盘上
呃,可执行程序的运行也不在内存上啊,而是在CPU上运行,内存只是存储器件而已。
一个程序会被保存在硬盘上,但硬盘的速度太慢了,如果CPU直接从硬盘调用程序,程序的响应速度会很差。所以在你调用某个程序时,该程序会将主进程加载入内存,以后CPU在对该程序进行操作时,就可以从内存中提取数据和指令,毕竟内存的速度远快于硬盘,就可以大幅提高程序的响应速度。
‘贰’ 为什软件能在多种硬件上运行需要考虑
软件在多种硬件上运行需要考虑的原因是:为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须全局考虑软件与硬件的结合,以及用户的要求和软件的要求。程序和硬件结合的过程,是现在计算机把高级语言翻译成汇编语言,汇编语言翻译成机器码都是有相应的编译器自动完成,不用来手动翻译,并且自动输入计算机不用手工控制开关输入。
‘叁’ 问一个非常业余的问题 ,编写的程序如何在硬件上运行的,难道说编写程序的过程中就改变了他的电路结构吗
就目前,一般来说没有改变电路,CPU中有个叫运算器的核心组件,给定操作数和操作码(都是二进制的一串数)就会得到对应的输出,走得都是一套电路,但这套电路和家里电灯用的电路不太一样,是逻辑电路。
逻辑电路就是有一些NB开关的电路,这些开关叫“逻辑门”,比如“与门”这个开关有三根线A,B,O,只有A,B上都有点O才有电。就是用许许多多这些个NB的开关组成的阵列就让CPU会做加法和乘除法了,程序员再用这些加减乘除拼出更NB一点的功能。
不过确实有能改变电路(逻辑电路)的程序,不过这写程序是为可编程芯片设计的。
现在也有可以真正的在程序运行中改变电路的硬件,不过使用的还不是很广泛。
‘肆’ 软件程序怎么让硬件工作的
软件和硬件的关系,不是简单的谁控制谁的问题,而是相互依存的关系。
如果把软件和硬件作为一个整体的话,用人来做一个对比,可以说清这种关系。
软件基本上就是一些人为定义好的逻辑,它是一种思想,就像人的思想一样,所以CPU是人的大脑,而CPU里写的软件就是人脑中的思想。
我们这里说的硬件是一些CPU以外的各种电路,这些电路连接到CPU。有些电路是用来采集外界的信息,比如温度、湿度、电压、电流、光线、图像、声音、气味等等,将这些信息传递给CPU。而有些电路是接收CPU发出的指令,按不同的电路实现不同的功能。
比如,发出一个关灯的指令,相应电路接收到该指令后实施关灯的动作。
下面用开灯的过程分别用人和软件硬件来作一个对比:
人: 我在家里看书,太阳落山了,天渐渐变黑,我发现看不清字了,这时我想到要去把灯打开,所以我走到开关边上,伸出手按下开关,这时灯亮了,我又可以继续快乐的看书。
软件硬件:我家里有一套电灯控制系统,工作原理是,光线检测电路检测到光线变暗了,它发出一个信号告诉CPU光线已经较暗了,CUP收到该信息后,其软件逻辑为需要把灯打开,所以CPU输出开灯的指令,电灯控制电路接到指令后接通电灯的开关,这时灯亮了。
(4)程序为什么可以在硬件中运行扩展阅读:
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
1相关系统分析员和用户初步了解需求,然后列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
2系统分析员深入了解和分析需求,根据自己的经验和需求做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。
3系统分析员和用户再次确认需求。
4系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。
5系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。
6测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。
‘伍’ 程序为什么能固化在硬件上,深入浅出
ROM断电后也能保存里面的数据,所以就可以把程序写进去,焊到电路中,就形成了固化程序的硬件了
‘陆’ 程序为什么要加载到内存运行
所以把代码从存储器拷贝到RAM中,变成了bootloader的工作之一。一般的,嵌入式系统的存储器以Flash应用最广,Flash分为两种:norFlash和nandFlash,打个不恰当的比方,norFlash相当于ROM,程序可以直接在其上运行,nandFlash相当于硬盘,只负责存储程序。所以一般的bootloader代码都存储在norFlash中,上电后芯片可直接读取其上的代码来运行,而S3C2410芯片比较特别,以它为平台构建的系统可以用nandFlash来储存bootloader。因为它自带了4K的RAM,上电后通过硬件机制将存储器中的前4K代码拷贝到芯片自身的RAM里。
总结一下,硬盘、光驱、软盘等外存设备,由于接口的不同,CPU是不能直接访问的,而CPU
能访问的只有和它共享地址、数据总线的内存因此,程序无法在硬盘、光驱、软盘等外存设备上直接运行,必须读入内存运行,这就是程序加载的原因。也是BOOTLOAD
存在的原因。
BIOS等都是norFlash,程序可以直接在上面运行。
内存与外存的区别
ROM
、
norflash
、nandflash
的区别主要是接口、存储器单元组织的不同:
程序ROM、norflash
是
总线型可以随机按字节读取,容量小;nandflash
是特殊接口,只能页读,容量大
程序ROM
是字节读写单位;norflash
、nandflash
是FLASH
有页、块的概念特别是擦除,必须块擦除。硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理
这就是为什么程序都是由
硬盘、光盘等外存读入内存再执行的原因。