日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php零拷贝,百万并发「零拷贝」技术系列之初探门径

發布時間:2025/4/16 php 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php零拷贝,百万并发「零拷贝」技术系列之初探门径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Wiki對零拷貝的定義

"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another.

零拷貝(Zero-copy)是指在計算機執行操作時,CPU 不需要將數據從一塊內存拷貝到另一塊內存,減少拷貝次數可以提高性能。

在操作系統層面來說零拷貝是指不需要將數據從內核空間復制到用戶空間,而Netty、Kafka等框架都因零拷貝而聞名著稱,技術來不得半點馬虎和一知半解,本著知其然知其所以然的態度,本系列為你揭秘其中原委和解決方案。

計算機組成

計算機是由硬件、內核和上層應用組成,通過它們在功能上由下而上的層層傳遞給用戶提供各種服務,如下圖所示。為了便于獨立開發、調試和維護,采用了高內聚低耦合分層設計思想:內核負責對硬件直接操作,在封裝硬件操作的同時給上層應用提供功能接口,承上啟下;上層應用調用內核接口為用戶提供業務服務。每一層都使用較低層提供的功能而不必知道其實現細節,只需了解其接口能做什么即可。

實際上隨著時間的演進和功能的不斷豐富,內核體積變得龐大不易管理,所以現代的操作系統基本都采用微內核的設計思想:把內核模塊化,將非基礎模塊從內核中移除,把這些非基礎模塊實現為系統應用,甚至用戶應用,從而減少內核的體積和復雜度,使其功能更聚焦。

微內核設計的好處頗多:

方便擴展內核,所有新的應用都可以在用戶空間增加而不必修改內核;

由于大多數應用都是作為用戶進程而非內核進程來運行的,為微內核提供了更好的安全性和可靠性;

微內核較小,開發、調試和維護工作量都相對較少,而且容易進行硬件平臺移植;

然而微內核究竟包括哪些基礎模塊,實際上每個操作系統的處理并不相同,并沒有定論和標準,但一般至少會包括進程、內存管理和通訊功能。

上層應用包含了系統應用和用戶應用:系統應用一般跟隨系統發行版而來,但也是通過調用內核接口開發的,一般是用于系統管理;用戶應用是用戶自行開發的應用,一般是為了實現自己的業務邏輯。但上層應用一般都采用高級語言來編寫,為了降低復雜性和高效,高級語言對內核接口進行了封裝,提供了編程語言類庫,比如C語言的標準庫、Java的JDK等。

用戶空間和內核空間

用戶進程不能直接操作硬件,只有通過內核提供的接口來操作,而為了確保內核的正常、安全地運行,不會因上層應用的異常導致內核陷入災難,就必須區分內核代碼執行和用戶定義代碼執行,也就是所謂的雙重模式即: 內核態和用戶態。 當用戶程序正在執行,系統處于用戶態,當用戶程序需要調用內核功能,它必須通過系統調用的形式轉換為內核態執行。 一般是通過硬件支持來區分兩種模式的,在硬件中增加了一個模 式bit位: 0代表內核態,1代表用戶態。

系統通過引導程序,裝入內核處于內核態,緊接著開始執行用戶進程進入用戶態(模式位為1),一旦遇到中斷或系統調用,則又從用戶態進入內核態(模式位為0),內核處理完后返回用戶進程進入用戶態(模式位為1),如上圖。

進程是操作系統資源分配的最小單元,進程在執行上有用戶態和內核態,那么虛擬內存也分為了用戶空間和內核空間,供用戶態和內核態的進程使用。比如32位的操作系統內存可以高達4G,把最高的1G字節(虛擬內存地址0xC0000000~0xFFFFFFFF)供內核使用,稱為內核空間,而將較低的3G字節(虛擬內存地址 從0x00000000到0xBFFFFFFF)供上層應用使用,稱為用戶空間。

虛擬內存是相對于物理內存而言,操作系統會對物理內存進行映射和抽象,軟件的所有操作都是對虛擬內存而言,也可以理解為物理內存映射為用戶空間和內核空間。

當進程由用戶態進行進入內核態,系統需要保存當前運行在CPU中進程的上下文,從而能在其處理完畢后轉換為用戶態時能恢復其上下文,這一任務稱為上下文切換(context switch)。上下文切換在計算機執行期間會比較頻繁,只要牽涉到內核態和用戶態的轉換就會涉及到上下文切換。所謂的上下文究竟是指什么呢?上下文從其英文context可知,是進行運行的環境,它包括進程的狀態、計數器、全局變量、臨時數據如函數參數、返回地址、局部變量等,還可能包括運行期間動態分配的內存堆(heap)。頻繁的上下文切換,對數據的保存和恢復操作過于頻繁,對性能的影響特別顯著。

示例

為了全面理解用戶空間、內核空間、用戶態、內核態,我們舉個例子來說明:讀取文件內容并通過Socket發送。

由于用戶進程無法直接操作硬件,因此用戶進程首先需要通過系統調用(System Call)來調用內核接口,此時的事件流如下

用戶進程通過系統調用讀取文件內容,由用戶態進入內核態;

內核通過直接內存(DMA)的方式獲取文件內容,并返回用戶進程,由內核態轉換用戶態;

用戶進程對數據進行處理后,通過系統調用Socket發送數據,由用戶態進入內核態;

內核通過直接內存(DMA)的方式發送數據,并返回用戶態;

由上圖流程可知會經歷4次上下文切換,而它的數據會也經歷了4次拷貝,數據流向如下

內核通過DMA方式,把文件內容拷貝到內核空間;

從內核空間通過CPU拷貝到用戶空間,供用戶進程使用;

用戶處理完畢后,把數據從用戶空間通過CPU拷貝到內核空間;

內核通過DMA方式拷貝到網卡發送;

什么是DMA

所有的硬件是通過控制器連接到計算機總總線,傳統的中斷式I/O方式是把數據拷貝到控制器寄存器,控制器再以中斷的方式通知CPU拷貝到內存。由于這種方式頻繁的中斷,導致大量占用CPU時間片。DMA是Direct Memory Access的縮寫,中文稱之為直接存儲器訪問。它的使用方式是CPU通知DMA控制器進行I/O后CPU就被解脫出來做別的事情了,數據的拷貝過程都是由DMA來操作完成,數據拷貝完成后DMA控制器以中斷的方式通知CPU。

寫在最后

本篇我們了解了用戶態、內核態、用戶空間、內核空間的概念,而且從事件流和數據流我們也找到了提高性能的優化方向: 降低拷貝和上下文切換次數,下一篇我們將揭曉優化方案。

版權歸@碼農神說所有,轉載須經授權,翻版必究

轉載可聯系助手,微信號:codeceo-01

總結

以上是生活随笔為你收集整理的php零拷贝,百万并发「零拷贝」技术系列之初探门径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 两口子交换真实刺激高潮 | 国产精品111 | 中文字幕第2页 | 国产精品大屁股白浆一区 | 国产乱子伦精品 | 欧美成人生活片 | 男人天堂a在线 | 双性娇喘浑圆奶水h男男漫画 | 天天色天天干天天 | 国产丝袜视频在线 | 欧美黄色录像视频 | 亚洲美女视频网 | 女生的胸无遮挡 | 一本av在线 | 少妇av一区二区 | 无码人妻精品一区二区中文 | 成人一区二区av | 国产网红无码精品视频 | 先锋av资源站 | 最好看的mv中文字幕国语电影 | 久久9999久久免费精品国产 | 日韩精品电影在线 | 男女床上拍拍拍 | 国产做受高潮漫动 | 欧美精品一区二区三区视频 | 欧美成人不卡 | 激情综合网五月天 | 国产主播一区 | 乱子伦一区二区三区 | 在线观看免费福利 | 国产一级一级片 | 隔壁邻居是巨爆乳寡妇 | 日日噜夜夜噜 | 国产一区二区自拍视频 | 欧美性生交大片免费看 | www,av在线| 亚洲综合自拍偷拍 | 天堂国产在线 | 网站av| 国产三级三级三级三级三级 | 亚洲天堂av女优 | 久久综合五月 | 三上悠亚在线观看一区二区 | 精品少妇一区二区三区在线观看 | 国内自拍偷拍 | 91免费黄色 | 国产精品666 | 99视频在线精品免费观看2 | 久久丝袜视频 | 色呦呦一区二区 | 毛片网站免费 | 国产精品乱码一区二三区小蝌蚪 | 中文字幕久久久久 | 啪啪激情网 | 一级福利片 | 欧美黑人性xxx猛交 少妇无套内谢久久久久 | 国产传媒一区 | 在线成人福利 | 超碰av男人的天堂 | 精品不卡一区二区 | 热久久精品 | 国产精品永久 | 一卡二卡在线视频 | 丁香婷婷久久久综合精品国产 | 成人在线国产视频 | 麻豆短视频 | 少妇被按摩师摸高潮了 | 蜜桃中文字幕 | 黄色小视频链接 | 天堂av中文| 青青操免费在线视频 | 亚洲色成人一区二区三区小说 | 久热超碰 | 国产专区自拍 | 国产人妖一区 | 日韩欧美亚洲一区 | 亚洲欧美一区二区视频 | 亚洲一区二区三区四区不卡 | 免费观看在线观看 | 人妻av无码一区二区三区 | 天天摸天天 | 丁香伊人网 | 国产成人在线免费观看 | 久久久久一 | 久久久精品人妻一区二区三区四 | 奇米影视久久久 | 国产精品成人免费精品自在线观看 | 国产a三级| 天天射天天干天天色 | 亚洲va在线观看 | 日韩精品久 | 久久一区二区三区四区五区 | 黄色在线视频网站 | 亚洲av无码一区二区三区人 | 黄色片亚洲 | 国产一区二区三区福利 | 99久久免费看精品国产一区 | 国产极品免费 | 91精品啪|