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)」的支持。新版本有可能提供更完善的解決方案。