java系统中I/O模型有哪些

小编给大家分享一下java系统中I/O模型有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联是专业的双牌网站建设公司,双牌接单;提供做网站、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行双牌网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一、阻塞式I/O模型

java系统中I/O模型有哪些

备注:进程调用recvfrom, 系统调用直到数据到达且数据被复制到应用进程的缓存区或者发生错误时才返回结果,应用进程开始数据数据。特点:图示中第1步和第2步都是阻塞的。

二、非阻塞式I/O模型

java系统中I/O模型有哪些

备注:调用recvfrom时没有数据返回,因此内核转而立即返回一个EWOULDBLOCK错误;数据准备好被复制到应用进程缓存区,于是recvfrom成功返回。特点:图示第1步没有阻塞;第2步阻塞;由于持续轮询内核调用recvfrom,耗费大量CPU资源。

三、I/O复用模型

java系统中I/O模型有哪些

备注:I/O复用可以调用select/poll阻塞在这两个系统调用中的某一个上,而不是阻塞在真正的I/O系统调用上。图示中应用进程阻塞于select调用,等待数据报套接字变为可读,当select返回套接字可读这一条件时,调用recvfrom把所读数据复制到应用进程缓冲区。特点:select等待多个描述符就绪;即图示中第1步可以等待多个文件描述符。与I/O复用密切相关的另一种I/O模型:在多线程中使用使用阻塞I/O;该模式没有使用select阻塞在多个文件描述符上,而是使用多线程,每个文件描述符一个线程,这样每个线程都可以自由地调用像recvfrom之类的阻塞式系统调用。

四、信号驱动式I/O模型

java系统中I/O模型有哪些

备注:应用程序开启套接字的信号驱动式I/O功能,通过sigaction系统调用安装一个信号处理函数。系统调用立即返回,应用程序继续工作,即:非阻塞。当数据报准备好读取后,内核为该进程产生一个SIGIO信号。进而可以调用recvfrom读取数据报。特点:内核在描述符就绪时发送SIGIO信号通知应用程序,等待数据报的过程不被阻塞;即:图示第1步不被阻塞。

五、异步I/O模型

java系统中I/O模型有哪些

备注:异步I/O由POSIX规范定义,工作机制:应用进程告诉内核启动某个动作,并在内核处理整个过程含数据准备以及数据从内核空间复制到用户空间完成后通知应用进程。应用进程在等待I/O完成期间不被阻塞。特点:应用进程不被阻塞调用aio_read后立即返回;内核在第1步和第2步全部完成后通知应用进程;支持该异步I/O模型的系统少见。

以上是“java系统中I/O模型有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站标题:java系统中I/O模型有哪些
文章网址:http://scyanting.com/article/jioioc.html