准备面试1.1

https://snailclimb.gitee.io/javaguide/#/docs/java/basis/IO%E6%A8%A1%E5%9E%8B

关于I/O的知识

何为I/O

  • 先从计算机结构的角度来解读一下 I/O。
    根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。

    从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。

  • 从应用程序的角度来解读一下I/O
    为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space 。
    我们在平常开发过程中接触最多的就是 磁盘 IO(读写文件) 和 网络 IO(网络请求和相应)。
    从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起 IO 调用(系统调用),操作系统负责的内核执行具体的 IO 操作。也就是说,我们的应用程序实际上只是发起了 IO 操作的调用而已,具
    体 IO 的执行是由操作系统的内核来完成的。

    当应用程序发起 I/O 调用后,会经历两个步骤:

    1. 内核等待 I/O 设备准备好数据
    2. 内核将数据从内核空间拷贝到用户空间。
  • Java 中 3 种常见 IO 模型

  1. BIO 属于同步阻塞 IO 模型 。
    同步阻塞 IO 模型中,应用程序发起 read 调用后,会一直阻塞,直到在内核把数据拷贝到用户空间。

    在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量
posted @ 2021-06-18 14:43  BigMonster85  阅读(47)  评论(0)    收藏  举报