中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

socket概念

發布時間:2020-08-11 08:09:24 來源:網絡 閱讀:134 作者:yinjiaqi006 欄目:web開發

不管socket,還是FIFO、管道、終端,對我們來說,一切都是文件,一切都是流。在信息 交換的過程中,我們都是對這些流進行數據的收發操作,簡稱為I/O操作(input and output),往流中讀出數據,系統調用read,寫入數據,系統調用write。不過話說回來了 ,計算機里有這么多的流,我怎么知道要操作哪個流呢?對,就是文件描述符,即通常所說的fd,一個fd就是一個整數,所以,對這個整數的操作,就是對這個文件(流)的操作。我們創建一個socket,通過系統調用會返回一個文件描述符,那么剩下對socket的操作就會轉化為對這個描述符的操作。不能不說這又是一種分層和抽象的思想。
同步IO,是一種用戶空間與內核空間的調用發起方式。同步IO是指用戶空間線程是主動發起IO請求的一方,內核空間是被動接受方。
異步IO則反過來,是指內核kernel是主動發起IO請求的一方,用戶線程是被動接受方。
阻塞IO,指的是需要內核IO操作徹底完成后,才返回到用戶空間,執行用戶的操作。阻塞指的是用戶空間程序的執行狀態,用戶空間程序需等到IO操作徹底完成。傳統的IO模型都是同步阻塞IO。
非阻塞IO,指的是用戶程序不需要等待內核IO操作完成后,內核立即返回給用戶一個狀態值,用戶空間無需等到內核的IO操作徹底完成,可以立即返回用戶空間,執行用戶的操作,處于非阻塞的狀態。
I/O多路復用就通過一種機制,可以監視多個描述符,一旦某個描述符就緒,能夠通知程序進行相應的操作。
select的本質是采用32個整數的32位,即3232= 1024來標識,fd值為1-1024。當fd的值超過1024限制時,就必須修改FD_SETSIZE的大小。這個時候就可以標識32max值范圍的fd。
poll與select不同,通過一個pollfd數組向內核傳遞需要關注的事件,故沒有描述符個數的限制,pollfd中的events字段和revents分別用于標示關注的事件和發生的事件,故pollfd數組只需要被初始化一次。
epoll還是poll的一種優化,返回后不需要對所有的fd進行遍歷,在內核中維持了fd的列表。select和poll是將這個內核列表維持在用戶態,然后傳遞到內核中。與poll/select不同,epoll不再是一個單獨的系統調用,而是由epoll_create/epoll_ctl/epoll_wait三個系統調用組成,后面將會看到這樣做的好處。epoll在2.6以后的內核才支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆山市| 驻马店市| 徐汇区| 汝南县| 奉新县| 沁水县| 襄樊市| 兰州市| 益阳市| 漾濞| 突泉县| 寿光市| 武安市| 兴和县| 东阿县| 永新县| 封开县| 高青县| 宁津县| 福州市| 乌兰察布市| 巴青县| 清镇市| 龙川县| 哈尔滨市| 通河县| 盐池县| 白玉县| 宿州市| 伊宁县| 黔江区| 彰武县| 柳州市| 裕民县| 大田县| 五指山市| 界首市| 临澧县| 海晏县| 盐城市| 德兴市|