一文详解Linux中终端界面(Console/Terminal)与图形界面之间的切换关系

 

前言:其实单纯的从命令界面与图形界面之间的切换是很容易的,就那么几个命令,但是要彻底弄懂这背后的设计架构需要涉及到很多的概念,本文为你讲解Ubuntu 18.10操作系统中的X Window,内容是了解自己机器上的 X Window、理解 display 和虚拟控制台、远程连接 X Server、理解 DisplayManager 和 X Window 桌面环境的启动过程和运行嵌套的 X Server等这些基本概念。

一、 什么是X Window

X Window不是某一个具体的窗体界面,X Window 本质是一个分层的架构,它分为 Server 和 Client。X Server 负责图形界面的显示和用户的输入,而Client 程序需要连接到 X Server,然后请求 X Server 绘制图形界面,同时从 X Server 接受用户的输入。在桌面系统上,X Server 和 Client 程序往往安装在同一台机器上,日常使用基本感觉不到它是分层的。就像我们的一台电脑,X Server和Client是在同一台电脑的。

既然X Window是分层的架构,很显然,X Server 和 Client 也可以分别运行在不同的机器上,在一台机器上运行程序,而在另外一台机器上显示图形界面。

很多人考到这里就有点蒙了,我们在编写网站的时候也有Server-Client分层架构啊,那这有区别吗?当然有了。

X Window 中的 Server 和 Client 的概念和我们平时接触到的“Server/Client”概念刚好相反。很多熟悉 Internet 原理的人,第一次接触 X Window 的这两个概念都会搞错。在Internet里面的Server/Client,是Server负责处理相关的业务,然后将结果返回到Client客户端,但是X Window恰好是相反的,它是Client负责处理,Server负责显示。

比如,我有两台电脑,一台本地机器上运行 Ubuntu 18.10 桌面版,而在另外一台远程机器上运行 CentOS 7(纯字符界面),如果是Internet里面的Server/Client架构,Ubuntu 是 Client,而 CentOS 是 Server。

但是在 X Window 中,Server 偏偏是我面前的这台 Ubuntu,X Server 运行在 Ubuntu 上。我可以在 CentOS 中运行 GVim,但是窗口显示在 Ubuntu 中,这时,GVim 是一个 Client 程序,它在远程机器上运行,而它的窗口显示在本地。

二、理解 display 和虚拟控制台

网上很多介绍 X Window 的文章都是先让系统进入字符界面,然后手动启动一个 X Server。其实这完全没有必要,因为在同一台机器上完全可以运行多个 X Server,只需要让每个 X Server 的 display 不同即可。那么 display 究竟是什么?

实际上,display 就是计算机配备的一套输入输出设备,一个电脑可以有多个输入输出设备,当然也可以只有一个。

在 X Window 中,可以通过 hostname:display_number.screen_number 来指定一个屏幕。可以这样理解:一台计算机可以有多个 display,一个 display 可以有多个屏幕。所以,display 相当于是计算机配备的一套输入输出设备,一般情况下,一台电脑只配一套键盘鼠标和一个显示器,特殊情况下,可以配多个显示器。

现在问题出来了,我的电脑只有一套键盘鼠标和一个显示器,也就是只有一个 display,那又怎么能运行多个 X Server 呢?那是因为在 Linux 中,还有虚拟控制台这样的高级特性。只需要同时按下 Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虚拟控制台中进行切换。就相当于是给这个电脑配备了7个不同的显示器。

注意:默认情况下,Linux会提供6个Terminal 来让用户登录,切换的方式为Ctrl+Alt+F1到F6.而且,系统会为这6个终端界面以 tty1、tty2、tty3、tty4、tty5、tty6 的命名方式命名,除此之外,Linux还有一个默认的X窗口桌面,使用Ctrl+Alt+F7,姐可以切换到图形桌面进行登录了。为什么用tty来命名呢?

tty:终端设备的统称。

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。Linux默认情况下

tty1~6是文本型控制台,tty7是X Window图形显示管理器。

但是Linux不同的发行版本上面的图形桌面和用户终端可能会有所不同。

比如在 Ubuntu 18.10 中,虚拟控制台 3 到 6 运行的是 tty,也就是字符界面,即Ctrl+Alt+F3到F6分别显示tty3、tty4、tty5、tty6,虚拟控制台 2 运行的是 Xorg,虚拟控制台 1 运行的是图形界面。

三、Terminal与X Window的互相转化

前面的使用Ctrl+Alt+Fn的形式来回切换只是形式上的转换,每一个都在运行,只不过显示的那一个不同,但是实际上,Terminal与X Window在Linux中的运行等级是不一样的,Linux一共有7中运行等级(run level),在不同的运行级下,系统有着不同的状态,它们分别是:

0:停机(记住不要把initdefault 设置为0,因为这样会使Linux无法启动 )

1:单用户模式,就像Win9X下的安全模式。

2:多用户,但是没有 NFS 。

3:完全多用户模式,标准的运行级。

4:一般不用,在一些特殊情况下可以用它来做一些事情。

5:X11,即进到 X-Window 系统。

6:重新启动 (记住不要把initdefault 设置为6,因为这样会使Linux不断地重新启动)。

Terminal默认的run level是3,而X Window默认的run level是5,现在如果我在中断输入如下命令:

init 3

那么会杀死X Window,这样就没有X Window了,只存在Terminal,此时如果我想要重新进入到X Window,我需要在Terminal进行登录,然后执行

startx命令

重新打开X Window。
 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux内核是一种开源的操作系统内核,是Linux操作系统的核心组成部分。它提供了操作系统与硬件之间的抽象层,负责管理系统的资源、调度任务、提供驱动程序等功能。 Linux内核采用分层的架构,包括硬件抽象层、系统调用层、进程管理层、件系统层和网络层等。硬件抽象层负责将不同硬件设备的接口统一起来,使得上层的软件可以方便地与硬件进行通信。系统调用层提供了一组API供用户进程调用,如件操作、网络通信等。进程管理层负责进程的创建、销毁以及调度等任务。件系统层负责件的管理和存储。网络层负责网络协议的实现和网络通信。 Linux内核的工作原理可以简单概括为以下几个关键步骤。首先,当一台计算机启动时,BIOS会加载内核映像到内存,并执行启动代码。然后,内核初始化各种数据结构、驱动程序和关键服务。接下来,内核创建一个初始的用户空间进程,称为init进程。init进程是所有其他进程的祖先进程。在此之后,内核根据调度算法来决定哪个进程可以使用CPU,并依次执行。同时,内核会提供一个断机制,以便处理硬件事件的优先级。 内核还提供了许多系统调用供用户进程调用,以实现对各种功能的访问。当用户进程需要操作件、创建进程或进行网络通信时,会通过系统调用将请求传递给内核,由内核代表用户进程执行相应的操作。内核通过调度算法来分配CPU时间片,并通过虚拟内存管理来管理内存资源的分配和回收。 总而言之,Linux内核是一个高度可配置和模块化的操作系统内核,通过分层架构和系统调用机制实现了对硬件的抽象和对用户进程的管理。了解Linux内核的架构和工作原理,有助于深入理解Linux操作系统以及开发和调试相关应用程序。 ### 回答2: Linux是一种开源的操作系统内核,其设计目标是为了在不同的计算机硬件平台上提供高效的、稳定的和安全的操作系统服务。 Linux内核的架构可以分为三个主要部分:进程管理、内存管理和件系统管理。 在进程管理方面,Linux内核使用了多任务处理技术,可以同时运行多个进程。每个进程都有独立的地址空间和资源,通过调度算法可以合理分配CPU时间片,优化系统的响应速度和资源利用率。 在内存管理方面,Linux内核使用了虚拟内存技术,将物理内存和逻辑内存进行了映射,使得每个进程都有独立的地址空间。当物理内存不足时,Linux内核会通过页面置换算法将暂时不使用的页写入磁盘交换空间,以释放物理内存供其他进程使用。 在件系统管理方面,Linux内核支持多种件系统,包括传统的ext3和ext4件系统,以及现代的Btrfs和XFS件系统。它负责件的读写操作,以及件的权限控制和磁盘空间的管理。 Linux内核的工作原理可以简单概括为以下几个步骤:首先,启动引导程序将内核加载到内存,并进行初始化。然后,内核分配一部分内存作为内核空间,用于存放内核代码和数据结构。接着,内核根据系统的硬件配置进行设备的初始化和驱动程序的加载。之后,内核根据系统的启动参数和配置件进行一系列的初始化工作,包括启动系统服务和加载用户程序。最后,内核进入主循环,不断地处理断、调度进程、管理内存和件系统,以提供稳定的操作系统服务。 总之,Linux内核是一个复杂而高效的软件系统,它通过进程管理、内存管理和件系统管理等功能,实现了操作系统的基本功能。了解Linux内核的架构和工作原理,有助于我们更好地理解和使用这个优秀的开源操作系统。 ### 回答3: Linux内核是一个开放源代码的操作系统内核,由一个核心程序和一组通用的系统工具组成。它是Linux操作系统的核心,负责处理硬件设备、管理系统资源、实现进程管理、件系统和网络功能等。 Linux内核的架构可以分为两个层次:用户空间和内核空间。用户空间包括用户应用程序,如图形界面终端程序等,它们通过系统调用接口与内核进行通信。内核空间包括内核核心的数据结构和程序,用于管理和控制硬件资源。 Linux内核的工作原理可以概括为以下几个方面: 1. 进程管理:内核负责创建、调度和终止进程。它使用进程描述符(task_struct)来跟踪进程的状态和资源使用情况,并根据调度算法分配CPU时间片给不同的进程。 2. 内存管理:内核负责管理系统的物理内存和虚拟内存。物理内存管理包括内存分配和释放,虚拟内存管理包括页面置换和页面回写等策略,以优化内存的使用效率。 3. 件系统:内核提供件系统接口,管理件和目录的创建、读写和删除等操作。它通过虚拟件系统层(VFS)将不同的件系统统一管理,如ext4、NTFS等。 4. 设备驱动:内核提供了访问硬件设备的接口,通过设备驱动程序与硬件交互。不同的硬件设备需要不同的驱动程序,如网卡、显卡、声卡等。 5. 网络功能:内核提供TCP/IP协议栈和网络设备驱动程序,用于实现网络通信功能。它提供网络连接的建立、数据传输和断开等功能,支持各种网络协议,如HTTP、FTP、SSH等。 总的来说,Linux内核是一个非常复杂且功能强大的软件,它负责管理计算机的各种资源和提供操作系统的各种功能。通过深入理解其架构和工作原理,我们可以更好地理解和使用Linux操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值