多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # UNIX/Linux系统结构 UNIX/Linux 系统可以分为4个主要部分:内核、shell、文件系统和应用程序。 内核、shell 和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图: ![Linux系统结构](https://img.kancloud.cn/ce/e8/cee8647c65b5f99e3e07358d510ccd02_712x433.png) ## 1) 内核层 内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。 ## 2) Shell层 Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。 ## 3) 应用层 应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),任何系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。 > [Linux系统结构详解](https://blog.csdn.net/Maushawkin/article/details/105914166) > [Linux系统结构 详解](https://blog.csdn.net/weixin_30247159/article/details/96401070) # Linux 内核(Kernel) 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、[内存](http://product.yesky.com/catalog/219/)、设备[驱动](http://drivers.yesky.com/)程序、文件和[网络](http://product.yesky.com/net/)系统,决定着系统的性能和稳定性。 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图: ![内核组成](https://img.kancloud.cn/91/db/91db46987fe66a9f4e84a6e4f0fc0778_552x479.png) # 用户态和内核态 应用程序是无法直接访问硬件资源的,需要通过**通过内核**SCI 层提供的接口来访问硬件资源。 ![通过内核 SCI 层](https://img.kancloud.cn/b5/a8/b5a8eacab24ee5149e410b57d999eb25_522x460.png) ## SCI(System call interface) 系统调用接口层 SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。 * 在 `./linux/kernel` 中您可以找到 SCI 的实现。 * 在 `./linux/arch` 中找到依赖于体系结构的部分。 ## API(POSIX)、C库函数、系统调用 * 一般而言,应用程序使用API而不是直接使用系统调用来编程 * 进程UNIX/Linux的C库遵循POSIX规范,以库函数的形式实现了POSIX API(在API中使用系统调用完成相应功能)。 * 参考:`/usr/include/asm/unistd.h` ![应用程序通过API来进行系统调用编程](https://img.kancloud.cn/80/86/80863f1fc7d3572d2d6219a085f803f9_631x131.png) > POSIX:Portable Operating System Interface ---> 可移植操作系统接口 > [Linux系统结构详解](https://blog.csdn.net/hguisu/article/details/6122513) # X Window System ## 简介 linux 图形界面又称 **X window system**,实际上 linux 本身是没有界面了(它原本就是个内核,怎么会需要图形界面呢!)。 Linux 现在的图形界面的实现只是linux 下的应用程序实现的: 图形界面并不是 linux 的一部分,linux 只是一个基于命令行的操作系统,linux 和 Xfree 的关系就相当于当年的 DOS 和WINDOWS 3.0 一样,windows 3.0 不是独立的操作系统,它只是 DOS 的扩充,是 DOS 下的应用程序级别的系统,不是独立的操作系统。 同样 XFree 只是 linux下的一个应用程序而已,不是系统的一部分,但是 X 的存在可以方便用户使用电脑。WINDOWS 95 及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面 windows 就不成为 windows 了。 没有图形界面 linux 还是 linux,很多装 linux 的 Web 服务器就根本不安装图形界面。这也 WINDOWS 和 linux 的重要区别之一。 大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)用户界面; 而在 Linux 上广泛应用的有 GNOME(GNU Network Object Environment)(见下图)、KDE 等。 ![Gnome图形界面](https://img.kancloud.cn/10/b5/10b558205807cd0a61dc30fbce299798_400x226.png) ## X 是协议,不是具体的某个软件 苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且它对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。 既然是协议,那么肯定和平台无关的,因此可以让X应用程序显示在任何装 有X server 的远程计算机上。甚至显示在装有 Xnest 服务器的 windows系统上。只不过在大多数情况下,X应用程序都用本机的X server,然后X server将显示结果输出到本机的显示器。这也是很多人不理解X是一种协议的原因。 > [linux下的X server和linux图形界面原理--perfect](https://blog.csdn.net/Shb_derek/article/details/37966289) ## 组成部分 主要包含如下几个部分: 1. X server 主要提供基本的显示接口共 X client 使用,并将用户的操作等也反映给 X client,是 X client 与硬件的一个中间层。 2. 显示管理器(Display Manager) 例如(gdm kdm xdm等) 3. 窗口管理器(Window Manager) 例如(metacity,fluxbox等) 4. DM 和 WM之上的一些图形应用程序 在使用中一般都是b,c,d三者集合起来构成一个完整的集成工作环境,例如KDE、GNOME等,这就是我们平时所说的广义上的 X client。 > [xserver相关知识汇总](https://blog.csdn.net/arag2009/article/details/78465854) > [linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)](https://www.cnblogs.com/xj626852095/p/3648212.html) > [XWindow、Server、Client和QT、GTK之间的关系](https://www.jianshu.com/p/017ced3e8ae5) [第二十四章、 X Window 配置介绍](http://blog.csdn.net/mybluetiankong/article/details/20439241) [Linux入门学习教程:X Window究竟是什么](http://www.linuxidc.com/Linux/2015-02/114175.htm) # 参考 > [很好的linux课件](https://www.wendangwang.com/doc/d3e1269242423217c4357f00/23) > [1.3 系统调用与库函数](https://www.cnblogs.com/DengSchoo/p/12624459.html)