【操作系統】進程(二)內存管理、通信

JavaEE—進程(二)內存管理、通信

一、內存管理

1.映射訪問

2.獨立分布

防崩潰

二、通信

1.獨立性保障

2.方式

2.1管道

2.1.2特點

2.1.2.1進程條件

2.1.2.2方向

2.1.2.3同步性

2.1.2.4性能

2.2消息隊列

2.2.1特點

2.2.1.1方向

2.2.1.2同步性

2.2.1.3性能

2.3共享內存

2.3.1特點

2.3.1.1方向

2.3.1.2同步性

2.3.1.3性能

2.4套接字


前言:

上文【操作系統】進程(一)調度講解了 進程PCB的結構組織資源分配 以及進程在cpu上 通過操作系統的調度 實現并發執行的效果,本文深入講解 進程的內存管理進程間通信的相關知識


一、內存管理

1.映射訪問

操作系統 為每個進程 都創建有:

  • 模局格式一樣虛擬地址空間
  • 獨屬對應關系映射表

進程只能操作 直接的虛擬地址空間 經映射表映射著 間接訪問 實際的物理內存進程 在自己的虛擬地址空間內 最大范圍地訪問 也不可能映射訪問出 自己總的物理內存外面


2.獨立分布

每個進程的虛擬地址空間 整體映射出的 對應整體物理內存 都是完全互相隔離的一塊塊

防崩潰

進程如果在自己的虛擬地址空間內 越界訪問到 未申請開辟的虛擬空間 而造成進程崩潰時,只會破壞 該進程對應的物理內存,接著操作系統 對其進行資源回收,而其它進程的 虛擬空間和物理內存 都不受影響地 繼續運行


二、通信

進程 在操作系統提供的特殊渠道獨立置、取信息 來保持隔離地交流

1.獨立性保障

  • 寫進程 無法直接連續寫入修改 讀進程內存
  • 讀進程 主動地收取數據 擁有 讀取進來判斷是否修改的權利

兩進程 仍然互相保持著獨立地 進行數據交流


2.方式

2.1管道

內核 將寫進程寫入的數據 復制到內核緩沖區 置放,再將其 復制到讀進程中 收取(兩進程是沒有 內核的管道緩沖區映射關系的,無法通過 共享管道緩沖區內存 映射傳輸,所以只能通過 內核復制傳輸)

2.1.2特點
2.1.2.1進程條件

需要 有親緣關系的 父子進程間通信


2.1.2.2方向

一個管道單向通信,得創建兩個管道 才能實現雙向通信


2.1.2.3同步性

數據是 按順序先進 后才有出無邊界的 字節流,先進再出 已保證 置取同步性


2.1.2.4性能

兩次內核復制 并且有阻塞等待,效率較適合少量數據傳輸


2.2消息隊列

寫進程 按照特定格式(類型+數據) 將信息復制置入 操作系統維護的 郵箱隊列中,讀進程 根據消息類型 從隊列中 復制取出 屬于自己的消息

2.2.1特點
2.2.1.1方向

雙向通信


2.2.1.2同步性

消息是 按順序先進 后才有出有格式、有邊界的 結構化數據塊,先進后出 已保證 置取同步性


2.2.1.3性能

兩次內核復制 并且有阻塞等待,效率較適合少量數據傳輸


2.3共享內存

操作系統 劃出一塊物理內存 分別額外映射到 兩進程的虛擬地址空間中,兩進程 便能直接映射到 此共享物理內存上 進行置放、收取數據 完成獨立隔離地交流

2.3.1特點
2.3.1.1方向

雙向通信


2.3.1.2同步性

因為讀寫兩進程 可不按先后順序 映射到 操作獲取 數據,所以需要使用信號量互斥鎖同步進程 對共享資源的訪問


2.3.1.3性能

不需要 內核中轉復制,進程 直接映射 操作獲取數據,性能極能頻繁交換大量數據


2.4套接字

能用于 網絡上 不同計算機的 進程間通信

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

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

相關文章

windows 裝了 python2 和 python3 如何切換默認版本

現在執行 python --version 是Python 3.11.3怎么讓 python 默認是 python2,而 python3 --version 是執行 pyhon3 呢cmd 執行 where pythonC:\Users\huyun\AppData\Local\Programs\Python\Python311-32\python.exe C:\Users\huyun\AppData\Local\Microsoft\WindowsAp…

二次封裝element ui pagination組件

vue2中二次封裝element ui pagination組件 html部分 <template><div class"table-pagination"><el-pagination:current-page.sync"currentPage":page-sizes"pageSizes":page-size"pageSize":layout"paginationLay…

SAP學習筆記 - 開發39 - RAP開發 BTP /DMO 官方既存測試數據的使用

上一章講了 RAP開發流程的具體步驟&#xff0c;建表 》建Data Model View 》建 Projection View 》建Service Definition 》 建Service Binding 》Publish 服務。 SAP學習筆記 - 開發37 - RAP開發流程的具體步驟&#xff0c; 建表&#xff0c;Data Model View&#xff0c;Proj…

SQLite - C/C++ 開發與應用詳解

SQLite - C/C++ 開發與應用詳解 引言 SQLite 是一個輕量級的數據庫引擎,它被設計成不需要服務器進程就可以獨立運行。SQLite 在 C/C++ 開發領域具有廣泛的應用,由于其體積小、性能高、易于集成等優點,深受開發者的喜愛。本文將詳細介紹 SQLite 在 C/C++ 開發中的應用,包括…

蔚來測開一面:HashMap從1.7開始到1.8的過程,既然都解決不了并發安全問題,為什么還要進一步解決環形鏈表的問題?

文章目錄問題的根源&#xff1a;JDK 1.7 的設計缺陷為什么必須解決這個問題&#xff1f;1\. 故障等級完全不同 &#x1f4a3;2\. JDK 1.8 的解決方案&#xff1a;一石二鳥 &#x1f985;3\. 為“不小心”的開發者提供一層保障 &#x1f6e1;?結論這是一個非常好的問題&#xf…

AI技術正以前所未有的速度重塑職業生態與行業格局,尤其在自動化測試領域,AI驅動的測試框架通過智能化、低代碼化重構傳統測試流程。

AI技術正以前所未有的速度重塑職業生態與行業格局&#xff0c;尤其在自動化測試領域&#xff0c;AI驅動的測試框架通過智能化、低代碼化重構傳統測試流程。以下從職業影響、技術架構、行業應用及應對策略四個維度展開分析&#xff0c;結合代碼示例與框架設計圖解&#xff1a;一…

在 Mac 上安裝 Java 和 IntelliJ IDEA(完整筆記)

目錄 檢查是否已安裝 Java安裝 Java&#xff08;JDK&#xff09;設置 JAVA_HOME 環境變量安裝 IntelliJ IDEA配置 IntelliJ IDEA 使用 JDK驗證和測試環境是否成功 1. 檢查是否已安裝 Java 打開終端&#xff08;Terminal&#xff09;&#xff0c;輸入&#xff1a; java -vers…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一個WebUI自動化框架(2)對框架加入業務邏輯層

在上篇中&#xff0c;我們已經搭建好了框架的基本雛形&#xff0c;但只是引入了頁面層、用例層的思想&#xff0c;我們在實際使用中會發現&#xff0c;如果我們很多的用例需要很多前置工作&#xff0c;這些前置工作又有可能涉及到多個頁面&#xff0c;那么我們在維護的時候就會…

uniapp ruoyi-app 中使用checkbox 無法選中問題

<view class"flex align-center"> <checkbox-group> <label> <checkbox value"cb" checked"true" /> 記住密碼 </label> </checkbox-group> </view>colorui.css 文件中注釋掉兩處即可全局搜索…

如何快速學習GO語言

https://go.dev/tour/welcome/1 這個是官方的引導&#xff0c;很實用基本重點內容都涵蓋了&#xff0c;并且可以一邊學習一邊練習&#xff0c;非常好用 簡單介紹一下&#xff1a; Hello, 世界 歡迎訪問 Go 編程語言教程。 本教程分為幾個模塊&#xff0c;點擊本頁左上角的 …

AI 產品經理必看:神秘技術架構圖如何打通跨團隊溝通壁壘?

? 你好&#xff0c;我是 三橋君 引言 在AI產品的開發過程中&#xff0c;技術架構圖是連接業務需求與技術實現的橋梁。然而&#xff0c;許多AI產品經理常常面臨以下挑戰&#xff1a;研發團隊認為需求描述不清晰&#xff0c;業務團隊與技術團隊溝通不暢&#xff0c;技術選型時…

【科研繪圖系列】R語言繪制解剖圖

文章目錄 介紹加載R包數據下載導入數據數據預處理畫圖系統信息參考介紹 【科研繪圖系列】R語言繪制解剖圖 加載R包 # install.packages("devtools") # library(devtools) # devtools::install_github("jespermaag/gganatogram")library(gganatogram) li…

【unity編輯器開發與拓展EditorGUILayoyt和GUILayoyt】

EditorGUILayout 與 GUILayout 的核心區別及使用場景詳解 一、對比表特性GUILayoutEditorGUILayout命名空間UnityEngineUnityEditor使用場景運行時 UI 編輯器擴展僅限編輯器擴展控件風格基礎游戲風格&#xff08;無編輯器優化&#xff09;原生 Unity 編輯器風格布局復雜度基礎…

【數據結構】8. 二叉樹

文章目錄一、樹的概念及結構1、樹的概念2、樹的相關概念3、樹的表示4、樹的實際運用二、二叉樹的概念及結構1、二叉樹的概念2、特殊的二叉樹3、二叉樹的性質4、二叉樹的存儲結構三、二叉樹的順序結構及實現1、二叉樹的順序結構2、堆的概念及結構3、堆的實現0&#xff09;準備工…

Spring MVC中異常處理

1.全局異常處理1.1什么是全局異常處理器全局異常處理器是SpringMVC框架中的一種異常處理機制&#xff0c;用于統一處理由控制器拋出的異常。全局異常處理器可以幫助我們捕獲和處理控制器中的異常&#xff0c;并且根據不同的異常類型進行不同的處理操作&#xff0c;從而保障應用…

imx6ull-系統移植篇2—— U-Boot 命令使用(上)

目錄 前言 U-Boot 命令 help 信息查詢命令 bdinfo printenv version 環境變量操作命令 setenv 和 saveenv 修改環境變量 新建環境變量 刪除環境變量 內存操作命令 md nm mm mw cp cmp 網絡操作命令 ping 命令 dhcp 命令 nfs 命令 tftp 命令 EMMC 和 S…

vector之動態二維數組的底層

引言&#xff1a;在計算機編程領域&#xff0c;二維動態數組是一種能夠在程序運行期間動態調整其大小的二維數組數據結構。它與靜態二維數組的關鍵區別在于&#xff0c;靜態二維數組在編譯時就需要確定其大小&#xff0c;而二維動態數組的大小可以在程序運行過程中根據實際需求…

第十六天,7月10日,八股

1、mybatis的延遲加載需要時才加載關聯對象&#xff0c;而不是查詢主對象時&#xff0c;立刻加載所有關聯對象&#xff0c;這樣可以提高查詢性能并減少不必要的數據庫訪問&#xff0c;例如&#xff1a;一個訂單表包含著商品列表&#xff08;一對多&#xff09;&#xff0c;當查…

CSS中的Element語法

1.1 Element語法1.1.1 案例 1. 快速生成10個div,并且每個div里面是從1到10的內容2.生成一個div標簽&#xff0c;類名為one,并且同時生成一個id為first的p標簽1.1.2 快速生成CSS樣式語法 CSS基本采取簡寫形式即可 比如w22 按住tab鍵 可以生成 width:200px比如lh26px 按住tab鍵 可…

Go從入門到精通(21) - 一個簡單web項目-添加swagger文檔

Go從入門到精通(20)-一個簡單web項目-服務搭建 文章目錄Go從入門到精通(20)-一個簡單web項目-服務搭建前言前期準備為API 添加 Swagger 文檔1.安裝依賴2.添加 Swagger 注釋main.goapp.goapi.gopublic_handler.goauth_handler.gocommon_constant.gocommon_dto.gotoken_utils.go3…