Java EE初階——計算機是如何工作的

1. cpu

馮諾依曼體系(Von Neumann Architecture)

? CPU 中央處理器: 進?算術運算和邏輯判斷.
? 存儲器: 分為外存和內存, ?于存儲數據(使??進制?式存儲)
? 輸?設備: ??給計算機發號施令的設備.
? 輸出設備: 計算機個??匯報結果的設備
存儲空間 :硬盤 > 內存 >> CPU
數據訪問速度 :CPU >> 內存 > 硬盤
內存:速度快,空間小,成本高,掉電后數據丟失
外存:速度慢,空間大,成本低,掉電后數據不丟失
cpu的構成:
門電路 - 半加器 - 全加器 - 加法器 - ALU運算器?
衡量cpu好壞:
1. 主頻 (基準頻率,睿頻)
單個核心的運算能力?
1s之內,一個核心能夠執行多少條指令(近似)
2. 核心數? ?
多個核心的運算能力??
打開任務管理器
12核16線程
多核+超線程

馮?諾依曼結構體系

早期計算機采用馮?諾依曼結構,該結構的精髓在于將 “執行” 和 “存儲” 功能分離。在這種體系下,CPU 執行指令前,需要從內存中讀取相應的數據和指令。這種設計理念的核心目標是實現 “解耦合”,即將計算處理單元(CPU)和數據存儲單元(內存)分開設計。這樣做的好處顯著,極大地降低了硬件設計的復雜度和成本。因為不同功能模塊可以獨立進行優化和改進,使得計算機的設計和制造更加靈活、高效。

緩存的出現

隨著硬件技術的飛速發展,CPU 的運算速度得到了極大提升,其性能提升的幅度遠遠超過了內存讀取速度的提升。這就導致了一個嚴重的問題:內存逐漸跟不上 CPU 的處理節奏,CPU 常常需要等待從內存中讀取數據和指令,從而造成了大量的時間浪費,計算機整體性能的提升受到了內存讀取速度的嚴重制約。

為了解決這一問題,緩存技術應運而生。緩存是一種高速的臨時存儲區域,它被集成到 CPU 上。緩存的主要作用是臨時存儲從內存中讀取的指令和數據。由于緩存的訪問速度遠高于內存,當 CPU 需要數據或指令時,首先會在緩存中查找。如果緩存中存在所需內容(即命中緩存),CPU 可以迅速獲取,從而避免了從相對較慢的內存中讀取數據,大大提高了 CPU 的執行效率。

流水線技術

流水線技術是進一步提高 CPU 執行效率的重要手段。傳統的 CPU 執行指令的方式是串行的,即一條指令執行完成后,才會去讀取并執行下一條指令。這種方式在 CPU 等待指令和數據從內存傳輸時會造成大量的空閑時間。

而流水線技術打破了這種串行執行的模式。在流水線工作模式下,CPU 在執行指令 A 的同時,可以并行地從內存中讀取指令 B。當指令 A 執行完畢后,CPU 可以立即開始執行已經讀取到的指令 B,無需再等待從內存中讀取新的指令。這樣就使得 CPU 的各個處理單元可以在不同的指令階段同時工作,大大提高了 CPU 的利用率和指令執行的吞吐量,進一步提升了計算機的整體性能。

cpu解析指令時,需要用到 指令表(已寫死到cpu中),不同架構的cpu支持的指令表不同

2. 操作系統

操作系統的職責:

1. 管理各種硬件設備

2. 給其他軟件提供穩定的運行環境

操作系統是?組做計算機資源管理的軟件的統稱。?前常?的操作系統有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鴻蒙等。
JVM 是對操作系統的抽象封裝,它為 Java 程序提供了一個獨立于操作系統的運行環境。在 Java 中,開發者可以使用 JVM 提供的 API 來控制各種不同的系統,完成編程效果。

1. 進程

定義:

進程是指正在運行的程序的實例,是操作系統進行資源分配和調度的基本單位。它包含了程序執行所需的各種資源,如內存空間、CPU 時間、文件句柄等。

組成部分:

  • 程序代碼:即進程所執行的指令序列,描述了進程要完成的任務。
  • 數據:包括程序運行時使用的各種變量、常量、文件等數據。
  • 進程控制塊(PCB):這是操作系統用于管理進程的核心數據結構,包含了進程的各種信息,如進程標識符、狀態、優先級、資源分配情況等。操作系統通過操作 PCB 來實現對進程的控制和管理。
操作系統的進程管理:
1. 先描述(使用類/結構體把實體屬性列出)
操作系統一般是用c/c++ 實現的(無java實現)因此可以使用結構體
表示進程信息的結構體 PCB
2. 再組織(使用一定的數據結構,把這些結構體或對象串到一起)
當我們在任務管理器中看到這些進程時,意味著系統內部就在遍歷鏈表,并且打印每個節點的? ? ? ? 相關信息
如果運行一個新的程序,,系統中就會多一個進程,多的這個進程就要構造出一個新的pcb,并? ? ? 添加到鏈表上
如果某個運行中的程序退出,就需要把對應的pcb從鏈表中刪除,并銷毀對應的pcb資源
pcb的核心屬性:

1. 進程標識符(PID):是進程的唯一標識,用于區分系統中的不同進程。同一機器上的同一時刻,每個進程都pid都是唯一的。操作系統通過 PID 來對進程進行各種操作,如調度、終止等。

例如:選中某個進程,點擊結束任務,此時,任務管理器會獲取到你選中的 pid ,然后調用一個系統 api ,把 pid 作為參數傳入,從而完成殺死進程操作

2. 內存指針:指向進程在內存中的地址空間,包括代碼段、數據段、堆棧段等的起始地址和界限。操作系統通過內存指針來管理進程的內存分配和訪問,確保進程只能訪問自己的內存空間,避免不同進程之間的內存沖突。

3. 文件描述符:在操作系統中,文件描述符是進程與外部存儲資源(主要涉及硬盤)交互時極為關鍵的概念。硬盤作為數據持久化存儲的核心硬件,其內部數據的組織和訪問方式較為復雜。為了簡化進程對硬盤資源的操作,操作系統對硬盤進行了抽象封裝,將各類數據存儲單元統一以文件的形式呈現給進程。

?

當一個進程需要操作文件時,首要步驟便是 “打開文件”。這一操作的本質是操作系統在進程專屬的文件描述符表中為該文件分配一個表項。文件描述符表是操作系統用于跟蹤進程所打開文件的關鍵數據結構。在分配表項時,系統會構造一個結構體,該結構體中詳細記錄了這個文件的諸多相關信息。

4. 進程狀態:描述進程當前所處的狀態,如就緒、運行、阻塞等。操作系統根據進程狀態來決定是否將 CPU 分配給該進程,以及如何在不同狀態之間進行轉換。

5. 優先級:表示進程相對于其他進程的重要程度和執行順序。優先級高的進程通常會優先獲得 CPU 資源,以便更快地執行。操作系統根據優先級來決定在多個就緒進程中選擇哪個進程投入運行

6. 記賬信息:在多任務操作系統中,,為了高效且公平地管理 CPU 資源,記賬信息針對每個進程占用 CPU 的時間進行精確統計。這一統計過程是動態且持續的,操作系統會在進程的整個生命周期內,記錄其每次獲得 CPU 使用權的時間片段,并進行累加。根據統計結果來進一步調整調度策略,確保每個進程都有機會使用 CPU 資源,避免出現某些進程長期得不到執行而處于 “饑餓” 狀態的情況。

7. 進程上下文:包括進程的地址空間、寄存器狀態、打開的文件等所有與進程執行相關的信息。進程上下文在進程切換時需要進行保存和恢復,以保證進程在不同的執行時刻都能正確地運行。

保存:把cpu的關鍵寄存器中的數據保存到內存中(pcb的上下文屬性中)

恢復:把內存中的關鍵寄存器中的數據,加載到cpu的對應寄存器中

并發
  • 定義:指在同一時間段內,多個任務或進程交替執行,但在任意時刻只有一個任務在執行。
  • 實現方式:通過操作系統的調度算法,將 CPU 時間劃分為多個時間片,每個任務輪流獲得 CPU 時間片來執行。
并行
  • 定義:指在同一時刻,多個任務或進程同時執行,需要多個處理器或多核處理器來實現。
  • 實現方式:通過將任務分配到不同的處理器或核心上,讓它們同時進行處理,從而實現真正的并行執行。
內存分配 —— 內存管理:每個進程的內存是彼此獨立,互不干擾的
進程通信
進程是操作系統進?資源分配的最?單位,每個進程在各自獨立的環境中運行,彼此無法直接感知對方的存在,這便是操作系統抽象出進程概念所帶來的 “隔離性”
如果需要多個進程相互配合完成某項工作就需要進程通信
系統提供一些公共的空間(多個進程都能訪問),讓進程借助這種公共空間來交互數據
?前,主流操作系統提供的進程通信機制有如下:
1. 管道
2. 共享內存
3. ?件:開發者主要使用的進程間通信方式
4. ?絡:可以支持同一個主機上的不同進程,也可以支持不同主機上的不同進程
5. 信號量
6. 信號

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

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

相關文章

飛鳥游戲模擬器 1.0.3 | 完全免費無廣告,內置大量經典童年游戲,重溫美好回憶

飛鳥游戲模擬器是一款專為安卓用戶設計的免費游戲模擬器,內置了大量經典的童年游戲。該模擬器擁有豐富的游戲資源,目前已有約20,000款游戲,包括多種類型如冒險、動作、角色扮演等。用戶可以直接搜索查找想要玩的游戲進行下載并啟動。游戲庫中…

網絡爬取需謹慎:警惕迷宮陷阱

一、技術背景:網絡爬蟲與數據保護的博弈升級 1. 問題根源:AI訓練數據爬取的無序性 數據需求爆炸:GPT-4、Gemini等大模型依賴數萬億網頁數據訓練,但大量爬蟲無視網站的robots.txt協議(非法律強制),未經許可抓取內容(如新聞、學術論文、代碼),引發版權爭議(如OpenAI被…

Qwen3簡介:大型語言模型的革命

Qwen3簡介:大型語言模型的革命 Qwen系列語言模型的最新發布——Qwen3,標志著人工智能(AI)技術的一次重大飛躍。基于前代版本的成功,Qwen3在架構、推理能力和多項先進功能上都取得了顯著提升,正在重新定義大…

MODSIM選型指南:汽車與航空航天企業如何選擇仿真平臺

1. 引言 在競爭激烈的汽車與航空航天領域,仿真技術已成為產品研發不可或缺的環節。通過在設計階段驗證概念并優化性能,仿真平臺能有效縮短開發周期并降低物理樣機制作成本。 MODSIM(建模與仿真)作為達索系統3DEXPERIENCE平臺的核…

linux 內核 debugfs 使用介紹

一:概述 debugfs 是 Linux 內核提供的一個特殊的虛擬文件系統,用于 暴露內核模塊(如驅動)內部的調試信息或控制接口,供開發者、調試人員實時查看和排查問題。即 debugfs 就是一個“調試專用的 /proc 或 /sys”&#xf…

ZYNQ筆記(十五):PL讀寫PS DDR(自定義IP核-AXI4接口)

版本:Vivado2020.2(Vitis) 任務:PL 端自定義一個 AXI4 接口的 IP 核,通過 AXI_HP 接口對 PS 端 DDR3 進行讀寫 測試,讀寫的內存大小是 4K 字節, 目錄 一、介紹 (1)…

Redis 小記

Redis 命令小記 Redis 是一個文本/二進制數據庫(textual/binary database) CLI 命令 redis-cli, redis-server, redis-benchmark, redis-check-dump, redis-check-aof redis-cli 執行命令 # 方式 1 redis-cli -h 127.0.0.1 -p 6379 > 127.0.0.1:63…

如何在idea中編寫spark程序

在 IntelliJ IDEA 中編寫 Spark 程序的詳細指南 在大數據處理領域,Apache Spark 憑借其強大的分布式計算能力,成為了眾多開發者的首選工具。而 IntelliJ IDEA 作為一款功能強大的集成開發環境(IDE),為編寫 Spark 程序…

各類神經網絡學習:(十一)注意力機制(第3/4集),位置編碼

上一篇下一篇注意力機制(2/4集)注意力機制(4/4集) 位置編碼 R N N RNN RNN 和 L S T M LSTM LSTM 這些網絡都是串行執行的,在潛移默化中,就包含了順序關系,也就是詞序關系。而注意力機制是并行…

《Python Web部署應知應會》Flask網站隱藏或改變瀏覽器URL:從Nginx反向代理到URL重寫技術

Flask網站隱藏或改變瀏覽器顯示URL地址的實現方案:從Nginx反向代理到URL重寫技術 引言 在Web應用開發中,URL路徑的安全性往往被忽視,這可能導致網站結構和后端邏輯被攻擊者輕易推斷。對于Flask框架開發的網站,如何隱藏或改變瀏覽…

elementui里的el-tabs的內置樣式修改失效?

1.問題圖 紅框里的是組件的內置樣式,紅框下的是自定義樣式 2.分析 2.1scoped vue模板編譯器在編譯有scoped的stye標簽時,會生成對應的postCSS插件,該插件會給每個scoped標記的style標簽模塊,生成唯一一個對應的 data-v-xxxhash…

大數據測試集群環境部署

Hadoop大數據集群搭建(超詳細)_hadoop_小飛飛519-GitCode 開源社區 hadoop集群一之虛擬機安裝(mac)_hadoop_皮皮蝦不皮呀-華為開發者空間 hadoop集群二之hadoop安裝_hadoop_皮皮蝦不皮呀-華為開發者空間 虛擬機如何查看gateway | PingCode智庫

Nginx 核心功能筆記

目錄 一、Nginx 簡介 二、核心功能詳解 三、關鍵指令解析 四、性能優化要點 五、常見應用場景 一、Nginx 簡介 定位 高性能的 HTTP/反向代理服務器,同時支持郵件協議代理(IMAP/POP3/SMTP)。采用 事件驅動、異步非阻塞 架構,…

強化學習(二)馬爾科夫決策過程(MDP)

1. 簡介 馬爾可夫決策過程正式地描述了強化學習的環境其中環境是完全可觀測的即當前狀態完全表征了這個過程幾乎所有的強化學習問題都可以形式化為馬爾可夫決策過程,例如: 最優控制主要處理連續的馬爾可夫決策過程部分可觀察的問題可以轉化為馬爾可夫決…

Day16(貪心算法)——LeetCode45.跳躍游戲II763.劃分字母區間

1 LeetCode45.跳躍游戲II 1.1 題目描述 與跳躍游戲類似,跳躍游戲II給定長為n的從0開始索引的整數數組nums,nums[i]是你在i處能向右跳躍的最大步數,求到達數組最后一個索引處需要跳躍的最少次數。 ??一個示例:nums[2,3,1,1,4]&a…

告別碎片化!兩大先進分塊技術如何提升RAG的語義連貫性?

研究動機 論文核心問題及研究背景分析 1. 研究領域及其重要性 研究領域:檢索增強生成(Retrieval-Augmented Generation, RAG)系統,結合自然語言處理(NLP)與信息檢索技術。重要性: RAG通過動態…

leetcode day37 474

474 一和零 給你一個二進制字符串數組 strs 和兩個整數 m 和 n 。 請你找出并返回 strs 的最大子集的長度,該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1: 輸入:s…

二、信息時代社會結構的轉變

到了信息時代,以及在核武器的前提下,上述的社會結構的邏輯,就有了一個根 本性的轉變,就是暴力的成本和收益,都在下降。 暴力的成本在降低。比如說槍支,它的制造和分發都變得非常容易。現在我們都 知道有 3D 打印,它就好像工業時代的印刷機,印刷圣經或者書籍,使知識更加 普及和容…

Elasticsearch 堆內存使用情況和 JVM 垃圾回收

作者:來自 Elastic Kofi Bartlett 探索 Elasticsearch 堆內存使用情況和 JVM 垃圾回收,包括最佳實踐以及在堆內存使用過高或 JVM 性能不佳時的解決方法。 堆內存大小是分配給 Elasticsearch 節點中 Java 虛擬機的 RAM 數量。 從 7.11 版本開始&#xff…

C++之類和對象:構造函數,析構函數,拷貝構造,賦值運算符重載

前提:如果一個類是空類,C中空類中真的什么都沒有嗎,不是的,編譯器會自動生成6個默認成員函數。默認成員函數:用戶沒有顯式實現,編譯器會生成的成員函數稱為默認成員函數。 默認成員函數:構造函…