【JavaEE】進程

目錄

一.馮諾依曼體系結構

二.CPU的核心概念

核心數

頻率(Clock Speed 或時鐘頻率)

如何選擇合適的CPU

三.指令的執行

1.什么是指令

1.取指令

2.解析指令

3.執行指令

4.訪問內存(Memory):

5.寫回結果(Write Back):

四.進程

1.進程的概念

2.特點

3.進程的三種基本狀態

4.創建與終止

?5.進程通信

6.進程管理

7.進程控制塊(PCB)

8.進程調度*

分時復用

總結


一.馮諾依曼體系結構

什么是馮諾依曼體系結構?先來了解一下計算機祖師爺--馮諾依曼

馮·諾依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利數學家、計算機科學家、物理學家,是20世紀最重要的數學家之一。馮·諾依曼是布達佩斯大學數學博士,在現代計算機、博弈論、核武器和生化武器等領域內的科學全才之一,被后人稱為“現代計算機之父”、“博弈論之父”。

馮諾依曼體系結構,又稱為“普林斯頓結構”,是一種計算機體系結構的設計思想,是由馮諾依曼在1945年提出。以下是該結構的核心思想和特點:

核心思想:將程序指令和數據存儲在同一個讀寫存儲器中,從而實現程序指令的存儲和執行。

特點:

  1. 二進制表示:數據和指令都是使用二進制形式(0和1)表示,這使得計算機內部的數據處理和傳輸更為簡單和高效。
  2. 統一的存儲器:數據和侄子存儲在同一個存儲器上,通過地址來區分。這種設計簡化了存儲器的管理,并允許程序指令和數據之間的靈活轉換。
  3. 順序執行:計算機按照存儲器中的程序指令順序執行,每條指令執行完畢之后,程序計數器會自動指向下一條指令。
  4. 五大組成部分:馮諾依曼體系結構下的計算有五大基本部分組成。

? ? ? ? ? ? ? ? ?1.中央處理器(CPU)CPU是由控制器和運算器共同構成的

? ? ? ? ? ? ? ? ? ???控制器:相當于指揮官,根據內存中的指令來指揮完成各種操作。

? ? ? ? ? ? ? ? ? ???運算器:用來處理算術運算和邏輯運算。

? ?? ? ? ? ? ? ? ?2.存儲器(memory):用來存儲數據和指令。分為主存儲器(如RAM)和輔助存儲器(如硬盤、u盤、光盤等)。主存儲器提供了快速的讀寫能力,輔助存儲器則提供了大容量的存儲空間。

? ? ? ? ? ? ? ? ? 3.輸入設備(Input Devices):輸入設備允許用戶或其他系統向計算機輸入數據。常見的輸入設備包括鍵盤、鼠標、掃描儀、攝像頭等。

? ? ? ? ? ? ? ? ? 4.輸出設備(Ouput Devices):輸出設備用于將計算機處理后的數據以人可以理解的形式展示出來。如揚聲器、耳機、顯示器、打印機等。

5.指令和數據同一存儲:在馮諾依曼體系結構中,指令和數據通過同一條總線傳輸到運算器,這種設計簡化了計算機內部的結構。

6.指令的執行是順序的:除非程序指令中包含跳轉指令,否則指令是按照它們在存儲器中的順序執行的。

二.CPU的核心概念

CPU(中央處理單元)是計算機硬件的核心部件,負責執行計算機程序中的指令,處理數據控制其他硬件設備的操作。

  • 指令集:CPU執行指令的基礎集合,這些指令定義了CPU可以執行的操作,如算術運算、數據傳輸、控制操作等。
  • 控制單元(Control Unit,CU):負責指令的解碼和執行流程的控制,確保指令按正確的時序執行。
  • 運算單元(Arithmetic Logic Unit,ALU):負責協調和控制CPU內核的操作,包括指令的解碼和執行。
  • 緩存:提供快速的數據存取,減少CPU和主內存之間的數據傳輸延遲。
  • 并行處理:現代CPU通常具有多個核心,每個核心可以獨立執行指令。這種多核設計允許CPU并行處理任務,從而提高整體性能。

核心數

定義:核心數是指在CPU中獨立的處理單元數量。每個核心都是一個完整的處理單元,能夠執行指令、進行計算和處理數據。

在任務管理器中,可以查看計算機的核心數

優勢:多核心CPU能夠同時處理多個線程或進程,對多任務處理和并行計算非常重要。核心數的增加可以提高CPU的多任務處理能力和并行計算能力,尤其是在運行多線程應用程序時。

適用場景:視頻編輯、3D渲染、科學計算等需要大量并行處理的應用。

頻率(Clock Speed 或時鐘頻率)

定義:CPU中的頻率通常指的是時鐘頻率,即CPU的時鐘速度,它表示CPU內部的時鐘振蕩器產生周期性信號的速率,單位是赫茲(Hz)。時鐘頻率是衡量CPU性能的一個重要指標,它決定了CPU每秒可以執行多少個時鐘周期,從而影響CPU執行指令的速度。(1GHz【千兆赫茲】=10^9Hz)?

性能:更高的時鐘頻率通常意味著更好的性能,因為CPU可以在單位時間內執行更多的操作。

如何選擇合適的CPU

在選擇CPU時,需要考慮預算、使用場景、性能要求等。

辦公或者家庭使用:通常選擇中低端的CPU即可;

游戲使用:如果有游戲需求的話,不僅要牢牢CPU,還要考慮GPU,大多數游戲對CPU的要求并不高,但對于一些3A大作,需要比較高的性能。

專業工作負載:如視頻編輯、3D渲染、工程模擬等,這些任務通常需要強大的多線程性能。因此,考慮購買具有更多核心和更高線程數的CPU。

三.指令的執行

1.什么是指令

指令(instruction)是指示計算機執行特定操作的命令。它是計算機程序的基本構建塊,由計算機的中央處理器(CPU)解釋和執行。每條指令都代表了一種操作,比如數據傳輸、算術運算、邏輯判斷、控制轉移等。

由編程語言編寫的程序,最終都要被翻譯成“CPU上執行的二進制指令”

指令執行過程為:

取指令--->分析指令--->執行指令

1.取指令

  • 程序計數器(Program Counter,即PC):計算機中央處理器(CPU)中的一個特殊寄存器,存儲著當前正在執行指令的地址或者下一條要執行的指令的內存地址。
  • 內存讀取:根據程序計數器PC中的值從程序存儲器讀取出指令,送到指令寄存器。
  • PC更新:當指令被讀取之后,PC會自動遞增,執行下一個指令的地址。

2.解析指令

解析指令:指令寄存器中的指令被解碼,確定操作碼(Opcode)和操作數(Operand)。

?操作數尋址:根據操作數尋找操作的地址。

3.執行指令

  • 讀取數據:把操作數的內存數據讀取出來,并存放到寄存器中。
  • CPU執行解碼階段確定的操作,這可能包括算術運算、邏輯運算、數據傳輸或控制操作。
  • 執行階段可能涉及ALU(算術邏輯單元)進行計算,或者訪問寄存器和內存進行數據讀取或寫入。

4.訪問內存(Memory):

  • 如果指令需要訪問內存(例如,加載或存儲數據),這個階段會進行內存讀寫操作。

5.寫回結果(Write Back):

  • 執行結果寫回到CPU寄存器或內存中,以便后續指令可以使用這些結果。

當完成上述步驟之后,CPU會重復這一過程,開始取下一條指令,直到最后一條指令結束。

遇到跳轉指令、電源或硬件故障、遇到異常或錯誤等,會使CPU停止或中斷。

示例:

?

?

四.進程

進程是操作系統中的一個核心概念,用于描述系統中正在運行的程序及其相關狀態。操作系統負責進程的創建、調度、同步、通信和終止等任務,以確保系統的高效和穩定運行。

1.進程的概念

進程是程序程序的一次運行,是系統進行資源分配和調度的基本單位。每個進程都有一系列的屬性,包括進程ID(Process ID)、狀態、程序計數器(Program Counter)、寄存器集合、堆棧、內存限制、打開的文件列表、訪問權限和安全屬性等。

2.特點

  1. 動態性:進程是程序的一次執行過程,它隨著時間的推移而創建、運行和終止。
  2. 并發性:計算機系統允許同時存在多個進程,它們可以并發執行,共享計算機的資源。
  3. 獨立性:每個進程都擁有自己的地址空間,一個進程的執行通常不會影響到其他進程。
  4. 異步性:進程的執行順序和速度可能不同于程序代碼的順序和速度,因為進程可能會被中斷和恢復。
  5. 結構特征:進程通常由正文段(代碼)、數據段(靜態數據)、堆(動態分配的內存)和棧(局部變量和函數調用信息)等組成。

3.進程的三種基本狀態

進程在其運行的過程中會經歷多種狀態,以下是進程的三種基本狀態:

  • 就緒狀態(Ready):進程已經準備好執行,等待CPU調用。
  • 運行狀態(Running):進程正在CPU中執行。
  • 阻塞狀態(Blocked或Waiting):當進程因為等待某些事件(如I/O完成、獲取特定的資源或信號量)而無法執行時,它處于阻塞狀態。在等待的事件發生之前,進程不會被執行。

4.創建與終止

除了上述的三種基本狀態,進程還有另外的兩種狀態:

  • 創建(Created或New)當進程正在被創建,還沒有準備好執行時,它處于創建狀態。在這個狀態下,操作系統正在為進程分配所需的資源,初始化進程控制塊(PCB)。
  • 終止(Terminated或Exit)當進程已經完成執行或被強制終止時,它處于終止狀態。在這個狀態下,操作系統會釋放進程占用的資源,并從系統中移除進程。

?5.進程通信

進程通信(Inter-Process Communication,簡稱IPC)是指在不同進程之間傳送數據或信號的一些技術和方法。以下是幾種常見的進程通信方式:

  1. 管道(Pipes):半雙工(即雙方可以相互通信,但一方傳送時另一方不能傳送)的通信方式。可以在父子進程間或兄弟進程間建立通信,分為匿名管道和命名管道
  2. 消息隊列(Message Queues):允許一個或多個進程向隊列中寫入消息,其他進程則可以讀取隊列中的消息。提供了一種異步的通信機制。
  3. 共享內存(Shared Memory):允許多個進程訪問同一塊內存空間,是最快的IPC方式,因為它不需要數據復制。但是,需要同步機制來防止多個進程同時寫入同一內存區域。
  4. 信息量(Semaphores):用于控制對共享資源的訪問,可以實現進程的同步或互斥。
  5. 套接字(Sockets):用于不同主機上的進程進行網絡通信,也可以用于同一主機上的進行間的通信。
  6. 文件:進程可以讀取文件來交換數據,是一種簡單但并不是最高效的IPC。

6.進程管理

一個操作系統上的進程比較多,所以需要管理

1.描述:通過結構體或類(主流系統c/c++實現的),把進程的各種屬性表示出來。對于Linux操作系統,使用"PCB“這樣的結構體來描述進程信息,PCB稱為進程控制塊。

2.組織:通過數據結構把上面的多個結果體串起來,并進一步進行各種增刪查改。

創建新的進程(雙擊exe,運行起程序),就相當于創建了一個PCB結構體,并且插入鏈表中。當結束進程時,就是把PCB從鏈表上刪除掉,并且釋放這個PCB結構體。在查看進程列表時,就是在遍歷這個鏈表,依次顯示出對應的信息。

7.進程控制塊(PCB)

PCB是操作系統用于管理進程的一種數據結構。PCB通常由操作系統內核維護,用于存儲和管理進程的狀態信息、資源信息和其他與進程相關的信息。PCB通常會包含以下幾種信息:

  1. 進程標識符(PID)唯一的標識一個進程。同一時刻,一個機器上的多個進程之間的PID是唯一的,不會重復,系統內部許多操作都是通過PID找到對應的進程的。
  2. 內存指針(一組):用來描述進程依賴度指令和數據在內存的哪個區域內。在操作系統運行exe時,就會讀取exe中的指令和數據,加載到內存中。(說明進程的執行需要一定的內存資源
  3. 文件描述符表:描述進程打開了哪些文件,對應硬盤上的數據,在進程中,打開了某個文件,就會在順序表中添加一項。(說明進程的執行也需要一定的硬盤資源)

8.進程調度*

定義:進程調度是操作系統中的核心功能之一,它負責決定哪個進程將獲得CPU時間以及它們將獲得多長時間。進程調度的目標是在多任務環境中實現高效和公平的CPU時間分配,以提高系統的吞吐量、響應時間、資源利用率和用戶體驗

在操作系統中,進程調度的關鍵就是:分時復用

分時復用

定義:分時復用是進程調度的一種重要的特性,允許多個用戶或任務共享同一臺計算機的資源,每個用戶或任務都感覺像是獨占整個計算機系統,通過快速切換CPU在多個用戶或任務之前進行分配,給每個用戶或任務分配一小段連續的時間片,從而實現分時復用。

并發/并行都是由系統內核統一調度的,統稱為“并發”?

在進程調度,主要與以下幾個屬性有關:

進程狀態、進程的優先級、進程的上下文、進程的記賬信息

在前面,已經把進程的狀態詳細說明,這里就不展開寫。

進程的優先級:優先級高的進程先執行,低的后執行。

進程的上下文:一般CPU會同時執行多個進程,即分時復用,一個進行執行一會就要從CPU上調走,過一段時間之后還會調度到CPU上沿著上次執行的結果,繼續往后執行

進程的記賬信息:能記錄和跟蹤進程使用系統資源的情況,以便于操作系統能過進行資源管理和性能評估。還可以用于實施公平的資源分配策略,合理的利用系統資源。

總結

馮諾依曼體系結構:現代計算機的基礎,定義了計算機的基本組成部分(輸入設備、輸出設備、控制器、運算器、存儲器)和它們的交互方式。

CPU的兩個重要指標核心數、頻率

CPU執行命令的流程:取指令-->解析指令-->執行指令

進程控制塊(PCB):是管理進程的一種數據結構,用于存儲進程的各種信息。

進程管理:當運行exe程序時,相當于創建了一個PCB結構體,并且將這個結構體串到鏈表中。

進程調度:決定了哪個線程獲得CPU的時間以及時長,能夠合理地分配系統資源,進程調度與進程的狀態、進程的上下文、進程的優先級以及進程的記賬信息有關

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

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

相關文章

視頻解碼故障案例兩則

案例1 綠邊 故障分析: 這個能明顯看到視頻上方出現綠色半透明邊帶。這說明Y數據正常。UV數據不正常。 它顯然與視頻幀的垂直分辨率設置有關。 UV數據和Y數據是連續放置的,如果上方出現彩色數據失調,說明這部分數據實際仍然是Y數據。也就是…

為什么我在go語言里從前端接收到的參數是數字28546.123456,但是我不能使用float32只能使用float64呢?

在 Go 語言中,當你從前端(例如通過 HTTP 請求)接收數據時,這些數據通常以字符串的形式到達后端。然后,后端需要將這些字符串解析或轉換為適當的類型,比如 float32 或 float64。 然而,如果你發現…

JAVASE進階day08(Map雙列集合)

HashMap 1.HashMap基本使用 package com.lu.day08.map;import java.util.HashMap; import java.util.Map; import java.util.Set;public class MapDome {public static void main(String[] args) {HashMap<String , String> map new HashMap<>();//添加后者修改-…

H264視頻編碼中Annex B 格式介紹

Annex B 格式是 H.264 (也稱為 AVC) 視頻編碼標準中的一種數據表示格式&#xff0c;用于將視頻數據從編碼器傳輸到解碼器。它主要用于流媒體傳輸和文件存儲。 文章目錄 Annex B 格式的定義Annex B 格式的主要特點Annex B 與其他格式的對比Annex B 格式示例將 H.264 數據從 MP4…

查詢(q_proj)、鍵(k_proj)和值(v_proj)投影具體含義

查詢(q_proj)、鍵(k_proj)和值(v_proj)投影&#xff0c;這些投影是自注意力機制的核心組件&#xff0c;特別是在Transformer架構中。 讓我們通過一個簡化的例子來說明&#xff1a; import numpy as np# 假設輸入維度是4&#xff0c;注意力頭數是2 input_dim 4 num_heads 2 …

每天一道Java面試題系列之--Spring如何解決循環依賴問題

面試題&#xff1a;Spring如何解決循環依賴問題&#xff1f; 問題背景&#xff1a; 在Spring框架中&#xff0c;循環依賴通常發生在單例&#xff08;Singleton&#xff09;作用域的bean之間。當兩個或多個bean在它們的構造函數中相互引用時&#xff0c;Spring容器在創建這些b…

電腦32位和62位是什么意思

在現代計算機世界中&#xff0c;32位和64位是兩個常見的術語&#xff0c;但許多用戶可能不太清楚它們的確切含義以及它們之間的區別。本文將詳細介紹32位和64位計算機的基本概念、如何查看您的計算機是32位還是64位&#xff0c;以及它們對用戶的實際影響。 32位與64位的基本概…

算法之工程化內容(1)—— Linux常用命令

目錄 1. cd 命令 2. pwd 查看當前工作目錄路徑 3. SSH遠程登錄 4. ln -s 軟鏈相關 5. mkdir 新建空目錄 6. cp 復制 7. chown 權限改寫 8. 進程相關&#xff08;nohup/ ps/ kill&#xff09; 9. tar -czvf/ tar -xzvf&#xff0c;zip/ unzip解壓縮文件 10. df/ du/ free 11. hi…

MySQL篇七:復合查詢

文章目錄 前言1. 基本查詢回顧2. 多表查詢3. 自連接4. 子查詢4.1 單行子查詢4.2 多行子查詢4.3 多列子查詢4.4 在from子句中使用子查詢4.5 合并查詢4.5.1 union4.5.2 union all 前言 前面我們講解的mysql表的查詢都是對一張表進行查詢&#xff0c;在實際開發中這遠遠不夠。 1.…

【高中數學/指數函數】比較a=0.6^0.9 b=0.6^1.5 c=1.5^0.6的大小

【問題】 比較a0.6^0.9 b0.6^1.5 c1.5^0.6的大小 【解答】 指數函數y0.6^x是減函數&#xff0c;因為0.9<1.5,所以0.6^0.9>0.6^1.5,即a>b; 指數函數y1.5^x是增函數&#xff0c;1.5^0.6>1.5^01>0.6^0.9,即c>a; 綜上&#xff0c;得出c>a>b的結論。 …

【運維】docker批量刪除臨時鏡像(兩種方式)

docker批量刪除Tag<none>的臨時鏡像 在開發的時候&#xff0c;需要經常發布開發包&#xff0c;在使用docker build構建鏡像的時候&#xff0c;同一個版本經常會使用相同tag&#xff0c;頻繁打包一段時間后&#xff0c;本地會出現很多Tag<none>的臨時鏡像&#xff…

【MySQL】MySQL中的字段類型和區別

文章目錄 前言一、說明舉例1. 數值類型2. 字符串類型3. 日期和時間類型 二、總結 前言 在設計數據庫和創建表時&#xff0c;理解MySQL中的各種字段類型及其區別是非常重要的。每種類型都有其特定的用途和存儲需求。在本文中&#xff0c;我們將詳細討論MySQL中的各種字段類型&a…

uniapp如何發送websocket請求

方法1&#xff1a; onLoad() {uni.connectSocket({url: ws://127.0.0.1:8000/ws/stat/realTimeStat/,success: (res) > {console.log(connect success, res);}});uni.onSocketOpen(function (res) {console.log(WebSocket連接已打開&#xff01;);uni.sendSocketMessage({d…

Xinstall揭秘:APP推廣數據背后的真相,讓你的營銷更精準!

在這個移動互聯網時代&#xff0c;APP如同雨后春筍般涌現&#xff0c;但如何在這片紅海中脫穎而出&#xff0c;成為每一個開發者與運營者面臨的共同難題。其中&#xff0c;APP推廣統計作為衡量營銷效果、優化推廣策略的關鍵環節&#xff0c;更是不可忽視的一環。今天&#xff0…

[GDOUCTF 2023]Tea writeup

通過strings找到關鍵函數 int __fastcall main_0(int argc, const char **argv, const char **envp) {char *v3; // rdi__int64 i; // rcxchar v6; // [rsp20h] [rbp0h] BYREFint v7; // [rsp24h] [rbp4h]int v8; // [rsp44h] [rbp24h]int four_key[12]; // [rsp68h] [rbp48h]…

你知道滾筒式高速視覺檢測機外觀怎么“看”出產品質量嗎?

點火線圈膠套是一種用于保護點火線圈絕緣部分的膠質套管。這種膠套通常由高溫耐磨的橡膠或硅膠材料制成&#xff0c;具有良好的絕緣性能和耐高溫性能。點火線圈膠套的作用是防止點火線圈與外部環境接觸&#xff0c;防止受潮、灰塵或化學物質的侵蝕&#xff0c;同時起到絕緣和保…

python怎么調用cmd命令

關于python調用cmd命令&#xff1a; 1、python的OS模塊 OS模塊調用CMD命令有兩種方式&#xff1a;os.popen()、os.system()都是用當前進程來調用。 OS.system是無法獲取返回值的。當運行結束后接著往下面執行程序。用法如&#xff1a;OS.system("ipconfig"). OS.…

隨身WiFi市場亂象橫生,隨身WiFi測評最好的格行隨身WiFi如何引領變革?

在當今隨身WiFi市場亂象頻發、內卷嚴重的背景下&#xff0c;消費者對于產品的性能與商家是否會后臺割韭菜依舊存疑&#xff0c;尤其是“隨身WiFi到底卡不卡&#xff1f;”的問題&#xff0c;成為了廣大消費者關注的重點。然而&#xff0c;在眾多品牌中&#xff0c;格行隨身WiFi…

【音頻特征提取】傅里葉變換算法源碼學習記錄

目錄 背景快速理解FFT&#xff08;快速傅里葉變換&#xff09;IFFT&#xff08;逆傅里葉變換&#xff09;STFT&#xff08;短時傅里葉變換&#xff09; 代碼實現FFT源代碼IFFT源代碼FFT、IFFT自己實驗STFT源代碼STFT自己實驗 總結 背景 最近用到了相關操作提取音頻信號特征&am…

Vue3 根據相對路徑加載vue組件

一、設置動態組件加載器 1、"DynamicFormLoader.vue" <template><div><component :is"formComponent" v-if"formComponent" /></div> </template><script setup> import { ref, watch } from vue; import …