下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Linux学习|系统架构的学习

作者:课课家教育     来源: http://www.kokojia.com点击数:704发布时间: 2016-11-14 16:00:47

标签: Linux系统Linux架构Linux学习

  学习一个系统必须是要对这个系统有一定的深刻的了解清楚,掌握好系统中的架构显示,了解清楚逻辑思路,才可以进一步的有效率的学习下去,系统的学习,不仅仅是如何操作,更重要的是掌握好更高级一点的系统概念,本文将为大家讲解的是Linux系统中的架构,包括内核、shell脚本、硬件、库函数的学习,刚学习的朋友们可以来了解一下。

  我们看到下图中的一个结构图所显示:表示的是Linux系统的一个架构

  我们在图中看到最内层的是硬件,看到最外层的是用户常用的应用,例如firefox浏览器,evolution查看邮件,一个计算流体模型等等。系统的硬件是物质基础,而应用简单来说就是提供服务,但是在这个两者之间还是需要一定的周折才可以。

Linux学习|系统架构的学习_Linux系统_Linux架构_Linux学习_课课家

  在Linux的启动过程中,Linux它首先启动内核(kernel),所谓的内核它是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。可能你不知道,现在所有的计算机操作它都要通过内核传递给硬件。

  为了方便调用内核,Linux将内核的功能接口制作成系统调用(systemcall)。系统调用看起来就像C语言的函数。用户也是可以在程序中直接调用。需要了解清楚的是Linux系统有两百多个这样的系统调用。

  作为一个普通的系统用户来说,你并不需要去了解内核的复杂结构,也可以是去使用内核。系统的调用是操作系统的最小功能单位。一个操作系统,以及基于操作系统的应用,都不可能实现超越系统调用的功能。实际上一个系统调用函数就像是汉字的一个笔画。任何一个汉字都要由基本的笔画(点、横、撇等等)构成,这也就对用户有一定的规划限制。

  在Linux中的命令行中输入$man2syscalls你就可以去查看所有的系统调用。你也可以通过$man2read来查看系统调用read()的说明。在这两个命令中的2这些都是表示我们要在2类(系统调用类)中查询(具体各个类是什么,我们是可以通过$manman看到)。

系统查询图

  在系统中的调用提供的功能是非常的基础,因此它使用起来很麻烦。一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。Linux它是定义了一些库函数(libraryroutine)来将系统调用组合成某些常用的功能。上面的分配内存的操作,可以定义成一个库函数(像malloc()这样的函数)。比如在读取文件的时候,系统调用要求我们设置好所需要的缓冲。

  用户也是可以使用StandardIO库中的读取函数。这个读取函数既负责设置缓冲,又是负责使用读取的系统调用函数。使用库函数对机器来说,它是没有太大的一个效率,但是可以把程序员从细节中解救出来。

  所谓的库函数就像是汉字的偏旁部首,它由笔画组成,但使用偏旁部首更容易组成字,比如"铁"。在实际上用户也是可以不去使用库函数,而是直接调用系统函数,就像“人”字一样,它并不用偏旁部首也就可以使用。

  (其实在实际上,一个操作系统要称得上是UNIX系统,它必须要拥有一些库函数,比如ISOC标准库,POSIX标准等基本的库函数)

  在前面的文章中我们就向大家说明了shell它是一个特殊的应用。很多Linux的用户都将它称为命令行。shell它也是一个命令解释器(interpreter),当我们输入“ls-l”的时候,它将此字符串解释为:

  1.在默认路径找到该文件(/bin/ls),

  2.执行该文件,并附带参数"-l"。

  若果是用>来去表示重新定向的话,用|来去表示管道,也是通过shell解释&或者|的含义。Shell接着通过系统调,用来去指挥内核,实现具体的重定向或者管道。在之前没有基本的图形界面之前,shell它是充当了用户的一个界面,当用户是要去运行某些应用时,他是可以通过shell输入命令,这样来去来运行程序。

  熟悉shell的朋友都知道,shell它是可编程的,它可以执行符合shell语法的文本。这样的文本我们称之为shell脚本(script)。我们在架构图中看到,shell它是可以下通系统调用,上通各种应用,同时的话还有许多自身的小工具,它也是可以去使用。那么Shell脚本它也是可以在寥寥数行中,实现复杂的一些功能。

  我们可以理解为UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell它是充当了这些小功能之间的"胶水",让不同程序能够以一个清晰的接口(文本流)来去协同工作,从而增强各个程序的功能。这也是Linux的老用户经常鼓励新手多用shell,而少去用图形化的原因之一。

  (在前面的文章中我们知道shell它也是有很多种,最常见的是bash,另外还有sh,csh,tcsh,ksh,它们出现的年代不同,因此它的功能也是不同的,这一点我们是可以理解的)

  可以说一个shell对应一个终端(terminal)。在之前的理解我们知道终端是一个硬件设备,用来输入并显示输出。现在随着图形化界面的普及,终端它往往就是像上图一样,它是一个图形化的窗口。用户是可以通过这个窗口输入或者输出文本。这个文本直接传递给shell进行分析解释,最后是执行操作。

  在最后面我们进入一般的应用。应用是一个程序,它是可以:

  1.直接调用系统函数

  2.也可以是调用库函数

  3.并且是运行shell的脚本

  看到的这些应用,它是可以由多种语言开发,那么它最常见的就是使用C语言来进行开发。

  小结:通过对本文的一个简单的理解,相信你也是可以了解清楚一个Linux系统它所包含那些基本的架构,以及这些架构它们之间的关系是怎样的,合理的使用shell脚本这对你的操作学习将会有更大的一个帮助。

赞(21)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程