linux的体系结构
如图所示: linux体系结构主要分为用户态(用户上层活动)
和内核态
,当然还有其他的哈,就是图片中的那些.
下面就图片中的各个部分进行讲解
内核: linux启动的时候,首先会启动内核,其本质是一段计算机程序,这个程序直接管理计算机硬件设备的程序,包括CPU,内存,硬盘接口,网络接口等.
所有的计算机操作,都要通过内核传递给硬件
用户态: 即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源(比如CPU,IO等).
系统调用: 为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口,即系统调用,这是一种不能再简化的操作,类似于原子操作.
一个操作系统的功能,可以看作是系统调用的主核的效果,而且一个操作系统不可能做出超越系统调用的动作 ,比如说,给某个变量分配内存空间,就必须要调用很多的系统调用.
由于系统调用非常基础,所以使用起来很麻烦,比如给某个变量分配空间就会有很多操作,程序员就不用活了,此时,就产生了公共函数库
公共函数库: 系统调用的组合拳,将程序员从复杂的细节中解脱出来,它实现了对系统调用的封装
,将简单的业务逻辑接口呈现给用户,方便用户调用,极大地增强了程序设计的灵活性.
对于简单的操作,我们可以直接调用系统调用来访问资源,对于复杂的操作,我们通过公共库函数来实现.
Shell
它就是一个特殊的应用程序,本质上是一个命令解释器(类似于cmd的命令行窗口),它下通系统调用,上通各种应用,通常充当着一种胶水的角色来连接各个小功能程序,在没有图形界面之前,shell充当着用户界面,当用户要执行某些操作的时候,通过shell输入命令进行操作.
**它是可编程的,**它可以执行符合shell语法的文本(shell脚本
),通常几行shell脚本语句就可以实现很强大的功能,因为shell语句一般都对系统调用做了一层封装,