前一节内容大概介绍了一下Linux的历史由来,各大Linux发行厂商都是基于GNU项目下的所有开源软件,来构建各自己的Linux发行版本,一个完整的Linux发行版本大概可以分为以下四个层次结构:
 
Base System => X Protocol => Windows Manager => Application
1. Base System
所谓Base System,也就是一个最小的基本系统,需要包含一些系统必备的开源组件,比如:kernel, filesystem, glibc, bash等。
 
这个最小系统最终能达到的层次就是能够启动我们的命令行字符控制终端,也就是一个bash环境,这样一个最小系统可以精简、控制在几十M的大小以内。
 
2. X Protocol
当我们构建完了最小的基本系统以后,这样一个系统只支持命令行字符终端模式,而无法支持图形化界面,如果想要使我们的Linux系统能够支持图形化界面,必须要有X Protocol的支持,基于这样的一个X协议,就可以在最小系统的层次上,构建Linux的窗口管理器。
 
X Protocol仅仅只是一个协议,对于这样一个协议,具体是由什么来实现的呢?在Linux早期的时候,是通过XFree86来实现X协议,经过多年的发展,XFree86已经更替为今天的X.Org项目。
 
不管是XFree86, 还是现在的X.Org,在实现X协议的时候,都是基于C/S架构,也就是X Server 和 X Client 的交互模式。关于X Server 和 X Client 之间的关系,在接下来的一节中将详细介绍。在这里大家只需明确:如果我们需要支持图形化界面,就需要有X相关的组件来作为一个沟通的桥梁。
 
当然,X 并不是唯一的桥梁,有像Wayland这样的新生替代品也已经面世,只是目前尚不成熟,也许在未来的某一天,Wayland将会全面代替现在的 X。
 
3. Windows Manager
有了X层的支持以后,广大开源软件开发者或开发组织,就可以基于这样的一个接口,来开发上层的图形化窗口管理器,即Windows Manager, 比如我们熟知的KDE,Gnome, Xfce, Openbox等,这些图形化的桌面环境也就是对上面提到的X Client的一个具体实现,来和 X Server进行交互通信。
 
在一下章节中,将具体讲解X Server, X Client, Xlib, QT, GTK, KDE, Gnome之间的关系。
 
4. Application
Application也就是指我们的上层图形化应用程序,比如 Liberoffice办公套件,Firefox,Thunderbird,Pidgin等。
Linux系统中的大多数图形化应用程序都是基于QT或GTK+这两个开发套件来开发的,当然也有像Java, Python等编写的应用程序。
 
综上,Linux发行厂商组合上面所描述的四个层次的GNU项目组件,最终提供给用户一个完整的Linux操作系统,下面还是以一张结构图来展示这一节所阐述的Linux层次:
 

Linux体系结构(二): Linux系统层次的更多相关文章

  1. Linux基础系列—Linux体系结构和Linux内核结构

    /** ****************************************************************************** * @author    暴走的小 ...

  2. Linux(二) 系统远程访问

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1. Why?为什么需要远程访问? 人和人之间对话有两种方式,一种是面对面直接交谈,另一种是打电话. 我 ...

  3. linux 问题二 查看系统是32位还是64位

    方法: 1.uname -a 2.uname -m 3.file /sbin/init 4.arch 5.Settings -> Details 说明: 1. i386 适用于intel和AMD ...

  4. Linux入门(二)Linux基本命令及基本操作

    1 常用Linux命令 图形界面进入到字符界面: ctrl+alt+F2~F6 字符界面进入到图形界面:ctrl +alt+F7 查看本机ip:  ifconfig  (windows是:ipconf ...

  5. linux学习(二)-----Linux 的目录结构、远程登录、vi和vim

    linux目录结构 基本介绍 linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此 目录下再创建其他的目录. 目录结构具体介绍 Linux 目录总结 1.lin ...

  6. linux体系结构与内核结构图解

    1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了,用户的应用程序,C库 ...

  7. 转载-lvs官方文档-Linux服务器集群系统(二)

    Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...

  8. Linux学习之二-Linux系统的目录结构

    Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...

  9. Linux服务器集群系统(一)--转

    引用地址:http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介 ...

随机推荐

  1. Ubuntu 14.10 下安装navicat

    1 下载navicat,网址http://www.navicat.com.cn/download,我下载的是navicat111_premium_cs.tar.gz 2 解压到合适的位置 3 进入解压 ...

  2. pyplot基本绘制(二)

    本节主要解决在一个figure中放置多福图,以及图中一些注释文字的添加等问题. 先看一个效果图: 下面是实现代码: __author__ = 'hust' import numpy as np imp ...

  3. Interview----判断两个链表是否相交?

    题目描述: 判断两个单链表是否相交?假设链表没有环. 假如链表有环呢? 1.  假如没有环 那么如果两个链表相交的话,必然最后的节点一定是同一个节点.所以只需要各自扫描一遍链表,找到最后一个节点,比较 ...

  4. Python ~~~ 面向对象的利器

    class Rectangle(): # 有没有括号都行 . def __init__(self,x,y): self.x=x self.y=y def getPeri(self): def getA ...

  5. PHP Filter

    PHP filters are used to validate and sanitize external input. Validating data is determine if the da ...

  6. HDU4055 - number string(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 思路:dp[i][j]表示处理前i个字符以j结尾可能的序列数. 当a[i]=='I'时,dp[i ...

  7. ajax 外部变量

    1.一般的js代码可以放在任何位置.但是用jquery写的代码需要先引入jquery文件,再写代码. 2.ajax函数中内部的变量不能传到外部.如果改变外部变量,需要async:false,代码如下: ...

  8. 怎么在手机浏览器上访问电脑本地的文件,局域网内,自建WiFi也可以

    首先,电脑要有Mysql+Apache+PHP环境,我直接用Wampsever,开启环境后手机和电脑要再同一个局域网内,然后电脑上打开win+R,输入cmd,再输入ipconfig,就可以看着这台的电 ...

  9. PAT (Basic Level) Practise:1008. 数组元素循环右移问题

    [题目连接] 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… A ...

  10. ANTLR3完全参考指南读书笔记[02]

    前言 程序语言是什么? 用wiki上的描述,程序语言是一种人工设计的语言,用于通过指令与机器交互:程序语言是编程程序的标记,而程序是一种计算或算法的描述.详细介绍和背景信息参考: Programmin ...