色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

POSIX對同步、異步I/O的定義

Linux愛好者 ? 來源:lq ? 2019-04-27 18:19 ? 次閱讀

一. POSIX對同步、異步I/O的定義

我們先大致看看POSIX對同步、異步的定義,不用細究,重點看我標紅的部分就行。

同步I/O會導致請求進程阻塞,直到I/O操作完成;

異步I/O不會導致請求進程阻塞。

二. 同步、異步,阻塞、非阻塞

個人理解同步與否與阻塞與否只是看待問題的不同維度,不用過于追究同步和阻塞有什么區別、以及異步和非阻塞有什么區別。

我用小明購買火車票的例子大致先講述下同步、異步,阻塞、非阻塞這幾種情況的組合。

同步阻塞,小明去火車站買票。首先,他需要在某一個售票窗口排隊,當輪到他買票時,他需要告訴售票員他需要一張去上海的火車票,然后售票員需要去系統查詢是否還有余票,有的話再收款出票,最后再把票給小明。在火車票到手之前,小明都不能做其他的事情,這種情況我們可以理解為阻塞。

同步非阻塞,小明委托黃牛幫忙買火車票,然后小明可以做其他事情,但是需要每隔10分鐘就打電話去詢問黃牛票是否買到。黃牛買到票后,打電話通知小明說票已經買到,小明再去黃牛那里取火車票。這里的非阻塞指的是黃牛在買票的過程中,小明是不用等待的,他可以做其他事情,只是需不時地去詢問黃牛票是否買好。但是,在小明去黃牛那里取票的過程中,小明還是不能做其他事情。

異步阻塞,基本上沒有這個說法。

異步非阻塞,小明委托黃牛幫忙買火車票,然后小明可以做其他事情,黃牛買好票后會自動把票送到小明的家里。在這整個過程中,小明都可以做他自己想做的事情,不會被阻塞。

三. Unix中的I/O模型

OK,有了上面的基礎過后,我們可以開始講I/O模型了。

網絡Socket的輸入操作中,I/O大致可以分為兩個階段,這個兩個階段大家務必掌握:

數據從網絡中抵達,然后數據被復制到系統內核的緩沖區;

系統內核將內核緩沖區中的數據復制到用戶進程的緩沖區中。

在Unix中有5種I/O模型,它們是:

阻塞式I/O

非阻塞式I/O

多路復用I/O

信號驅動I/O

異步I/O

下面,我們逐一分析每種I/O模型。

1.阻塞式I/O

阻塞式I/O,即Blocking I/O。用戶發起一個recvfrom系統調用,內核會等待數據從網絡中到達。一旦數據準備就緒,系統內核將把自己的緩沖區中的數據拷貝到用戶進程的緩沖區。在系統內核等待數據、復制數據的過程中,用戶進程是不能做其他任何事情的,只能等待內核完成上述一系列的操作。

2.非阻塞式I/O

與阻塞式I/O不同,非阻塞式I/O中,用戶進程在發起recvfrom系統調用后可以立即返回,但是用戶進程需要不時地循環詢問系統內核數據是否已經準備就緒,即輪詢(polling)。輪詢往往會消耗大量的CPU時間。

下圖中,用戶進程發起recvfrom系統調用,由于系統內核中數據尚未就緒,內核會立即返回EWOULDBLOCK錯誤碼,防止用戶進程阻塞。如此往復,直到系統內核中數據準備就緒。在數據就緒前,用戶進程是非阻塞的,這也就是為什么這種模型叫非阻塞式I/O的原因。數據就緒后,和阻塞式I/O一樣,內核將數據拷貝至用戶進程,在數據拷貝的過程中,用戶進程是阻塞的。

3.多路復用I/O

多路復用I/O的關鍵函數為select或者poll。我們以select函數為例,當我們調用該函數時,用戶進程將阻塞,直到系統內核中的數據準備好。數據就緒后,系統會通知用戶進程數據已經可讀,然后用戶進程會發起recvfrom系統調用,將數據從內核拷貝到用戶進程,在數據拷貝期間,用戶進程是阻塞的。

使用多路復用的優勢是我們可以等待多個描述符就緒,對應到Java NIO多路復用模型中就是我們可以使用一個線程監聽多個Channel的請求。

4.信號驅動I/O

信號驅動I/O模型主要是讓內核在描述符就緒的時候發送SIGIO信號通知用戶進程,據我的了解,這種I/O模式運用的并不多,這里就不多描述,直接看圖吧。

5.異步I/O

用戶進程在調用異步I/O函數后會立即返回,并且會讓內核在完成所有操作后通知用戶進程。在內核進行I/O操作的期間,我們的用戶進程不會阻塞。特別需要注意的是,和前面四中I/O模型不同,異步I/O模型在內核將數據拷貝到用戶進程時,我們的用戶進程不會阻塞。

四. I/O模型對比

對比上述5中I/O模型我們可以發現,前面4種模型的區別主要在第一階段,而第二階段都是一樣的,即將數據從內核拷貝到用戶進程時都會阻塞。根據POSIX對同步、異步I/O的定義,可以得出前4種模型都屬于同步I/O。而第5種I/O,即異步I/O,兩個階段的操作都是由系統內核來處理的,用戶進程并沒有介入。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    7597

    瀏覽量

    89110
  • UNIX
    +關注

    關注

    0

    文章

    296

    瀏覽量

    41540
  • Posix
    +關注

    關注

    0

    文章

    36

    瀏覽量

    9508

原文標題:Unix 中的 I/O 模型

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    i.MX6ULL】驅動開發9——Linux I/O模型分析并進來類比

    本篇介紹了Linux中的五種I/O模型:阻塞式I/O模型、非阻塞式I/O模型、
    的頭像 發表于 05-26 09:05 ?2293次閱讀
    【<b class='flag-5'>i</b>.MX6ULL】驅動開發9——Linux <b class='flag-5'>I</b>/<b class='flag-5'>O</b>模型分析并進來類比

    Xilinx FPGA異步復位同步釋放—同步后的復位該當作同步復位還是異步復位?

    針對異步復位、同步釋放,一直沒搞明白在使用同步化以后的復位信號時,到底是使用同步復位還是異步復位?
    發表于 06-21 09:59 ?1558次閱讀
    Xilinx FPGA<b class='flag-5'>異步</b>復位<b class='flag-5'>同步</b>釋放—<b class='flag-5'>同步</b>后的復位該當作<b class='flag-5'>同步</b>復位還是<b class='flag-5'>異步</b>復位?

    Linux設備驅動中的異步通知與異步I/O

    ;信號驅動的異步I/O"。Linux信號Linux系統中,異步通知使用信號來實現。信號也就是一種軟件中斷。信號的產生:kill raise alarm用戶按下某些終端鍵;硬件異常;終止
    發表于 02-21 10:52

    測試serialX的posix支持詳解

    Interface) layer” 子菜單項,選擇“Enable POSIX file system and I/O”“Enable I/O
    發表于 02-14 11:29

    冗余I/O

    6.1 冗余I/O定義I/O模塊以每兩個一組組態成冗余對運行時,I/
    發表于 07-23 00:29 ?26次下載

    Java I/O 的相關方法分析

    (select and poll),signal driven I/O (SIGIO),asynchronous I/O (the POSIX
    發表于 09-27 13:18 ?0次下載
    Java <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 的相關方法分析

    posix是什么

    POSIX表示可移植操作系統接口,POSIX標準定義了操作系統應該為應用程序提供的接口標準,是IEEE為要在各種UNIX操作系統上運行的軟件而定義的一系列API標準的總稱,其正式稱呼為
    發表于 11-14 15:09 ?1.1w次閱讀
    <b class='flag-5'>posix</b>是什么

    異步傳輸和同步傳輸的區別介紹

    本文開始對異步傳輸進行了介紹,其中包括了異步傳輸工作原理和異步傳輸模式,其次介紹了同步傳輸的定義和特點,最后詳細介紹了
    發表于 03-02 14:09 ?1w次閱讀
    <b class='flag-5'>異步</b>傳輸和<b class='flag-5'>同步</b>傳輸的區別介紹

    執行和理解I/O特征分析

    Learn about tools available for understanding I/O patterns. Understand output in context
    的頭像 發表于 10-26 06:10 ?1742次閱讀

    同步復位和異步復位電路簡介

    同步復位和異步復位都是狀態機的常用復位機制,圖1中的復位電路結合了各自的優點。同步復位具有時鐘和復位信號之間同步的優點,這可以防止時鐘和復位信號之間發生競爭條件。但是,
    的頭像 發表于 08-12 15:20 ?7483次閱讀
    <b class='flag-5'>同步</b>復位和<b class='flag-5'>異步</b>復位電路簡介

    2022 RT-Thread全球技術大會:POSIX如何定義各種功能

    POSIX如何定義各種功能?有哪些標準?
    的頭像 發表于 05-27 16:42 ?800次閱讀
    2022 RT-Thread全球技術大會:<b class='flag-5'>POSIX</b>如何<b class='flag-5'>定義</b>各種功能

    異步電機與同步電機的區別是什么

    的優缺點又有哪些來幫助大家更好地了解這兩種電機。 1、同步電機與異步電機的區別 ①電機的基本定義同步電機的轉速等于定子旋轉磁場的轉速。異步
    發表于 05-25 16:46 ?2492次閱讀

    XPHY I/O同步接口應用說明

    電子發燒友網站提供《XPHY I/O同步接口應用說明.pdf》資料免費下載
    發表于 09-13 14:46 ?0次下載
    XPHY <b class='flag-5'>I</b>/<b class='flag-5'>O</b>源<b class='flag-5'>同步</b>接口應用說明

    同步異步通信協議介紹

    同步異步傳輸歸結為時鐘是外部的(同步)還是內部的(異步)。異步協議的一些例子包括UART、USB、CAN和以太網。
    發表于 11-27 15:39 ?1809次閱讀
    <b class='flag-5'>同步</b>和<b class='flag-5'>異步</b>通信協議介紹

    異步電路和同步電路區別在哪?

    部分是獨立運行的,沒有明確定義的時鐘信號來同步它們的操作。相反,每個部分在滿足特定的條件下單獨啟動和運行,通過相互之間的通信來完成所需的協作。異步電路通常采用握手協議來確保數據的正確傳輸,即在發送方發送數據
    的頭像 發表于 12-07 10:53 ?3726次閱讀
    主站蜘蛛池模板: 亚洲色图激情小说 | 九九热在线视频 | 国产产一区二区三区久久毛片国语 | 日本护士性生活 | 寻找最美乡村教师颁奖晚会 | 天龙八部慕容属性加点 | 久久99久久成人免费播放 | 亚洲高清国产拍精品动图 | 性xxx在线观看 | 在线看片av以及毛片 | 女人久久WWW免费人成看片 | 色拍拍噜噜噜啦啦新网站 | 黄片长版看嘛 | 欧美日韩亚洲一区二区三区在线观看 | 丰满五十老女人性视频 | 国产成人在线视频免费观看 | 真人做受120分钟免费看 | 久久久欧美国产精品人妻噜噜 | 国产交换丝雨巅峰 | 双性将军粗壮H灌满怀孕 | 网友自拍偷拍 | 午夜福利小视频400 午夜福利网国产A | 亚洲人成网站7777视频 | 蜜桃传媒在线观看 | 亚洲日韩在线观看 | 最新国产精品视频免费看 | 紧致肉肉高h | 青青久久精品 | 精品成人片深夜 | 免费人妻无码AV不卡在线 | 日本熟妇乱人伦A片精品软件 | 秋霞电影网午夜一级鲁丝片 | 国产精品人妻无码久久久蜜桃臀 | 欧美性视频xxxxhd | 交换邻居波多野结衣中文字幕 | 小向美奈子厨房magnet | 九九热国产视频 | 男女牲交全过程免费播放 | 成人性生交大片免费看中文 | WWW国产色情在线观看APP | 国产成人免费网站在线观看 |