• 认识x11


    x11是什么?

    x11是一个协议。x11是x协议,版本号11。

    x11用来干什么?

    x11是类UNIX操作系统用来实现图形界面的。

    x协议由xserver和xclient组成:

    • xserver负责包括你的显示器、显卡、鼠标、键盘等交互外设。
    • xclient负责处理逻辑。

    个人觉得这与我们传统的c/s模式恰恰相反,传统的服务器负责数据的管理,客户机负责完成与用户的交互任务。
    xserver把鼠标键盘的动作(x事件)通过x协议传给xclient,而xclient把要显示的内容通过x协议传给xserver。

    x11的效率问题

    x协议可以基于TCP/IP传输。xserver和xcient可以不是同一个OS。这很符合类UNIX操作系统多用户的特性。
    但是这样也造成了效率上的问题,就算不占有带宽也还是影响了协议栈。
    X11其实是拥有压缩功能的,可以将显示数据进行压缩后再传输,这样可以一定程度上提高效率。
    xserver对于本地的xclient会使用Unix domain sockets来代替TCP协议,Unix domain socket的速度相比于内部回环网络来说快好几倍。

    一些技术与x11的关系

    各种类UNIX操作系统与我们用win10不同,他们本身是不带图形界面的。没有图形界面他们也能通过命令行正常使用。
    win10的内核里就有图形界面,而类UNIX操作系统内核不带。
    对于类UNIX操作系统,他们的图形界面只是一个用户态软件而已不是必须的。

    xfree64是xserver的实现,xorg基于xfree64。
    为了让开发者更加容易开发xclient提供了xlib,然而对于开发者xlib仍然不够简便。
    于是在xlib上又诞生了qt和gtk,qt是直接使用Xlib库的,gtk则使用了再次封装了的gdk和glib。
    qt与gtk都很优秀,在他们之上开发者分别开发出了kde与gnome桌面。
    kde和gnome是集成了窗口管理器及一些应用程序的套件。
    其他的x application则跑在这些窗口管理器里。

    x11forwarding的使用

    前面提到了xserver和xcient可以不是同一个OS,不得不说一下x11forwarding。

    # vi /etc/ssh/sshd_config
    X11Forwarding Yes
    # systemctl restart sshd
    

    然后ssh -Y [username]@[ip]远程连上机器后就可以在本地运行远程的x application了。

    总结

    x11可能效率不高,但是蛮有意思的,期待我以后的开发中能用到他。

    个人博客:https://geanqin.github.io/

  • 相关阅读:
    模型绑定
    Asp.Net MVC基础
    Entity Framework 6.x介绍
    IE内核发送ajax请求时不会将url中的参数编码
    .NET使用OpenSSL生成的pem密钥文件[1024位]
    简单测试nginx1.90做TCP协议负载均衡的功能
    《图解TCP/IP》读书笔记
    使用wireshark抓包分析浏览器无法建立WebSocket连接的问题(server为Alchemy WebSockets组件)
    wireshark常用的过滤器设置
    通过监控线程状态来保证socket服务器的稳定运行
  • 原文地址:https://www.cnblogs.com/gean/p/12737325.html
Copyright © 2020-2023  润新知