之前自學以及在公司里的一年多都沒有接觸過網絡IO相關的知識,六月份二面的時候有位面試官問了我一些有關網絡IO的相關問題,結果一臉懵逼。趁着現在有空,正好入門一下。 基礎概念 正式開始之前,需要鋪墊一些基本概念,以免接下來看到一臉懵逼。 我們都知道,在操作系統中,CPU負責執行指令,這些指令 ...
網絡IO模型及分類 網絡IO模型是一個經常被提到的問題,不同的書或者博客說法可能都不一樣,所以沒必要死摳字眼,關鍵在於理解。 Socket連接 不管是什么模型,所使用的socket連接都是一樣的。 以下是一個典型的應用服務器上的連接情況。客戶的各種設備通過Http協議與Tomcat進程交互,Tomcat需要訪問Redis服務器,它與Redis服務器也建了好幾個連接。雖然客戶端與Tomcat建的是短 ...
2019-10-15 16:09 0 670 推薦指數:
之前自學以及在公司里的一年多都沒有接觸過網絡IO相關的知識,六月份二面的時候有位面試官問了我一些有關網絡IO的相關問題,結果一臉懵逼。趁着現在有空,正好入門一下。 基礎概念 正式開始之前,需要鋪墊一些基本概念,以免接下來看到一臉懵逼。 我們都知道,在操作系統中,CPU負責執行指令,這些指令 ...
操作系統基本概念 首先來來說下操作系統,嗯,操作系統是計算機硬件的管理軟件,是對計算機硬件的抽象,操作系統將應用程序分為用戶態和內核態,例如驅動程序就位於內核態,而我們寫的一般程序都是用戶態,包括web服務器這些,應用程序無法直接操控硬件,只能通過系統調用,通過操作系統驅動io硬件,通過操作系統 ...
同步和異步,阻塞和非阻塞 同步和異步 關注的是結果消息的通信機制 同步:同步的意思就是調用方需要主動等待結果的返回 異步:異步的意思就是不需要主動等待結果的返回,而是通過其他手段比如,狀態通知 ...
目錄 單線程 多路復用機制 單線程 Redis 是單線程,主要是指 Redis 的網絡 IO 和鍵值對讀寫是由一個線程來完成的。持久化、異步刪除、集群數據同步等,其實是由額外的線程執行的。 避免了多線程編程模式面臨的共享資源的並發訪問控制問題。 多路復用 ...
《Unix網絡編程:卷1》中介紹了5中I/O模型,JAVA作為運行在宿主機上的程序,底層也遵循這5中I/O模型規則。這5中I/O模型分別是: 阻塞式IO 非阻塞式IO I/O復用 信號驅動式IO 異步IO 按POSIX標准來分,IO分為同步和異步,上面的前4鍾都屬於 ...
一 IO操作本質 數據復制的過程中不會消耗CPU 123 # 1 內存分為內核緩沖區和用戶緩沖區# 2 用戶的應用程序不能直接操作內核緩沖區,需要將數據從內核拷貝到用戶才能使用# 3 而IO操作、網絡請求加載到內存的數據一開始是放在內核緩沖區 ...
一、同步阻塞 IO(BIO) 當用戶線程調用了 read 系統調用,內核(kernel)就開始了 IO 的第一個階段:准備數據。很多時候,數據在一開始還沒有到達(比如,還沒有收到一個完整的Socket數據包),這個時候 kernel 就要等待足夠的數據到來。 當 kernel 一直等到數據 ...
后續操作。 同步和異步最大的區別在於:一個需要等待,一個不需要等待。 接下來解釋一下常見的IO模型 ...