觀念詳解『阻塞、非阻塞、同步及異步』

閱讀時間約 4 分鐘

預備知識


一切從任務(行程或執行緒)狀態變化說起

計算機由單個程式到多個程式運行及整批系統到分時系統,這一切都是為了更有效率地使用計算機,現在我們討論在單核情況下的計算機是如何運作的,每個任務的運行都被分配一個時間片段,時間到就會發起系統中斷告知系統,讓CPU可以去執行其他任務,由於每個時間片段都時間都非常短,所以我們會覺得好像所有的任務都是同時運作的,但其實不然,這些任務是一個接著一個按照順序被執行的,我們把這個現象稱之為並行(中國用語:並發)。如果說在時間片段期間我們發起會阻塞當前任務的系統調用,那麼當前任務所有相關資訊都會被保存,然後被放入等待佇列當中,該任務狀態為阻塞,排班程式會為我們分派其他任務並且配置CPU給其使用,而這個被作業系統阻塞的任務其發起的系統調用會經由DMA來進行處理資料的交換,等待完成搬移資料會發出I/O中斷告知作業系統,此時作業系統將會從該任務暫停的地方開始繼續執行。
以下是任務狀態流程圖:
任務狀態

並行與平行

並行(Concurrency),中國用語並發
任務在不同時間點被分配CPU來執行處理,也就是說在同一個時間點,任務不可能同時執行的。
平行(Parallelism),中國用語並行
每一個任務都可以分別被分配至不同的CPU來執行處理,也就是說在同一個時間點下,被分配CPU的任務可以同時執行。平行是基於多核處理器才能實現的
用一張圖說明並行與平行:
並行與平行

I/O與CPU傾向任務

I/O傾向任務(I/O-bound )
CPU執行時間短,I/O執行時間長。(優先權重較CPU傾向任務高)
CPU傾向任務(CPU-bound )
CPU執行時間長,I/O執行時間短。

阻塞、非阻塞


調用阻塞I/O

作業系統層面
任務調用阻塞I/O後,系統不會返回結果,會將當前任務相關資訊保存,並且將CPU使用權歸還,讓CPU執行其他任務,而該任務進入等待佇列,此時狀態為阻塞態,並且等待處理I/O的控制器處理完資料發出中斷告知系統,系統才會返回結果。
程式層面
因為此刻任務為阻塞態,所以什麼事都不做,就只有等待,接收到系統返回的結果後,此任務才能繼續往下執行。
調用阻塞I/O

調用非阻塞I/O

作業系統層面
任務調用非阻塞I/O後,系統會立即返回一結果或一個錯誤,不會將當前任務阻塞,此任務仍然被CPU執行著,佔用著CPU,CPU會一直處理狀態判斷,接收來自應用層面不斷輪詢的非阻塞調用。
程式層面
此任務透過不斷輪詢的方式,向系統檢查是否有結果,而系統會不斷返回結果給該任務。
調用非阻塞I/O

阻塞與非阻塞的差異

  • 阻塞I/O不能進行並行操作的,很重要在這裡我指的是該任務本身的程式,而不是利用作業系統的多行程/多執行緒來實現並行操作,對於非阻塞I/O來講,可以實現程式本身的並行操作,這就是為什麼非阻塞I/O執行效率比較高的一個原因。
  • 非阻塞I/O調用後會立即返回結果或一個錯誤,而阻塞I/O調用後則不會立即返回
  • 調用非阻塞I/O的任務,仍然佔據著CPU,所以不會被阻塞,而調用阻塞I/O的任務會釋出CPU的使用權,進入阻塞狀態

同步、異步


什麼是同步?

以例子來說,現在在腳本中有兩個函數A與B,其中在A中我們調用B函數,A函數必須等到B函數執行完,返回結果後,A函數才能繼續執行,這個期間A函數必須等待。同步有個特色那就是等待,也就是說他是順序執行一個接著一個。
同步執行結果

什麼是異步

當一個異步方法調用發出後,會立即返回一個錯誤或結果,讓其回到應用本身可以繼續往下執行,如果說該應用不只發出一個異步調用,彼此之間不需要等待誰先完成才能執行下一個,它們是平行操作的,執行結果誰先返回不一定,這就是異步的特色。
以下我們來看一下這段程式碼的執行結果:
異步執行結果
可以發現上圖的異步執行結果,我們對其發出了兩個異步調用,可以看到它們的返回順序不一致,這就是異步的特色,讓其可以平行處理,不需要彼此等待。

參考來源

  1. 《深入淺出node.js》。朴靈。北京。人民郵電出版社。
  2. 【操作系统】詳解阻塞、非阻塞、同步、異步
  3. 行程管理『行程與執行緒概念
為什麼會看到廣告
6會員
5內容數
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
Thumbnail
avatar
邱品齊皮膚科醫師
2023-04-27
『彩虹七號行動6/3-黃金篇』復盤預期,詳談分批買進的觀念-黃金分割這期我會特別談談黃金分割線、又稱斐波那契回撤的實務應用,該如何有效的利用這個工具賺錢呢?
Thumbnail
avatar
平凡睡公子
2024-06-03
攝影觀念:掌握相機拍攝技巧、全景拍攝與曝光控制上篇介紹基礎名詞,這次要分享拍攝技巧概念,實際上操作相機和手機差異真的很大,手機相對來說更為直覺操作,即時能看到影像成果並快速後製,而相機具備的優秀性能、raw檔、相簿分類方式、專業感...,也是許多攝影愛好者一直戀戀不倦的因素,而且不同相機不同攝影器材,拍攝出風景都能呈現不同質感,真的讓人很容易陷
Thumbnail
avatar
Joy
2024-03-19
投資觀念-向科斯托蘭尼《一個投機者的告白》學習,十個重要投資觀念分享從一個懵懂無知的大學生,到踏入專業投資領域,五年多時間裡不斷學習成長。當中很幸運遇見啟蒙導師,一直在投資和職涯的道路上給我支持與鼓勵,這些話是他不斷分享給我,在投資路上一輩子終身受益無窮。因此,我這邊特地分享給大家,並融入我自己的個人想法,給予讀者學習參考!
Thumbnail
avatar
散戶研究員
2023-10-01
有一種愛是放手——《斷食善終》2,從第一手個案經驗、觀念迷思到法規醫療協同,拿回生命自主權,有尊嚴、無懼無憾的安詳離世一個標題超長的續集,說的是上一本斷食善終之後,更詳細的個案介紹、部分國家的狀況以及相關概念的澄清。這本書少了上一本書主要談母親斷食往生經歷的親屬情緒,多的是醫師專業、更細緻的步驟以及部分家屬的經驗集結。奶奶也到了高齡,身體各個器官開始退化,即便自己對這樣的死亡歷程並不反對排斥,但死亡這個禁忌話題,確
Thumbnail
avatar
老蔡書評
2023-09-26
擔心孩子長不高?重要發育觀念與生長激素缺乏症,兒童內分泌專科醫師圖文詳解「那是一位13歲的國中女生,來就診的時候身高只有134公分,體重27公斤,非常瘦小,第二性徵也沒有發育 。」兒童內分泌科主任林昭旭醫師分享,「進一步檢查發現她是生長激素缺乏症,骨齡是10歲6個月,且性荷爾蒙也沒有分泌 。」經過半年的追蹤,她依然沒有長高
Thumbnail
avatar
照護線上
2023-09-15
命運可以改變嗎?【4個真正改運的核心觀念】拆解《了凡四訓》現代版《了凡四訓:白話插圖版》/自由意志存在嗎? 自由意志V.S.命定論/如何改變命運?人的命是天註定的嗎? 如果是天註定,那努力還有用嗎? 命運可以改變嗎? 如果可以,究竟要如何改變命運? 以上問題的解答盡在以下即將分享的經典好書👇👇👇 這次第九期的沉浸分享讀書會,我"特別"分享了一本420年前的「改運之書」----《了凡四訓》的全新解讀版《了凡四訓:白話插圖版》。 錯!
Thumbnail
avatar
榮恩衛斯理的健康學院
2022-03-15
《策展簡史》:2002 年,如何理解現在的博物館觀念?博物館的未來如何?二十年後,回顧奧布里斯特(Hans Ulrich Obrist,1968-,倫敦蛇形畫廊展覽與國際項目總監)與尚.里爾寧(Jean Leering,1934-2005,建築師、艾恩德霍芬市立范阿貝美術館館長、熱帶博物館館長、第四屆卡塞爾文獻展決策人。)的對談。
Thumbnail
avatar
Artco Books 典藏藝術出版
2022-03-10
深入淺出講解瘦身觀念:《搞懂內分泌,練成你的易瘦體質》最近看了這本書,身為在健身房待過一段時間、又有一點點醫學常識的人,真心覺得這本書寫得很中肯,又一針見血地指出許多人在瘦身上的盲點。
Thumbnail
avatar
阿洛洛
2021-11-24
詳解男生不孕「精蟲數減少」原因+解決辦法中醫師張若偉:「宅男型」和「爆肝型」共同的問題是內臟脂肪太多...  
Thumbnail
avatar
司馬儀
2021-08-12
詳解笑杯、陰杯、聖杯| 拜拜準不準?連續三個聖杯的機率? 太想要被羨慕,就容易走錯腳步...古人才說和氣生財、以和為貴家、和萬事興!易怒,福氣和財氣就進不了家門。所以古人才勸後人「宰相肚裡能撐船」...
Thumbnail
avatar
司馬儀
2021-08-11