計算機是如何執行指令的

計算機組成

現在所說的計算機基本上都是馮諾依曼體系的計算機。其核心原理:

馮·諾依曼計算的核心思想是將程序指令和數據以二進制形式存儲存儲在同一存儲器中,并使用相同的數據格式和處理方式來處理它們。這種存儲程序的設計理念使得計算機能夠以可編程的方式執行不同的任務,而不需要對硬件進行物理修改。

在馮·諾依曼計算中,計算機由以下幾個主要組件組成:控制器、運算器、存儲器、輸入設備、輸出設備。
在這里插入圖片描述

存儲器(Memory):用于存儲程序指令和數據。存儲器被劃分為地址單元,每個單元存儲一個字節的數據。程序和數據按照地址的順序存儲在存儲器中,并通過地址來訪問。算術邏輯單元(Arithmetic Logic Unit,ALU)用于執行算術和邏輯操作控制器(Controller):協調各個組件的操作,控制指令的執行和數據的傳輸。輸入/輸出設備(Input/Output Devices):用于與外部世界進行交互,例如鍵盤、鼠標、顯示器、磁盤驅動器等。

程序是如何加載的

由 馮諾依曼體系,我們知道程序想要執行,必需先加載到計算機的內存中。首先來看一下程序加載過程。這里以 Java 程序為例。

在IDE或者文本編輯器中寫 java 程序,如:

/*** @author shengjk1* @date 10/21/23*/
public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld!");}
}

編譯,編譯成 Java 二進制的字節碼

javac HelloWorld.java

在這里插入圖片描述

編譯后的文件,加載至 JVM 中并執行

java HelloWorld

借助 JVM 的類加載器,將 HelloWorld.Class 加載到 JVM 中

JVM 的內存區域會分為兩種:數據區和指令區

數據區包括:

1. 堆(Heap):堆是 Java 程序運行時動態分配對象的區域。所有通過 new 關鍵字創建的對象都存儲在堆中。堆是 JVM 中最大的一塊內存區域,被所有線程共享。
2. 方法區(Method Area):方法區用于存儲類的元數據信息,包括類的結構、常量池、靜態變量、編譯器優化后的代碼等。方法區也被稱為永久代(Permanent Generation)或元空間(Metaspace)。
3. 棧(Stack):棧用于存儲方法執行時的局部變量、方法參數、方法調用和返回的信息。每個線程在運行時都有自己的棧,稱為線程棧。棧的大小是固定的,并且棧中的數據是按照后進先出(LIFO)的順序進行操作。
4. 本地方法棧(Native Method Stack):本地方法棧類似于棧,但用于執行本地方法(Native Method)的數據和調用信息。
5. PC 寄存器(Program Counter Register):PC 寄存器存儲著當前線程執行的字節碼指令地址。當線程切換時,PC 寄存器的值會保存和恢復。

指令區包括:

指令區用于存儲 Java 程序的字節碼指令。字節碼是 Java 程序的中間表示形式,由編譯器生成。JVM 在指令區中解釋和執行字節碼指令。

如下:
在這里插入圖片描述

程序在計算機中如何執行

1. 程序計數器(Program Counter,PC)的初始化:JVM通過將程序計數器(PC)的值設置為程序的入口點( 通常就是main方法 )來初始化。程序計數器是一個特殊的寄存器,它存儲下一條要執行的指令的地址。
2. 取指:CPU根據程序計數器中存儲的地址,從存儲器中獲取下一條要執行的指令。
3. 譯碼:CPU對獲取的指令進行解碼,確定其操作類型和所需的操作數。
4. 操作數獲取:如果指令需要操作數,CPU從存儲器或寄存器中獲取操作數的值。指令中的地址或寄存器標識符確定操作數的位置。
5.執行:CPU根據指令的操作類型和操作數執行相應的操作。這可能涉及算術運算、邏輯運算、內存訪問等。
6.結果存儲:執行操作后,CPU將結果存儲在存儲器或寄存器中,以供后續指令使用或輸出到外部設備。
7.更新程序計數器:CPU根據指令的執行情況更新程序計數器的值,以指示下一條要執行的指令的地址。
8.重復執行:重復執行第2步到第7步,直到程序的所有指令都被執行完畢。這樣,程序中的指令按照順序逐條執行,實現了整個程序的功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166009.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何從 C# 制作報表到 FastReport Cloud

眾所周知,我們的世界在不斷發展,新技術幾乎每天都會出現。如今,不再需要在辦公室內建立整個基礎設施、雇用人員來監控設備、處理該設備出現的問題和其他困難。 如今,越來越多的服務提供業務云解決方案,例如FastReport…

合并PDF出現OOM異常

優化方法一:使用PdfSmartCopy類代替PdfCopy類。這個類可以在合并PDF文件時,檢測并消除重復的對象,從而減少內存的占用。您可以參考以下代碼示例: //創建一個Document對象 Document document new Document();//創建一個PdfSmartC…

SpringBoot 項目實現讀寫分離

SpringBoot 項目實現讀寫分離 一、讀寫分離介紹 當使用Spring Boot開發數據庫應用時,讀寫分離是一種常見的優化策略。讀寫分離將讀操作和寫操作分別分配給不同的數據庫實例,以提高系統的吞吐量和性能。 讀寫分離實現主要是通過動態數據源功能實現的&…

我的虛擬人物介紹

背景 大家好,我是小欣,是這個博客的虛擬助手。在這里,我將為大家提供各種有趣、實用、甚至是意想不到的信息。作為一個年輕的語言模型,我的目標是為你們呈現出最有趣和有深度的內容。 我喜歡與大家分享知識、解答問題&#xff0…

AI“胡說八道”?怎么解?

原創 | 文 BFT機器人 01 引言 近年來,人工智能產業迅猛發展,大型語言模型GPT-4發展勢頭強勁,OpenAI推出ChatGPT、微軟推出Bing、馬斯克推出“最好的聊天機器人Grok”……科技巨頭紛紛入局AI領域,引入人工智能作為辦公工具的行業…

合封芯片未來趨勢如何?合封優勢能否體現?

芯片已經成為現代電子設備的核心組件。為了提高系統的性能、穩定性和功耗效率,一種先進的芯片封裝技術——合封芯片應運而生。 合封芯片作為一種先進的芯片封裝技術,合封芯片是一種將多個芯片(多樣選擇)或不同的功能的電子元器件…

AIGC專題報告:生成式人工智能用例匯編

今天分享的是AIGC系列深度研究報告:《AIGC專題報告:生成式人工智能用例匯編》。 (報告出品方:德勤) 報告共計:16頁 生成式人工智能(AI)的興起 生成式AI給人類文明創造了無限的可…

文心一言 VS 訊飛星火 VS chatgpt (142)-- 算法導論12.1 2題

二、用go語言,二叉搜索樹性質與最小堆性質(見 6.1 節)之間有什么不同?能使用最小堆性質在 O(n)時間內按序輸出一棵有 n 個結點樹的關鍵字嗎?可以的話,請說明如何做,否則解釋理由。 文心一言: 在二叉搜索樹(Binary …

如何更有效地進行薪酬調查?

薪酬調查是企業管理中非常重要的一環,它不僅能夠幫助企業了解員工的薪酬情況,還可以為企業提供合理的薪酬標準,從而吸引和留住優秀人才。然而,進行薪酬調查并不是一項簡單的任務,需要有一定的方法和技巧,許…

ruoyi 若依框架采用第三方登錄

在項目中,前后端分離的若依項目,需要通過統一認證,或者是第三方協帶認證信息跳轉到本系統的指定頁面。需要前后端都做相應的改造,由于第一次實現時已過了很久,再次重寫時,發現還是搞了很長時間,…

PasteNow for mac剪貼板工具

PasteNow 是一款簡單易用的剪貼板管理工具,可幫助用戶快速存儲和管理剪貼板上的文本和圖片內容。用戶可以使用 PasteNow 軟件快速將文本內容保存到不同的筆記或頁面中,也可以方便地將剪貼板上的圖片保存到本地或分享給其他應用程序。 此外,P…

如何進行合理的股權激勵?

股權激勵是企業激勵員工和管理層的一種重要手段,通過向員工提供股權,可以將他們與企業利益緊密聯系在一起,激發員工的積極性和創造力,提高公司的績效和競爭力。然而,要實施合理的股權激勵,需要考慮多個因素…

vue 通過ref調用router-view子組件的方法

由于用的vue2.7版本,但用了vue3 setup的語法; 注意:是vue2的template結構,vue3的setup語法;非這種情況需要舉一反三。 處理方案: 1、對router-view加上ref template修改 直接對router-view加上ref&#x…

金蝶云星空和四化智造MES(WEB)單據接口對接

金蝶云星空和四化智造MES(WEB)單據接口對接 對接系統:四化智造MES(WEB) MES系統是集成生產管理、品質管理、設備管理、BI數據中心、庫存管理、工時管理、數據采集、看板管理等為一體的綜合性生產管理系統。通過強調制造…

wagtail-安裝配置

系列文章目錄 文章目錄 系列文章目錄安裝虛擬環境安裝wagtail查看安裝后的包 創建wagtail項目安裝依賴遷移創建超級用戶運行項目 安裝虛擬環境 https://blog.csdn.net/gsl371/article/details/117917857 安裝wagtail (wagenv) C:\djproject\wagprj>pip list Package V…

淘寶88vip退費問題

前一段時間,雙十一活動,想著開個淘寶的88vip領卷買東西會實惠一點,另外,它自帶的權益也不錯,有餓了嗎、網易云、優酷或者芒果的。但是到了當天發現,一個vip的卷也用不了,頓感什么惱火&#xff0…

synchronized的輕量級鎖居然不會自旋?

《Java并發編程的藝術》中說到「如果失敗,表示其他線程競爭鎖,當前線程便嘗試使用自旋來獲取鎖」,并且下文所配的流程圖中明確表示自旋失敗后才會升級為重量級鎖,但《深入理解Java虛擬機》又說「如果出現兩條以上的線程爭用同一個…

超聲波雪深傳感器冬季里的科技魔法

在冬季的某個清晨,當你打開大門,被厚厚的積雪覆蓋的大地映入眼簾,你是否曾想過,這片雪地的深度是多少?它又如何影響著我們的生活和環境?今天,我們將為你揭開這個謎團,介紹一款神秘的…

眼鏡清洗機原理是怎么樣的?2023年眼鏡清洗機推薦

在日常生活中有許多小伙伴是因為看太多書或者是看太多電子產品導致近視佩戴上了眼鏡,畢竟眼鏡佩戴上后就再也離不開它了,像日常佩戴的眼鏡上會積累非常多污垢以及堆積細菌,而我們手動清洗眼鏡時不能除菌也不能清潔到縫隙中,像眼鏡…

thingsboard的WebSocket API的使用

1、參考文檔 Working with telemetry data | ThingsBoard Community Edition 2、訂閱的命令 我們需要訂閱不同的數據,那么該如何來填寫參數呢,你需要參考后端代碼 TelemetryPluginCmdsWrapper 以及訂閱返回的結果參考類:TelemetrySubscriptionUpdate 鏈接地址: https:/…