加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.cn/)- 运营、云管理、经验、智能边缘、云硬盘!
当前位置: 首页 > 运营 > 正文

为公民分析家时代设计大数据用户体验

发布时间:2021-02-06 16:04:31 所属栏目:运营 来源:互联网
导读:举个栗子。发起一个non-blocking socket的read读操作系统调用,流程是这个样子: 在内核数据没有准备好的阶段,用户线程发起IO请求时,立即返回。用户线程需要不断地发起IO系统调用。 内核数据到达后,用户线程发起系统调用,用户线程阻塞。内核开始复制数据

举个栗子。发起一个non-blocking socket的read读操作系统调用,流程是这个样子:

  • 在内核数据没有准备好的阶段,用户线程发起IO请求时,立即返回。用户线程需要不断地发起IO系统调用。
  • 内核数据到达后,用户线程发起系统调用,用户线程阻塞。内核开始复制数据。它就会将数据从kernel内核缓冲区,拷贝到用户缓冲区(用户内存),然后kernel返回结果。
  • 用户线程才解除block的状态,重新运行起来。经过多次的尝试,用户线程终于真正读取到数据,继续执行。

NIO的特点:应用程序的线程需要不断的进行 I/O 系统调用,轮询数据是否已经准备好,如果没有准备好,继续轮询,直到完成系统调用为止。

NIO的优点:每次发起的 IO 系统调用,在内核的等待数据过程中可以立即返回。用户线程不会阻塞,实时性较好。

NIO的缺点:需要不断的重复发起IO系统调用,这种不断的轮询,将会不断地询问内核,这将占用大量的 CPU 时间,系统资源利用率较低。

总之,NIO模型在高并发场景下,也是不可用的。一般 Web 服务器不使用这种 IO 模型。一般很少直接使用这种模型,而是在其他IO模型中使用非阻塞IO这一特性。java的实际开发中,也不会涉及这种IO模型。

再次说明,Java NIO(New IO) 不是IO模型中的NIO模型,而是另外的一种模型,叫做IO多路复用模型( IO multiplexing )。

五、 IO多路复用模型(I/O multiplexing)

如何避免同步非阻塞NIO模型中轮询等待的问题呢?这就是IO多路复用模型。

IO多路复用模型,就是通过一种新的系统调用,一个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是内核缓冲区可读/可写),内核kernel能够通知程序进行相应的IO系统调用。

目前支持IO多路复用的系统调用,有 select,epoll等等。select系统调用,是目前几乎在所有的操作系统上都有支持,具有良好跨平台特性。epoll是在linux 2.6内核中提出的,是select系统调用的linux增强版本。

IO多路复用模型的基本原理就是select/epoll系统调用,单个线程不断的轮询select/epoll系统调用所负责的成百上千的socket连接,当某个或者某些socket网络连接有数据到达了,就返回这些可以读写的连接。因此,好处也就显而易见了——通过一次select/epoll系统调用,就查询到到可以读写的一个甚至是成百上千的网络连接。

举个栗子。发起一个多路复用IO的的read读操作系统调用,流程是这个样子:
 

微软希望在 2021 年 6 月结束的 Cobalt 开发学期结束前,完成这些工作的大部分。然后,微软将发布 RTM 构建版本,将其交付给 OEM 厂商,并作为指定的版本开始在 Beta 频道进行测试。更新本身不会向公众推出,直到秋天,可能与 LCU(最新的累积更新)一起进行功能和修复。

如果微软能够与 “太阳谷”一起完成计划,这将是我们迄今为止看到的最大规模的 Windows 10 UI 更新,在 Windows 10“坐以待毙”的三年漫长岁月之后。Panos Panay 希望人们从需要 Windows 到爱上 Windows,一个直观的、以设计为导向的现代刷新界面会是很好的开始。

有了 “太阳谷”,Windows 10 仍将是 PC 用户所熟悉的,不同于从 Windows 7 到 Windows 8 的过渡。笔者还获悉,对于一些功能,用户将可以在新旧体验之间进行切换,给用户一个选择,而不是强加给他们。“太阳谷”就是要将大家熟悉的 Windows UX 进行改进和现代化。

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读