
基于下图,我解释了Linux的体系结构(体系结构). (图片指的是“ Unix环境中的高级编程”)

最内层是硬件,最外层是用户常用的应用程序linux操作系统结构,例如firefox浏览器,查看电子邮件的演变,计算流体模型等. 硬件是物质基础,应用程序提供服务. 但是在这两者之间,会有一些挫折.
记住Linux启动. Linux首先启动内核. 内核是一个计算机程序,可以直接管理和管理硬件,包括CPU,内存空间linux操作系统结构,硬盘接口,网络接口等. 所有计算机操作都通过内核传递给硬件.
为了方便调用内核,Linux将内核的函数接口转换为系统调用. 系统调用看起来像C语言函数. 您可以直接在程序中调用它. Linux系统有200多个这样的系统调用. 用户无需了解内核的复杂结构即可使用内核. 系统调用是操作系统的最小功能单元. 操作系统以及基于该操作系统的应用程序无法实现系统调用以外的功能. 系统调用功能就像汉字笔画一样. 任何汉字都必须由基本笔划(点,水平,撇号等)组成. 我不会中风.

在命令行中输入$ man 2 syscalls以查看所有系统调用. 您还可以使用$ man 2 read来查看系统调用read()的描述. 这两个命令中的2表示我们要查询2种类型(系统调用类)(具体类型可以通过$ man man看到).
系统调用提供的功能非常基础,因此使用起来非常麻烦. 一个为变量分配内存空间的简单操作需要多个系统调用. Linux定义了一些库函数(库例程)以将系统调用组合成一些常用函数. 以上分配内存的操作可以定义为库函数(类似于malloc()的函数). 再举一个例子,当读取文件时,系统调用要求我们设置所需的缓冲区. 我可以使用标准IO库中的读取功能. 该读取功能负责设置缓冲区和使用读取系统调用功能. 使用库函数在机器效率上没有优势,但是可以节省程序员的细节. 库功能就像汉字的部首. 它由笔划组成,但是更容易形成带有部首的字符,例如“铁”. 当然,您也可以不使用库函数而直接调用系统函数,就像“ people”一词一样,而无需使用部首.
(实际上,如果可以将操作系统称为UNIX系统,则它必须具有某些库功能,例如ISO C标准库,POSIX标准等)
shell是一个特殊的应用程序. 许多用户将其称为命令行. 该外壳是一个命令解释器(解释器),当我们输入“ ls -l”时,它将解释该字符串为
1. 在默认路径中找到文件(/ bin / ls)

2. 使用参数“ -l”执行文件.
我使用>指示重定向,并且|表示管道,并解释&或|的含义通过壳. 然后,Shell使用命令内核通过系统调整来实现特定的重定向或通道. 在没有图形界面之前,shell充当了用户界面. 当用户想要运行某些应用程序时,他通过外壳输入命令来运行程序. 该外壳是可编程的,并且可以执行符合外壳语法的文本. 这样的文本称为外壳脚本(脚本). 正如您在体系中看到的那样,shell调用系统调用,各种应用程序以及许多其自身的小工具可用. Shell脚本可以在几行中实现复杂的功能.
UNIX的一种哲学是让每个程序尽可能独立地执行一个小的功能. 该外壳充当这些小功能之间的“胶水”,使不同的程序可以与清晰的界面(文本流)一起工作,从而增强了每个程序的功能. 这就是Linux资深人士鼓励新手使用更多Shell和更少图形界面的原因之一.
(shell种类很多,最常见的是bash,此外还有sh,csh,tcsh,ksh. 它们出现在不同的年份,支持的功能也不同. )


使用bash shell的终端
一个外壳对应一个终端(终端). 过去,终端是用于输入和显示输出的硬件设备. 如今,由于图形界面的普及,该终端通常是一个图形窗口,就像上面的图片一样. 您可以通过此窗口输入或输出文本. 该文本直接传递到外壳程序进行分析和解释,然后执行.
最后,我们进入常规应用程序. 应用程序是一个程序,它可以
1. 直接调用系统功能
2. 调用库功能

3. 运行shell脚本
这些应用程序可以用多种语言开发. 最常见的是C语言.
摘要
Linux使用内核在软件和硬件之间实现对话.
Linux通过系统调用接口将上层应用程序与下层内核分离,隐藏了下层的复杂性,并提高了上层应用程序的可移植性.
库函数使用系统调用来创建模块化函数,
Shell提供了一个用户界面,并允许我们使用Shell语法编写脚本来集成程序.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-187696-1.html
王健林说得还是比较现实
有高有低