『壹』 可執行程序為什麼在內存中運行,而不是在硬碟上
呃,可執行程序的運行也不在內存上啊,而是在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
有頁、塊的概念特別是擦除,必須塊擦除。硬碟更是有扇區、簇的概念,便於文件管理,但是也必須有專門的控制器管理
這就是為什麼程序都是由
硬碟、光碟等外存讀入內存再執行的原因。