1.Nette入門第一章——IO演進

1. IO 基礎

1.1. linux網絡IO模型

  1. 阻塞IO模型
  2. 非阻塞IO模型
  3. IO多路復用模型(NIO)
  4. 信號驅動IO模型
  5. 異步IO模型

1.2. IO多路復用模型

目前支持IO多路復用的系統(tǒng)調用有select,pselect,poll,epoll。epoll相對于select特點如下:

  1. 支持一個進程打開的socket描述符(FD)不受限制(僅受限與操作系統(tǒng)的最大文件句柄數(shù))。1GB內存大約是10W個句柄,通過cat /proc/sys/fs/file-max 查看。
  2. IO效率不會隨著FD數(shù)目的增加而線性下降。select/poll每次是線性掃描全部集合,因此會線性下降。epoll只處理活躍的socket,但如果所有的socket都活躍, epoll并不比select/poll高很多。
  3. 使用mmap加速內核與用戶空間的消息傳遞。epoll是通過和用戶空間mmap同一塊內存實現(xiàn)。
  4. epoll的API更加簡單。

2. JAVA IO演進之路

JDK1.4之前--BIO
JDK1.4--NIO以JSR-51的身份出現(xiàn)。但是所有文件操作都是同步阻塞調用,不支持文件異步讀寫操作。
JDK1.7--NIO2.0由JSR-203演進而來。具體改進地方如下:

  1. 提供批量獲取文件屬性的API。
  2. 提供AIO功能,支持基于文件的異步IO和套接字的異步操作。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容