一、I/O的相關概念

I/O的相關概念

1、I/O

I/O即Input和Output,用戶進程執行I/O操作,歸結起來,也就是向操作系統發出請求,讀請求就把數據填到緩沖區里,寫數據就把緩沖區里數據排干,目的地可以是磁盤也可以是其他通道。進程通過這種方式處理所有數據的讀寫。
I/O可以分為廣義的兩大類別:File I/O和Stream I/O。
所以了解緩沖區,以及緩沖區如何工作,是所有I/O的基礎。

2、緩沖區

緩沖區可以被看作是一塊真實物理內存中的區域,用于臨時存儲數據。
讀取時數據先進入緩沖區,寫入時數據先從緩沖區發出。它能減少頻繁的磁盤操作,提高效率。
因為直接操作內存比操作磁盤要快的多。

3、用戶空間、內核空間、磁盤

下圖是 用戶進程讀磁盤數據的流程。
在這里插入圖片描述
可以看到數據要先被讀取到內核空間緩沖區、再復制到用戶空間緩沖區這樣程序才能看得到數據。

把數據從內核空間拷貝到用戶空間似乎有些多余。為什么不直接讓磁盤控制器把數據送到用戶空間的緩沖區呢?
這樣做有幾個問題。
首先,硬件通常不能直接訪問用戶空間。
其次,像磁盤這樣基于塊存儲的硬件設備操作的是固定大小的數據塊,而用戶進程請求的可能是任意大小的字節或非對齊的數據塊。
在數據往來于用戶空間與存儲設備的過程中,內核負責數據的分解、再組合工作,因此充當著中間人的角色。

操作系統為什么要分為 用戶空間和內核空間?

主要是為了 安全性、穩定性 和 效率。
用戶空間(User Space):程序員寫的應用程序運行的空間,比如我們寫的 Java、Python、C 程序。
內核空間(Kernel Space):操作系統的核心部分(內核)運行的空間,包括內存管理、文件系統、網絡協議、硬件控制等功能。

舉個例子:
如果不分開,任何程序都能訪問內核資源,那系統崩潰或被攻擊就太容易了。
用戶程序 不能直接操作硬件,只能通過系統調用讓內核代為處理。如果不加限制,一個有 bug 或惡意的程序可能會改亂內存、讀寫設備、破壞系統。

4、虛擬內存

虛擬內存要和 物理內存的swap交換空間區分開。

概念本質位置作用
虛擬內存(Virtual Memory)一種地址映射機制(虛擬地址 → 物理地址)CPU 看到的是虛擬地址把程序運行時看到的內存空間抽象成一個連續的大空間
Swap(交換空間)硬盤上的一塊區域磁盤當物理內存不夠用時,把一部分內存內容臨時“換出去”

虛擬內存可以大致理解為是給程序看的 大塊連續地址空間(假的,操作系統管理的)。

所有現代操作系統都使用虛擬內存。
虛擬內存意為使用虛假(或虛擬)地址取代物理(硬件RAM)內存地址。
這樣做好處頗多,總結起來可分為兩大類:
1.一個以上的虛擬地址可指向同一個物理內存地址。
2.虛擬內存空間可大于實際可用的硬件內存。

上面圖片中讀取流程、設備控制器不能通過DMA直接存儲到用戶空間,但通過利用多個虛擬地址映射同一個物理地址,則可以達到相同效果。把內核空間地址與用戶空間的虛擬地址映射到同一個物理地址,這樣,DMA硬件(只能訪問物理內存地址)就可以填充對內核與用戶空間進程同時可見的緩沖區

5、分頁技術

分頁(paging)是一種虛擬內存的實現機制。它的核心含義是:
將虛擬地址空間劃分成固定大小的“頁”(page),而物理內存同樣劃分為“頁框”(page frame),通過頁表把虛擬頁映射到物理頁框。
換句話說:分頁是一種地址映射策略。

虛擬內存 = 看起來比你實際內存多得多的“假內存”。
但你電腦真的只有 8G 內存怎么辦?裝不下了!
當物理內存不夠用時,操作系統會將某些不活躍的頁臨時存放到磁盤中(swap),等需要時再調回,這個過程叫做頁置換(page replacement),是基于分頁機制實現的。

6、文件I/O和流I/O

特性文件 I/O流 I/O
操作對象文件任意數據流(文件、網絡、內存、管道)
訪問方式支持隨機訪問(seek)只能順序訪問
抽象層次底層字節塊操作高層數據抽象(可以處理字符、對象)
使用場景本地文件操作更廣泛:網絡、IO管道、系統輸入輸出等

Java中的IO、NIO

參考下面兩篇博客
IO
https://blog.csdn.net/qq_37883866/article/details/140047819
NIO
https://blog.csdn.net/qq_37883866/article/details/140047866

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

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

相關文章

出現Invalid bound statement (not found)問題的原因可能有哪些

1.全局配置文件沒配好? 檢查全局配置文件application.properties或application.yml是否配置掃描mapper包的文件路徑 #mybatis配置mapper文件路徑 #mybatis.mapper-locationsclasspath:/mapper/*.xml #mybatis-plus配置mapper文件路徑 mybatis-plus.mapper-locatio…

第十節:文本編輯

理論知識 文本編輯器的基本概念:文本編輯器是用于創建和編輯文本文件的工具。在 Linux 系統中,常見的文本編輯器有 vi、vim、nano 等。vi 和 vim 編輯器:vi 是一款經典的文本編輯器,vim 是 vi 的增強版,提供了更多的功…

部署一個自己的Spring Ai 服務(deepseek/通義千問)

Spring Boot 無縫接入 DeepSeek 和通義千問請求日志記錄及其ip黑白名單 SpringBoot版本 3.2.0 JDK 版本為17 redis 3.2.0 mybatis 3.0.3 依賴引入 關鍵依賴 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-sp…

組裝 (DIY) 一臺顯示器 (4K 屏支持 4 畫面分屏 PBP 1080p x4)

首發日期 2025-04-26, 以下為原文內容: 家里的 PC 主機比較多, 如果同時開機, 顯示器就不夠用了. 因為窮, 窩租住的房間又很小, 放不下很多顯示器. 所以, 窩希望買一臺支持 分屏 功能的顯示器. 最好是 4K 分辨率 (3840x2160) 的屏幕, 然后 4 分屏 (有 4 個 DP 或 HDMI 輸入接口…

[Java入門]抽象類和接口

[Java入門]抽象類和接口 1. 抽象類1.1 抽象類的概念1.2 抽象類語法1.3 抽象類特性1.4 抽象類的作用 2. 接口2.1 接口的概念2.2 語法規則2.3 接口使用2.4 接口特性2.5 實現多個接口2.6 接口間的繼承2.7 抽象類和接口的區別 3. Object類3.1 獲取對象信息3.2 對象比較equals方法 1…

聚焦數字中國|AI賦能與安全守護:Coremail引領郵件辦公智能化轉型

4月28日&#xff0c;第八屆數字中國建設峰會在福州拉開序幕。當天&#xff0c;數字中國新產品新技術發布會開講&#xff0c;Coremail受邀亮相現場&#xff0c;與與會嘉賓分享AI在郵件產品領域的最新應用成果和實踐經驗。 Coremail首席客戶代表劉子建以《AI賦能與安全守護&#…

Qt官方案例知識點總結(拖放操作——Drag And Drop Robot )

-------------------------------------------------------------------------------------------------------------------------------- QPixmap輪廓剪裁 去掉Pixmap的外圍部分&#xff0c;如下&#xff1a; QPixmap pixmap("./img"); //調用createHeuristicMas…

【LLM】MOE混合專家大模型綜述(重要模塊原理)

note 當前的 MoE 架構就是一個用顯存換訓練時長/推理延遲的架構MoE 目前的架構基本集中在于將原先 GPT 每層的 FFN 復制多份作為 n 個 expert&#xff0c;并增加一個 router&#xff0c;用來計算每個 token 對應到哪個 FFN&#xff08;一般采用每個 token 固定指派 n 個 exper…

電子病歷高質量語料庫構建方法與架構項目(臨床情景理解模塊篇)

引言 隨著人工智能技術在醫療健康領域的廣泛應用,電子病歷(Electronic Medical Records,EMR)作為臨床醫療數據的重要載體,已成為醫學研究和臨床決策支持的關鍵資源。電子病歷高質量語料庫的構建為醫療人工智能模型的訓練和應用提供了基礎支撐,其中臨床情境理解模塊是連接…

大連理工大學選修課——機器學習筆記(1):概述

機器學習概述 機器學習的本質 機器學習是為了設計解決問題的算法。 為輸入與輸出建立某種映射&#xff1a; 類似于函數關系&#xff1a; Y f ( X ) Yf(X) Yf(X) 不同的映射方法體現了不同的思想。 相關概念 深度學習是機器學習的一個分支 深度學習是深層次化的神經網…

遠程 Debugger 多用戶環境下的用戶隔離實踐

遠程 Debugger 多用戶環境下的用戶隔離實踐 在現代分布式開發和云原生環境下&#xff0c;遠程 Debugger 的應用愈發普遍。然而&#xff0c;隨著多人協作和多租戶場景的出現&#xff0c;**遠程 Debugger 的“用戶隔離”**變得至關重要。只有實現了良好的用戶隔離&#xff0c;才…

畢業論文 | 基于C#開發的NMEA 0183協議上位機

以下是基于C#開發的NMEA 0183協議上位機完整實現方案,包含串口通信、數據解析與可視化功能: 基于C#開發的NMEA 0183協議上位機 一、項目結構二、核心代碼實現1. 數據模型定義2. 串口通信管理3. NMEA協議解析核心4. 主界面實現(Windows Forms)三、界面設計關鍵元素(需在窗體…

Qt -DFS可視化

博客主頁&#xff1a;【夜泉_ly】 本文專欄&#xff1a;【暫無】 歡迎點贊&#x1f44d;收藏?關注?? 目錄 前言關于如何sleep實現思路Pixmapspixmaps.hpixmaps.cpp MapSquaremapsquare.hmapsquare.cpp dfsthreaddfsthread.hdfsthread.cpprun dfs其他 WidgetUnit其他 Qt -DFS…

RHCSA Linux 系統 文件系統權限

1. 文件的一般權限 &#xff08;1&#xff09;文件權限標識解讀 drwxr - xr - x. 12 root root 144 Feb 17 16:51 usr ?d&#xff1a;文件類型&#xff08;d 表示目錄&#xff09; ?rwx&#xff1a;文件所有者權限&#xff08;讀 r&#xff0c;寫 w&#xff0c;執行 x&am…

華為云IoT平臺與MicroPython實戰:從MQTT協議到物聯網設備開發

目錄 前言 1. 華為云 1.1. 創建實例 1.2. 創建產品 1.3. 編輯服務模型 1.4. 注冊設備 1.4.1. 復制設備連接參數 1.5. 連接參考代碼 2. micropython版-物聯網 2.1. 環境搭建 2.2. 實現步驟 2.3. 示例代碼 結語 前言 物聯網&#xff08;IoT&#xff09;技術的快速發…

2025-04-30 AIGC-如何做短片視頻

摘要: 2025-04-30 AIGC-如何做短片視頻 如何做短片視頻: 一、畫圖修圖 1.保存視頻&#xff08;無水保存&#xff09; 2.文案提取&#xff08;提取文案&#xff09; 3. DeepSeek(提示詞&#xff09; 4.小夢Ai&#xff08;圖片視頻&#xff09; 5.修圖Ai 6.擴圖Ai 7.養生…

硬件工程師面試常見問題(10)

第四十六問&#xff1a;鎖存器&#xff0c;觸發器&#xff0c;寄存器三者的區別 觸發器&#xff1a;能夠存儲一位二值信號的基本單元電路統稱為 "觸發器"。&#xff08;單位&#xff09; 鎖存器&#xff1a;一位觸發器只能傳送或存儲一位數據&#xff0c;而在實際工…

外部訪問 Kubernetes 集群中 MQ 服務的方案

外部訪問 Kubernetes 集群中 MQ 服務的方案 當您在 Kubernetes 集群中部署了消息隊列服務&#xff08;如 RabbitMQ、Kafka、ActiveMQ 等&#xff09;后&#xff0c;以下是外部客戶端訪問這些服務的幾種可靠方法&#xff1a; 一、基礎訪問方案 1. NodePort 方式暴露服務 # M…

論文筆記(八十二)Transformers without Normalization

Transformers without Normalization 文章概括Abstract1 引言2 背景&#xff1a;歸一化層3 歸一化層做什么&#xff1f;4 動態 Tanh &#xff08;Dynamic Tanh (DyT)&#xff09;5 實驗6 分析6.1 DyT \text{DyT} DyT 的效率6.2 tanh \text{tanh} tanh 和 α α α 的消融實驗…

軟考中級-軟件設計師 操作系統(手寫筆記)

第一章&#xff1a;基礎知識 第二章&#xff1a;進程管理 狀態轉換圖 進程同步機制 信號量機制 信號量題 死鎖 第三章&#xff1a;存儲管理 基礎知識 分頁存儲管理 分段存儲管理 段頁式存儲管理 頁面置換算法 第四章&#xff1a;文件管理 基礎知識 索引分配 空閑存儲空間的管…