操作系统原理之四种I/O模型

计算机基础 专栏收录该内容
1 篇文章 0 订阅

基础知识

首页先要理解两个概念:内核空间程序空间

用户线程不能直接操作内核空间,无论读写都是操作的用户空间。数据的复制是由内核完成的,不需要应用程序关心。

请求过程

请求(HTTP) -> 硬件 -> 内核空间 -> 程序空间 -> 处理逻辑(CRUD)

响应过程

处理逻辑(CRUD) -> 程序空间 -> 内核空间 -> 硬件 -> 请求(HTTP)

四种IO模型

1、同步阻塞IO(Blocking IO)

读的时候等着,一直等到有数据。

2、同步非阻塞IO(Non-blocking IO)

读的时候发现没有,就不等了,直接走;隔一小会儿再回来问问(轮询),直到有数据。

3、IO多路复用(IO Multiplexing)

启一个线程去轮询所有的就绪状态,然后各自发起read请求。

4、异步IO(Asynchronous IO)

数据就绪后自动复制数据到用户空间,然后发信号给用户线程。

其他

同步与异步

同步IO,是一种用户空间与内核空间的IO发起方式。同步IO是指用户空间的线程是主动发起IO请求的一方,内核空间是被动接受方。

异步IO则反过来,是指系统内核是主动发起IO请求的一方,用户空间的线程是被动接受方。

tomcat

Tomcat 8.5以后彻底废弃BIO;

启用NIO之后,性能会有很大提升,通常用于Comet架构,非常适合事件驱动的Web 应用,以及对交互性和实时性要求很强的应用,如股票交易行情分析、聊天室和Web 版在线游戏等。

netty

对java nio的封装;

可脱离Tomcat独立作为Web服务器,tomcat基于http协议的,而netty可以自定义任何协议,能做tomcat不能做的事。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页

打赏

Kevin395

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值