Linux

我们常说的Linux,其实是基于Linux内核开发的操作系统,也就是那么多Linux版本的核心都是一种Linux内核,只不过外壳不一样,内核管理文件、管理硬件、管理应用程序、管理内存等。我们知道对于一个进程来说有用户态和系统态。对于unix和linux这样的体系来说,分为用户态和内核态,也就是说CPU的某些指令操作不当就会导致系统崩溃,那么这些指令就划分为内核态(特权级),只能被内核相关模块调用。而其他的指令可以被用户调用。

指令就相当于方法,可以被操作系统内核与外壳调用。外壳也是依托于内核的。

我们的应用程序是依托于内核的,也就是说内核相当于一个赤身裸体的人,外壳相当于衣服,应用程序相当于米饭,我们需要的是这个人。

可以把外壳和应用程序当作平行地位,但是它们的本质不是一样的,外壳属于操作系统,而应用程序属于其他软件。

为什么说依托呢,因为内核管理着计算机上所有的硬件资源和软件资源。

如何依托呢,内核会提供对外的接口,我们的应用程序会通过系统调用来调用内核完成操作。例如jvm就实现了Java程序和不同操作系统内核的系统调用。

又例如当程序抛出异常时,应用程序处理不了,进程就会切换到内核相关模块来处理。

 

在Linux中,所有东西包括打印机、键盘、光驱等等·都看作文件,通过对文件的读写来操作设备,每个文件存储在一些块里,每个块由约八个扇区组成(每个扇区约0.5kb即512位),每个文件还要一个磁盘区域用来存储inode(索引节点),及存储文件元信息的。

Linux支持的文件类型有普通文件、目录文件、socket套接字文件、管道文件、设备文件等,

 

总结,应用程序最终也是由jvm产生相应的指令(具体是依靠API,API相当于用户和程序之间的桥梁,借助于API,我们的程序有了生命力,API的一些底层native方法就帮助我们得到了指令)直接执行(直接调用内核中的某些模块),shell壳层也是如此。这种直接的指令叫做用户态。

但是一些危险的指令不会直接暴露给用户,会通过系统调用的方式也就是一组对外的接口供访问(类似于Java里的封装),shell里的某些指令也是如此。这些指令就是内核态。

 

posted @ 2020-06-29 00:03  千与千寻_如是  阅读(79)  评论(0编辑  收藏  举报
价值决定认知,认知决定价值观