程序为什么要加载到内存运行
发布网友
发布时间:2022-04-24 13:51
我来回答
共2个回答
热心网友
时间:2023-10-15 04:56
所以把代码从存储器拷贝到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
有页、块的概念特别是擦除,必须块擦除。硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理
这就是为什么程序都是由
硬盘、光盘等外存读入内存再执行的原因。
热心网友
时间:2023-10-15 04:57
我靠
你还不太懂。
现在的windows系统都是这样的:
用户面前:使用虚拟内存地址。所有程序都是4g(32位)内存空间。
内核面前:使用物理内存地址。将当前使用的程序加载到物理内存运行,其他非当前进程在虚拟地址(硬盘)上运行。
所以你在打大型游戏和大型处理软件同时使用时,从这个界面切换到那个界面上的时间要很久。当然:开一般的网页切换使用内存少时间短你感觉不到。