【操作系統】線程

JavaEE—線程

一、進程與線程

1.包含管理

2.資源布局

2.1公共資源

2.2私有資源

二、并發編程

1.多線程優勢

1.1創建

1.1.1多線程

1.1.2多進程

1.2通信

1.2.1多線程

1.2.2多進程

1.3調度

1.3.1多線程

1.3.2多進程

1.4銷毀

1.4.1多線程

1.4.2多進程

2.多進程優勢

2.1安全性

2.1.1多進程

2.1.2多線程

2.2穩定性

2.2.1多進程

2.2.2多線程

三、線程數量

1.調度理想數量?

1.1調度提升效率

1.2黃金法則

2.數量過多

2.1調度占比上升

2.2CPU緩存失效

2.3線程爭鎖阻塞


一、進程與線程

進程:每個進程 對應一個PCB,是操作系統 資源分配的基本單位

線程:每個線程 對應一個TCB,是CPU?調度執行的基本單位

1.包含管理

PCB 包含管理 TCB,線程在進程里面創建每一個進程中 至少創建有一個主線程

2.資源布局

鏈接:進程的內存管理

2.1公共資源

同進程的線程TCB 指針指向對應 同一個PCB共用PCB的 內存指針、文件描述符表 指向的進程的公共資源,屬于PCB的內核空間

2.2私有資源

每個線程各自不同的?狀態、上下文、記賬信息?都存儲在 進程劃分管理的 私有資源中,屬于PCB的用戶進程空間


二、并發編程

多進程與多線程 是實現并發編程的兩種方式

1.多線程優勢

同進程的多線程 互相共用配合,資源共享,輕量高效

1.1創建

1.1.1多線程

進程額外新建線程時,復用進程的 已申請的資源 來創建,創建輕便迅速,資源利用率高

1.1.2多進程
  1. 創建主線程時的進程,需要向操作系統 申請尋找分配資源相對耗時
  2. 每個進程中 只有一個主線程 單獨使用資源資源利用率低

1.2通信

1.2.1多線程

同進程的線程 共享進程資源:

  • 使用相同虛擬地址指針?互訪共用?內存
  • 使用相同fd 互訪共用?文件

共用著資源訪問 即可完成通信,通信效率高

1.2.2多進程

異進程的線程 需要跨進程 保持獨立地通信通信效率低

鏈接:進程間通信


1.3調度

1.3.1多線程

同進程的線程 調度時 只需要切換寄存器上下文調度切換快

1.3.2多進程

異進程的線程 調度時 還需切換虛擬地址空間調度切換慢

鏈接:CPU的調度?


1.4銷毀

1.4.1多線程

銷毀進程的 普通線程時,只需釋放 線程的少量私有資源銷毀迅速

1.4.2多進程

銷毀主線程時的進程,需要釋放 進程所有的資源銷毀緩慢


2.多進程優勢

多進程間的線程 互相獨立,資源安全隔離,穩定性高

2.1安全性

2.1.1多進程

異進程的線程?資源獨立不會出現 爭用同塊資源線程安全

2.1.2多線程

同進程的線程 會出現 同時去訪問同塊資源 造成線程不安全,需要引入同步機制


2.2穩定性

2.2.1多進程

異進程的線程 互相獨立某個線程異常崩潰 銷毀所屬進程 不會到影響彼此線程穩定性高

2.2.2多線程

同進程的線程 拋出異常,沒有得到處理 會使整個進程崩潰從而銷毀進程里 所有其它的線程線程穩定性低


三、線程數量

1.調度理想數量?

CPU執行指令1納秒/條
線程I/O讀取來執行指令10毫秒/次(比cpu指令執行慢1000萬倍)
CPU調度切換1微秒/次

1.1調度提升效率

CPU快速執行完 當前線程的任務指令 還未等到 該線程下次的I/O讀取來指令時,調度切換到另一個已I/O好的線程 不停息地 繼續執行指令

1.2黃金法則

當調度的線程總量 使CPU剛好執行完每個線程的任務指令時 就調度切換,CPU達到 最高效的持續執行:

線程數 ≈ CPU核心數 * (1 + 等待時間/計算時間)

  • CPU密集型任務(計算)?: 線程數 ≈ 核心數
  • I/O密集型任務(網絡) : 線程數可多于核心數

2.數量過多

調度的線程數量過多 會導致CPU?執行效率降低:

2.1調度占比上升

在調度理想線程數量的基礎上?再增加線程數量時,會使得CPU?未執行完當前線程任務指令時 就調度切換走CPU仍然不停息地 持續執行指令單位時間中 無用的調度切換 開始占比增大地 減少CPU有效執行指令的占比,使得CPU執行效率 開始下降

2.2CPU緩存失效

CPU緩存是為 連續計算優化的,要調度的線程過多 導致過于頻繁切換線程時,緩存被沖刷,緩存命中率大幅下降,CPU緩存失效

2.3線程爭鎖阻塞

當線程任務過多時,會出現 很多線程同時爭用同一塊資源等鎖 阻塞等待

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

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

相關文章

React 自定義Hook——頁面或元素滾動到底部監聽 Hook

功能簡介 useReachBottom 是一個 React 自定義 Hook,支持監聽頁面(body)或任意可滾動元素(如 div)是否滾動到底部。它能幫助你在用戶滑動到底部時觸發加載更多、顯示提示等操作,極大提升前端交互體驗。 亮…

當Powerbi遇到quickbi,性能優化方式對比

powerbi性能優化對于powerbi,性能優化可以從15個方面考慮: 1.過濾源數據【quickbi數據集過濾或sql過濾】2.刪除無關列 【quickbi不選字段或sql不查詢】3.聚合分析粒度 【quickbi使用sql聚合或計算字段聚合】4.整理字段 【quickbi使用sql聚合或計算字段聚…

ValueConverter轉換器WPF

屬性搭橋 比如BoolToVisibility 創建兩個屬性 Bool Visibility 這樣不好 混亂了viewmodels 降低了泛用性系統自帶的convertor <Window.Resources><BooleanToVisibilityConverter x:Key"booltovis"></BooleanToVisibilityConverter><…

Qt數據庫編程詳解:SQLite實戰指南

Qt數據庫編程詳解&#xff1a;SQLite實戰指南 目錄 SQLite數據庫簡介Qt數據庫核心類數據庫操作全流程CRUD操作實戰運行效果展示 1. SQLite數據庫簡介 SQLite是Qt內置的輕量級嵌入式數據庫&#xff1a; #mermaid-svg-OiZ2cgq9n1G69iH5 {font-family:"trebuchet ms",…

FastAPI 與 OpenIddict 的微服務鑒權整合方案

架構概述基于微服務的身份認證架構采用OAuth 2.0/OpenID Connect協議&#xff0c;OpenIddict作為認證服務器&#xff0c;FastAPI作為資源服務器。系統包含三個核心組件&#xff1a;認證服務、API網關和業務微服務。OpenIddict負責頒發令牌&#xff0c;FastAPI通過JWT驗證訪問權…

計算兩個點的歐式距離

目錄 一、概述 二、公式 1、二維空間 2、三維空間 3、n 維空間 三、python實現 一、概述 歐式距離&#xff08;Euclidean Distance&#xff09;是一種在歐幾里得空間中度量兩個點之間距離的常用方法&#xff0c;其公式根據空間維度的不同而不同 二、公式 1、二維空間 對于二…

八股訓練--RabbitMQ

一、經典問題 1.為什么要用MQ&#xff1f; MQ的作用主要是3個&#xff0c; 第一個是流量削峰&#xff1a;當某個活動舉行時&#xff0c;訪問量可能是平時的幾百倍&#xff0c;可能一下會把服務器弄崩潰&#xff0c;所以通過MQ的形式&#xff0c;引入中間者&#xff0c;客戶端…

Elasticsearch 文檔檢索系統

學習筆記&#xff1a;Elasticsearch 文檔檢索系統 1. 技術棧與核心組件 Node.js&#xff1a;后端運行環境&#xff0c;適合構建高性能 Web 服務。Express&#xff1a;Node.js 的 Web 框架&#xff0c;簡化 API 開發。Elasticsearch&#xff1a;分布式全文檢索引擎&#xff0c;支…

如何準確查看服務器網絡的利用率?

在服務器運維與性能調優過程中&#xff0c;網絡利用率是一個不容忽視的關鍵指標。它反映了服務器帶寬資源的實際使用情況&#xff0c;是判斷系統瓶頸、規劃資源擴展、排查連接問題的重要依據。很多人誤以為網絡是否正常只要“能上網”或“Ping得通”就可以了&#xff0c;實際上…

掌握Spring聲明式事務傳播機制:AOP與ThreadLocal的協同工作

聲明式事務的傳播機制是解決多個事務方法嵌套調用時&#xff0c;事務如何創建、復用、掛起或隔離的核心邏輯。它的實現依賴于事務管理器、事務狀態管理、線程上下文綁定等組件的協同&#xff0c;本質是通過一套 “規則判斷 狀態維護” 的邏輯&#xff0c;在方法調用時動態決定…

@Transactional事務注解的批量回滾機制

關鍵機制說明&#xff1a;1.??事務注解生效??&#xff1a;Transactional(rollbackFor Exception.class)Override Transactional(rollbackFor Exception.class) public Boolean saveUser(UserDTO userDto) {SysUser sysUser new SysUser();BeanUtils.copyProperties(user…

飛算 JavaAI 深度體驗:開啟 Java 開發智能化新紀元

個人主頁&#xff1a;?喜歡做夢 歡迎 &#x1f44d;點贊 ?關注 ??收藏 &#x1f4ac;評論 目錄 一、引言 二、飛算 JavaAI 初印象與功能概覽 &#xff08;一&#xff09;初識飛算 JavaAI &#xff08;二&#xff09;核心功能模塊概覽 三、智能代碼生成功能深度體…

pandas銷售數據分析

pandas銷售數據分析 數據保存在data目錄 消費者數據&#xff1a;customers.csv商品數據&#xff1a;products.csv交易數據&#xff1a;transactions.csv customers.csv數據結構&#xff1a;字段描述customer_id客戶IDgender性別age年齡region地區membership_date會員日期produc…

訪問Windows服務器備份SQL SERVER數據庫

以前沒有直接訪問過Windows服務器,今天剛一看到的是時候有點懵,竟然下意識的使用SecureCRT遠程工具去連了一下,然后領導說,看一下用戶名,突然意識到,跟我們平時遠程桌面是一樣的。 一、 win + R 打開命令窗口 二、 輸入 mstsc 三、 輸入遠程地址 四、點擊連接,如果有彈…

C++ 面向對象 - 對象定義方法匯總

C對象定義方法匯總 1. 棧上定義方式 1.1 調用無參構造函數的定義方式 無參構造函數有兩種&#xff1a; 默認無參構造函數Demo(){}默認值列表構造函數。Demo():a{1},b{2}{} // 使用初始化列表實現對象定義方式&#xff1a; Demo d; Demo d1{}; // 以下定義方式還調用了拷貝構造…

指尖上的魔法:優雅高效的Linux命令手冊

一、Linux基礎指令 1. ls ls&#xff1a;對于目錄&#xff0c;列出該目錄下的所有子目錄與文件&#xff0c;對于文件&#xff0c;將列出文件名以及其他信息。 -a&#xff1a;列出目錄下的所有文件&#xff0c;包含以.開頭的隱藏文件 -l:列出文件的詳細信息 -d&#xff1a;將目錄…

《磁力下載工具實測:資源搜索+高速下載一站式解決方案》

嘿&#xff0c;朋友們&#xff01;我是阿燦&#xff0c;今天給大家帶來一個超實用的看片神器&#xff0c;特別適合老司機們使用&#xff0c;保證讓你眼前一亮&#xff01;推薦一款比某雷更好用的下載工具&#xff0c;搭配資源搜索神器&#xff0c;輕松獲取資源不限速。超強磁力…

Go網絡編程基礎:網絡模型與協議棧概述 - 從理論到實踐的完整指南

1. 引言 在當今的互聯網時代&#xff0c;網絡編程已經成為后端開發的核心技能。Go語言以其出色的并發性能和簡潔的語法&#xff0c;在網絡編程領域展現出了強大的優勢。從Docker、Kubernetes到眾多微服務框架&#xff0c;Go已經成為構建高性能網絡應用的首選語言之一。 你是否…

Web攻防-SSTI服務端模版注入利用分類語言引擎數據渲染項目工具挖掘思路

知識點&#xff1a; 1、WEB攻防-SSTI-利用分類&功能點 2、WEB攻防-SSTI-利用項目&挖掘思路 SSTI(Server Side Template Injection) 服務器模板注入, 服務端接收了用戶的輸入&#xff0c;將其作為 Web 應用模板內容的一部分&#xff0c;在進行目標編譯渲染的過程中&…

李沐動手學深度學習Pytorch-v2筆記【07自動求導代碼實現】

文章目錄前言自動求導實現非標量變量的反向傳播分離計算Python控制流的梯度計算前言 關于走動求導的理論知識個人有點難以理解&#xff0c;推薦大家去看https://blog.csdn.net/weixin_42831564/article/details/135658138這篇文章&#xff0c;講的很好。 自動求導實現 impor…