zoukankan      html  css  js  c++  java
  • 认识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/

  • 相关阅读:
    [翻译]汇编器和加载器简史
    一定要制作一个计划
    基本排序算法(冒泡,快排,插入,希尔,选择,归并)
    用yunio网盘搭建git私有仓库
    git 学习笔记1
    select函数
    axel源码学习(1)——重要流程细节
    axel源码学习(0)——程序逻辑
    Unix网络编程(3)——C/S模型几种情况
    【转】程序员技术练级攻略
  • 原文地址:https://www.cnblogs.com/gean/p/12737325.html
Copyright © 2011-2022 走看看