国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

IO的幾個(gè)模型

這篇具有很好參考價(jià)值的文章主要介紹了IO的幾個(gè)模型。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.I/O模型名詞介紹

說到I/O模型,都會(huì)牽扯到同步、異步、阻塞、非阻塞這幾個(gè)詞,以下講解這幾個(gè)詞的概念。

阻塞和非阻塞

阻塞和非阻塞指的是一直等還是可以去做其他事。

阻塞(一直等水燒開)(blocking):調(diào)用結(jié)果返回之前,調(diào)用者被掛起(當(dāng)前線程進(jìn)入非可執(zhí)行狀態(tài),在這個(gè)狀態(tài),CPU不會(huì)分配時(shí)間片,線程暫停運(yùn)行);

非阻塞(去看電視,時(shí)不時(shí)看水燒開沒有)(nonblocking):調(diào)用結(jié)果返回之前,調(diào)用者不會(huì)被掛起(當(dāng)前線程還是可執(zhí)行狀態(tài),CPU會(huì)分配時(shí)間片,線程還可以運(yùn)行)

同步和異步

同步/異步關(guān)注的是消息通信機(jī)制

同步(不會(huì)響的水壺)(synchronous):被調(diào)用者完成任務(wù)后,不會(huì)主動(dòng)給調(diào)用者返回調(diào)用結(jié)果。

異步(會(huì)響的水壺)(asynchronous):被調(diào)用者完成任務(wù)后,會(huì)主動(dòng)給調(diào)用者返回調(diào)用結(jié)果。

??????????????????

? ? ?? 阻塞、非阻塞、多路IO復(fù)用,都是同步IO,異步必定是非阻塞的,所以不存在異步阻塞和異步非阻塞的說法。真正的異步IO需要CPU的深度參與。換句話說,只有用戶線程在操作IO的時(shí)候根本不去考慮IO的執(zhí)行全部都交給CPU去完成,而自己只等待一個(gè)完成信號的時(shí)候,才是真正的異步IO。所以,拉一個(gè)子線程去輪詢、去死循環(huán),或者使用select、poll、epool,都不是異步。

二.I/O模型類型

IO模型分為以下五類

  1. 阻塞I/O:所有過程全阻塞
  2. 非阻塞I/O:如果沒有數(shù)據(jù)buffer,則立即返回EWOULDBLOCK
  3. I/O復(fù)用型(select和poll):在wait和copy階段分別阻塞
  4. 信號驅(qū)動(dòng)型I/O(SIGIO):在wait階段不阻塞,但copy階段阻塞(信號驅(qū)動(dòng)I/O),即通知
  5. 異步I/O(AIO):完全無阻塞方式,當(dāng)I/O完成時(shí)提供信號

1.阻塞I/O

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

說明:應(yīng)用程序調(diào)用一個(gè)IO的recvfrom函數(shù),會(huì)導(dǎo)致應(yīng)用程序阻塞,進(jìn)入阻塞狀態(tài)后直到I/O操作結(jié)束才會(huì)返回;如果系統(tǒng)內(nèi)核數(shù)據(jù)沒有準(zhǔn)備好,那就一直等待數(shù)據(jù)準(zhǔn)備,因?yàn)槭钦{(diào)用了recvfrom函數(shù)導(dǎo)致了應(yīng)用程序阻塞,所以一直在等,做不了任何事情,內(nèi)核數(shù)據(jù)準(zhǔn)備好之后把數(shù)據(jù)從內(nèi)核拷貝到用戶空間,拷貝結(jié)束后,I/O函數(shù)返回成功指示。 注:其阻塞時(shí)在I/O操作階段

2.非阻塞I/O

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

說明:用戶線程發(fā)起IO請求時(shí)立即返回。但并未讀取到任何數(shù)據(jù),則返回字段為“EWOULDBLOCK”,用戶線程需要不斷地發(fā)起IO請求,直到數(shù)據(jù)到達(dá)后,才真正讀取到數(shù)據(jù),繼續(xù)執(zhí)行。即“輪詢”機(jī)制。 整個(gè)IO請求過程中,雖然用戶線程每次發(fā)起IO請求后可以立即返回,但是為了等到數(shù)據(jù)。仍需要不斷地輪詢、重復(fù)請求、消耗了大量的CPU資源;是比較浪費(fèi)CPU的方式,一般很少用這種模型,而是在其他模型中使用非阻塞IO這一特性。

3.I/O復(fù)用(select和poll)

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

說明:I/O復(fù)用模型會(huì)用到select或poll函數(shù),在I/O復(fù)用模型中,并不是阻塞到I/O操作過程中,而是阻塞到select或者poll函數(shù)中; 以select為例:進(jìn)程在select處阻塞,等待幾個(gè)描述符中的一個(gè)變?yōu)榭刹僮鳎绻麤]等待到就繼續(xù)阻塞在第一階段,如果等到了一個(gè)描述符變?yōu)榱丝刹僮鳎瑒t調(diào)用recvfrom函數(shù)將數(shù)據(jù)拷貝到應(yīng)用緩沖區(qū)。

4.信號驅(qū)動(dòng)I/O(SIGIO)

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

說明:首先,我們允許套接口進(jìn)行信號驅(qū)動(dòng)I/O,并安裝一個(gè)信號處理函數(shù)SIGIO,如果數(shù)據(jù)沒有準(zhǔn)備好,則立即返回結(jié)果,進(jìn)程繼續(xù)工作并不阻塞。當(dāng)數(shù)據(jù)準(zhǔn)備好時(shí),系統(tǒng)內(nèi)核會(huì)主動(dòng)發(fā)送一個(gè)SIGIO信號給應(yīng)用程序,應(yīng)用程序收到信號后,可以在信號處理函數(shù)中調(diào)用I/O操作函數(shù)recvfrom進(jìn)行數(shù)據(jù)處理。 信號驅(qū)動(dòng)I/O模型的優(yōu)點(diǎn)是當(dāng)數(shù)據(jù)報(bào)到達(dá)時(shí),可以不阻塞,主循環(huán)可以繼續(xù)執(zhí)行,只是等待處理程序的通知,或者數(shù)據(jù)已經(jīng)準(zhǔn)備好被處理,或者數(shù)據(jù)報(bào)已經(jīng)準(zhǔn)備好被讀了。

5.異步I/O(AIO)

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

說明:當(dāng)一個(gè)異步過程調(diào)用發(fā)出后,調(diào)用者不能立刻得到結(jié)果。實(shí)際處理這個(gè)調(diào)用的部件在完成后,通過狀態(tài)通知和回調(diào)通知來告訴調(diào)用者的輸入輸出操作。 用戶可以直接對I/O執(zhí)行讀寫操作,這些操作告訴內(nèi)核用戶讀寫緩沖區(qū)的位置,以及I/O操作完成之后內(nèi)核通知應(yīng)用程序的方式,就是上面講的通過狀態(tài)通知或者回調(diào)通知來告訴調(diào)用者。異步I/O的讀寫操作總是立即返回,但沒有返回結(jié)果說是否阻塞,因?yàn)楫惒絀/O操作真正的讀寫操作已由內(nèi)核接管,內(nèi)核自己對數(shù)據(jù)處理完成后生成一個(gè)信號,然后通知用戶剛才交給自己的事件已經(jīng)處理完成。

五種I/O模型的總結(jié)及比較

中文圖示如下:

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

英文圖示如下:

IO的幾個(gè)模型,計(jì)算機(jī),數(shù)據(jù)庫,java,sql

從兩張圖中我們可以看到,越往后,阻塞越少,理論上效率也是最優(yōu)。 其中五種I/O模型中,前三種屬于同步I/O,后兩者屬于異步I/O。文章來源地址http://www.zghlxwxcb.cn/news/detail-656582.html

到了這里,關(guān)于IO的幾個(gè)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決MySQL數(shù)據(jù)庫拒絕遠(yuǎn)程計(jì)算機(jī)連接問題

    解決MySQL數(shù)據(jù)庫拒絕遠(yuǎn)程計(jì)算機(jī)連接問題

    錯(cuò)誤信息:Host is not allowed to connect to this mysql server 以前MySQL數(shù)據(jù)庫部署在云服務(wù)器上,程序服務(wù)端也部署在云服務(wù)器上,連接服務(wù)器從沒出現(xiàn)過問題。最近有一次需要做一個(gè)完全局域網(wǎng)的環(huán)境部署,我把數(shù)據(jù)庫和程序服務(wù)端部署在里兩臺(tái)不同的電腦上,訪問數(shù)據(jù)庫的時(shí)候出現(xiàn)

    2024年02月09日
    瀏覽(27)
  • 【軟考數(shù)據(jù)庫】第一章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識

    【軟考數(shù)據(jù)庫】第一章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識

    目錄 目錄 1.1 計(jì)算機(jī)系統(tǒng) 1.1.1 計(jì)算機(jī)硬件組成 1.1.2 中央處理單元 1.1.3 數(shù)據(jù)表示 1.1.4 校驗(yàn)碼 1.2 計(jì)算機(jī)體系結(jié)構(gòu) 1.2.1 體系結(jié)構(gòu)分類 1.2.2?指令系統(tǒng)存 1.2.3?儲(chǔ)系系統(tǒng) 1.2.4?輸入/輸出技術(shù) 1.2.5?總線結(jié)構(gòu) 1.3 可靠性、性能、安全 1.3.1 計(jì)算機(jī)可靠性 1.3.2?計(jì)算機(jī)系統(tǒng)的性能評價(jià) 1.

    2023年04月13日
    瀏覽(23)
  • 山東專升本計(jì)算機(jī)第六章-數(shù)據(jù)庫技術(shù)

    山東專升本計(jì)算機(jī)第六章-數(shù)據(jù)庫技術(shù)

    數(shù)據(jù)庫技術(shù) SQL數(shù)據(jù)庫與NOSQL數(shù)據(jù)庫的區(qū)別 數(shù)據(jù)庫管理系統(tǒng) 考點(diǎn) 6 數(shù)據(jù)庫管理系統(tǒng)的組成和功能 組成 ? 模式翻譯 ? 應(yīng)用程序的翻譯 ? 交互式查詢 ? 數(shù)據(jù)的組織和存取 ? 事務(wù)運(yùn)行管理 ? 數(shù)據(jù)庫的維護(hù) 功能 ? 數(shù)據(jù)定義功能 ? 數(shù)據(jù)存取功能 ? 數(shù)據(jù)庫運(yùn)行管理能力 ? 數(shù)

    2024年02月05日
    瀏覽(30)
  • 11K+ Star!圖解計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)、計(jì)算機(jī)組成、數(shù)據(jù)庫!

    大家好,我是 Java陳序員 。 俗話說得好, 面試造火箭,入職擰螺絲 。我們在工作中,其實(shí)很少用到一些計(jì)算機(jī)底層知識,往往只要編碼完事。但是, 知其然還要知其所以然 ,我們不僅要做一個(gè)合格的“CV 工程師”,更是要掌握一些底層原理! 計(jì)算機(jī)基礎(chǔ)知識,作為計(jì)算機(jī)

    2024年02月05日
    瀏覽(64)
  • 三、計(jì)算機(jī)理論-關(guān)系數(shù)據(jù)庫-結(jié)構(gòu)化查詢語言SQL

    SQL 概述 是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語言,現(xiàn)成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 特點(diǎn):綜合統(tǒng)一、高度非過程化、面向集合的操作方式、以同一種語法結(jié)構(gòu)提供兩種使用方式(直接使用或者嵌入高級語言使用)、語言簡潔,易學(xué)易用。 四大功能如下: SQL功能 動(dòng)詞 數(shù)據(jù)查

    2024年01月24日
    瀏覽(51)
  • 計(jì)算機(jī)復(fù)試面試基礎(chǔ)知識(八股文)(數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)網(wǎng)、機(jī)組等)

    數(shù)據(jù)庫緒論 1、簡述三層模式、兩級映射,分別有什么作用? 模式(邏輯模式):是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,即不涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié),也與具體應(yīng)用程序開發(fā)工具語言無關(guān)。 外模式(用戶模式):是用戶能看見和使

    2023年04月09日
    瀏覽(73)
  • 數(shù)據(jù)增強(qiáng):讓計(jì)算機(jī)視覺模型更加智能和有效

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 引言 1.1. 背景介紹 隨著計(jì)算機(jī)視覺技術(shù)的快速發(fā)展,各種數(shù)據(jù)增強(qiáng)技術(shù)也應(yīng)運(yùn)而生。數(shù)據(jù)增強(qiáng)技術(shù)可以有效地提高計(jì)算機(jī)視覺模型的智能和有效性,從而在眾多應(yīng)用場景中取得更好的表現(xiàn)。 1.2. 文章目的 本文旨在闡述數(shù)據(jù)增強(qiáng)技術(shù)在計(jì)算機(jī)視

    2024年02月08日
    瀏覽(25)
  • 系統(tǒng)架構(gòu)設(shè)計(jì)師---計(jì)算機(jī)基礎(chǔ)知識之?dāng)?shù)據(jù)庫系統(tǒng)結(jié)構(gòu)與規(guī)范化

    目錄 一、基本概念 ?二、 數(shù)據(jù)庫的結(jié)構(gòu) ?三、常用的數(shù)據(jù)模型 ? ? ? ??概念數(shù)據(jù)模型 ? ? ? ?基本數(shù)據(jù)模型 ? ? ? ?面向?qū)ο竽P?四、數(shù)據(jù)的規(guī)范化 ? ? ?函數(shù)依賴 ? ? ??范式 ? 1. 數(shù)據(jù)庫 (DataBase, DB) : 是指長期儲(chǔ)存在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。 ??

    2024年02月12日
    瀏覽(28)
  • 數(shù)據(jù)增強(qiáng):如何讓計(jì)算機(jī)視覺模型更加準(zhǔn)確和可靠

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 數(shù)據(jù)增強(qiáng)(Data Augmentation)是一種常用的技術(shù),可以提高計(jì)算機(jī)視覺模型的精度和魯棒性。本文主要介紹數(shù)據(jù)增強(qiáng)技術(shù)的原理、分類方法及應(yīng)用。通過實(shí)例分析,闡述數(shù)據(jù)增強(qiáng)對模型精度提升的重要作用。最后,討論一些未來可能遇到的問題與

    2024年02月07日
    瀏覽(27)
  • java碳排放數(shù)據(jù)信息管理系統(tǒng)Myeclipse開發(fā)mysql數(shù)據(jù)庫web結(jié)構(gòu)java編程計(jì)算機(jī)網(wǎng)頁項(xiàng)目

    java碳排放數(shù)據(jù)信息管理系統(tǒng)Myeclipse開發(fā)mysql數(shù)據(jù)庫web結(jié)構(gòu)java編程計(jì)算機(jī)網(wǎng)頁項(xiàng)目

    一、源碼特點(diǎn) ?? ?java Web碳排放數(shù)據(jù)信息管理系統(tǒng)是一套完善的java web信息管理系統(tǒng),對理解JSP java編程開發(fā)語言有幫助,系統(tǒng)具有完整的源代碼和數(shù)據(jù)庫,系統(tǒng)主要采用B/S模式開發(fā)。開發(fā)環(huán) 境為TOMCAT7.0,Myeclipse8.5開發(fā),數(shù)據(jù)庫為Mysql5.0,使用java語言開發(fā)。 java Web碳排放數(shù)據(jù)信

    2024年01月22日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包