Linux内核结构粗解及关于 shell 通俗理解

一、内核结构框图

在这里插入图片描述

二、结构框图解释

1.用户态

       用户态就是经常说的上层环境,它是我们所在的开发环境,一般就在用户空间里写程序,程序所调用的C库也在用户态中。用户态不会直接和内核态交互,需要通过系统调用接口来转接数据和指令。

2.内核态

       整个Linux系统中,最复杂的就是内核态,因为它要和用户交互,也要操作底层硬件。

(1)系统通用接口:

       系统通用接口其实就是我们在Linux文件系统初识中提到的 VFS(虚拟文件系统),它负责把用户程序中的一些指令和数据进行处理之后,再下发(说调用也可以)给文件子系统进程控制子系统。至于为啥需要VFS来调用,之前就说的很明白了,因为文件子系统拥有好几种不同的文件系统,用户程序不能直接调用其他文件系统的文件。

(2)文件子系统:

       用户程序需要比较麻烦的操作才能访问文件内核中的文件子系统 ,因为文件子系统中拥有好几种文件系统(exit4,,vfat,tmpfs),每种文件系统存储文件的格式都不一样。且文件系统也不能直接操作硬件,因为硬件层也需要特定的文件去访问。

(3)进程控制子系统:

       对进程进行编程的时候,就是进程控制子系统在工作,一些进程间的通信的方式,进程的调度,都在进程控制子系统来完成,它会根据用户操作的文件去控制CPU去完成相应的控制。当然它也需要一个叫操作控制的子系统去操作硬件CPU;

(4)设备驱动:

       字符设备、块设备等,都会以文件的形式存在于文件系统当中,以后编译驱动的时候,也需要把驱动文件放到这些设备的所在目录当中。

(5)操作控制:

       操作硬件必须要经过的一个流程,操作控制会把内核态中对CPU,外设,物理内存等指令,处理之后,才去操作硬件,比如通知CPU执行某个动作,让IO口输入高电平等。

3.硬件层

       硬件层,指的是CPU芯片内部的资源,并不是我们能看到的电路板。CPU中的核心,以及外设,都是硬件。

三、举例解释

       我们学过用 wiringPi 库去操作IO口,可以实现很简单的实现IO口的输入输出,也可以使用串口。其实wiringPi 的IO口操作在内核中的流程是很复杂的:
在这里插入图片描述
一个简单的digitalWrite函数,就要对应内核的这些操作,可见Linux这是个多么高档是的东西。

四、关于shell 的通俗理解

       关于shell的官方解释是这样的:shell是系统给用户界面提供了用户与内核进行交互操作的一种接口。通俗的说:它接收用户输入的命令,并把该命令送入内核去执行的一个命令解释器,我们在终端输入命令后,回车键会启动一个 shell去解析刚刚输入的命令。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值