在 Linux 系统的众多组件中,我发现自己很困惑到底什么是内核,什么是 GNU 的部分。我了解一些基本概念,但是 shell 和窗口管理器之间的界限在哪里?
答案1
核心
内核管理资源。资源包括处理器时间、内存和外设。它通过直接与资源通信并向用户空间公开接口来实现这一点。
用户空间工具(有时包括 GNU 工具和实用程序)
用户空间工具包括基本实用程序,如 ls、cat、dd、ln、mount 等。它们允许用户使用内核提供的资源。 Linux(相对于 BSD、OSX 和其他 Unices)是 GNU 工具的主要用户,但并非所有 Linux 系统都使用这些工具; Busybox 提供了一套用于 Linux 的备用工具。
壳
shell 提供了允许用户使用用户空间工具的环境。示例 shell 包括 bash、ksn、zsh 和 Fish。它们通常提供提示,用户可以在提示中输入启动用户空间工具的命令。
窗口管理器
这是一个更高的层,通常存在一个显示服务器,它负责管理图形、音频和I/O资源,并为更高级别的工具提供接口。通常,显示管理器是显示服务器之上的层,可以提供用户登录管理和会话管理等功能。其上方通常是窗口管理器。窗口管理器提供了应用程序可以呈现其内容的区域,它还允许用户通过移动、调整大小和重新排序来与这些区域进行交互。
答案2
如果您使用“bash”作为 shell,那么它就是一个 GNU 实用程序。您系统上的“coreutils”软件包包含 GNU 软件,例如mv
、ls
、rm
等。
内核不是您直接交互的东西,而是通过系统上的其他软件交互的。概括地说,内核为软件提供了一种与系统上的硬件交互的方法,通过读取按键和鼠标移动、在磁盘上读取和写入数据以及从软件调度和执行计算来实现。在您的计算机上运行。有很多细节我忽略/掩盖了,您可能会从阅读中受益内核维基百科页面。
您的窗口管理器很可能不是 GNU 软件,而是来自其他软件项目(Gnome、KDE、XFCE 等)。然而,它们都依赖于 GNU 软件来运行,例如使用 GNU C 库 (glibc) 和 GNU 编译器集合 (gcc)。此外,您系统上的大部分软件均已获得 GNU 通用公共许可证 (GPL) 许可,因此您可以从 GNU 许可证中受益。