答案1
像这样的图表,没有上下文或术语定义,总是可以有多种解释,而且您不能总是将一个标签换成另一个标签。
通常,一切都是非内核级是用户级别。所以,用户区图中确实包含了所有顶层。例如,Python 解释器是一个用户级进程,gcc
shellls
也是如此。
这是另一个不同的图表,其中黑线以上的所有内容都是“用户级别”。 Linux 容器引擎也将是一个用户级应用程序。
您可能会将在 Python 解释器内运行的代码视为“应用程序”,并将任何 Python 库视为“库”。
在上图中,“库”和“应用程序”之间的唯一区别在于“库”是一组供其他应用程序或库使用的资源或实用程序,而“应用程序”则意味着直接被用户使用,也可能是诸如sshd
.
这是一个广泛的区别,意味着如果您cp
在命令行上键入,则将用作cp
应用程序,但如果您编写使用 复制文件的脚本cp
,则将用作cp
“库”(标准 Unix shell 实用工具箱)中的实用程序。
在您的图中(其中一个方框最初表示“操作系统/内核”),由于我们不知道“操作系统”的含义,因此诸如此类的守护进程sshd
可能被视为“操作系统”的一部分,因此不在“用户区”。只要视角是交互式用户的视角(不进行交互)就可以了直接地与sshd
或类似的守护进程)。在我看来,“操作系统”有点难以定义,并且可能涵盖核心和系统接口以及可能两者的一部分图书馆和应用在我的图表中,取决于你在哪里划定边界。