A. 一个计算机程序必须装入什么存储器中才能运行
计算机程序必须在主存储器(也称之为随机读写存储器或简称RAM)中才可以被执行
B. 要运行一个程序,这个程序必须被装载到
所以把代码从存储器拷贝到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 有页、块的概念特别是擦除,必须块擦除。硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理 这就是为什么程序都是由 硬盘、光盘等外存读入内存再执行的原因。
C. “程序一定要装到内存储器中才能运行”这句话是对还是错
“程序一定要装到内存储器中才能运行”这句话是对的。
计算机处理信息的过程是:硬盘—到—内存—到—CUP,所以是到CPU才能运行。
D. 计算机执行的程序在没有启动时存放在()中
计算机执行的程序在没有启动时存放在外存中。
PC机常见的外存储器有软盘存储器、硬盘存储器、光盘存储器等。磁盘有软磁盘和硬磁盘两种。光盘有只读型光盘CD-ROM、一次写入型光盘WORM和可重写型光盘MO三种。
(4)程序必须存在哪里扩展阅读:
存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。内存储器最突出的特点是存取速度快,但是容量小、价格贵;外存储器的特点是容量大、价格低,但是存取速度慢。内存储器用于存放那些立即要用的程序和数据;外存储器用于存放暂时不用的程序和数据。内存储器和外存储器之间常常频繁地交换信息。
外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。
E. 程序必须存放在哪里才能被cpu访问并执行
程序安装到硬盘的哪个盘符都可以运行,如果要开机执行程序可以在启动项中添加程序
F. 程序数据存储在什么地方
不过,寄存器的数量十分有限,所以寄存器是根据需要由编译器适当地分配。作为一个程序员,我们对此没有直接的控制权,也没办法在程序里头感觉到寄存器的任何存在迹象。 Stack 栈位于一般的RAM(random-access memory,随机访问内存)中。处理器通过其指针(“栈指针”,stack pointer)获得处理的直接支持。栈指针若向下(后)移,会分配新的内存;若向上(前)移,则会释放那些内存。这是一种特别快、特别有效率的数据存储方式,速度仅次于寄存器。由于Java编译器有责任产生“将stack指针前后移动”的程序代码,所以它必须能够完全掌握它所编译的程序中“存在stack里头的所有数据的实际大小和存活时间”。如此一来便会限制程序的弹性。由于这个限制,尽管有些Java数据要存储在栈里——特别是对象句柄,但Java对象并不放到其中。 Heap 堆Heap是一种通用性质的内存存储空间(也存在于RAM中),用来置放所有Java对象。“内存堆”或“堆”(Heap)胜过stack之处在于,编译器不需知道究竟得从堆里分配多少存储空间,也不需知道从堆上分配的空间究竟要存活多长的时间。因此,用堆存储数据时会得到更大的灵活性。要求创建一个对象时,只需用new即可。执行这些代码时,会在堆里分配空间。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会比从栈里分配花掉更长的时间(假设你真的可以在Java中像C++一样地从stack上产生对象的话)! Static Storage 静态存储空间 这儿的“静态”(Static)是指“位于固定位置”(也在RAM里头)。静态存储空间存放着“程序运行期间”一直存在的数据。可用static关键字将某个对象内的特定成员设为静态,但Java对象本身永远都不会置入静态存储空间。 Constant Storage 常量存储空间 常量值通常被直接置于程序代码里头。因为它们永远都不会改变,所以也是安全的。有的常数需要严格地保护,所以可考虑将它们置入只读存储器(read-only memory,ROM)中。 Non-RAM Storage 非RAM存储空间 若数据完全存活于程序之外,则程序不运行时数据仍继续存在,脱离了程序的控制范围。其中两个最主要的例子便是“串流化对象(streamed objects)”和“持久性对象(persistent objects)”。在串流化对象形式中,对象会被转换为一连串的字节(bytes)流,这些bytes通常会被传送给另一台机器。而在持久性对象形式中,对象被存储于磁盘,即使程序运行结束,这些对象还能够继续保有。这种类型的存储空间的特点在于,它们能够将对象转换为可存储于其他媒介的形式,并在需要时,将所存储的数据还原成可存储于RAM中的一般对象。Java提供了对“轻量级持久性(Lightweight persistence)”的支持。新版本有可能提供更完善的解决方案。