长沙商城网站,苏州建设网站电话,天门市住房和城乡建设网站,国内域名备案https://www.cnblogs.com/bakari/p/5520860.html
一、 Unix/Linux的体系架构 如上图所示#xff0c;从宏观上来看#xff0c;Linux操作系统的体系架构分为用户态和内核态#xff08;或者用户空间和内核#xff09;。内核从本质上看是一种软件——控制计算机的硬件资源从宏观上来看Linux操作系统的体系架构分为用户态和内核态或者用户空间和内核。内核从本质上看是一种软件——控制计算机的硬件资源并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间应用程序的执行必须依托于内核提供的资源包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源内核必须为上层应用提供访问的接口即系统调用。 系统调用是操作系统的最小功能单位这些系统调用根据不同的应用场景可以进行扩展和裁剪现在各种版本的Unix实现都提供了不同数量的系统调用如Linux的不同版本提供了240-260个系统调用FreeBSD大约提供了320个referenceUNIX环境高级编程。我们可以把系统调用看成是一种不能再化简的操作类似于原子操作但是不同概念有人把它比作一个汉字的一个“笔画”而一个“汉字”就代表一个上层应用我觉得这个比喻非常贴切。因此有时候如果要实现一个完整的汉字给某个变量分配内存空间就必须调用很多的系统调用。如果从实现者程序员的角度来看这势必会加重程序员的负担良好的程序设计方法是重视上层的业务逻辑操作而尽可能避免底层复杂的实现细节。库函数正是为了将程序员从复杂的细节中解脱出来而提出的一种有效方法。它实现对系统调用的封装将简单的业务逻辑接口呈现给用户方便用户调用从这个角度上看库函数就像是组成汉字的“偏旁”。这样的一种组成方式极大增强了程序设计的灵活性对于简单的操作我们可以直接调用系统调用来访问资源如“人”对于复杂操作我们借助于库函数来实现如“仁”。显然这样的库函数依据不同的标准也可以有不同的实现版本如ISO C 标准库POSIX标准库等。 Shell是一个特殊的应用程序俗称命令行本质上是一个命令解释器它下通系统调用上通各种应用通常充当着一种“胶水”的角色来连接各个小功能程序让不同程序能够以一个清晰的接口协同工作从而增强各个程序的功能。同时Shell是可编程的它可以执行符合Shell语法的文本这样的文本称为Shell脚本通常短短的几行Shell脚本就可以实现一个非常大的功能原因就是这些Shell语句通常都对系统调用做了一层封装。为了方便用户和系统交互一般一个Shell对应一个终端终端是一个硬件设备呈现给用户的是一个图形化窗口。我们可以通过这个窗口输入或者输出文本。这个文本直接传递给shell进行分析解释然后执行。