博客
关于我
Linux内核结构粗解及关于 shell 通俗理解
阅读量:377 次
发布时间:2019-03-05

本文共 1019 字,大约阅读时间需要 3 分钟。

一、内核结构框图

在学习Linux内核结构时,我们需要先理解其高层次的架构。内核的核心设计决定了系统的性能和稳定性。从高到低的结构框图可以分为以下几个部分:

1. 用户态

用户态是程序开发者的天地。这里的程序运行在用户空间,调用的都是普通的C库函数。用户态与内核态的交互需要通过系统调用接口完成。这种设计保证了用户程序的安全性和内核的稳定性。

2. 内核态

内核态是内核的核心部分。它负责处理与硬件交互的任务,管理系统资源,还要与用户态进行数据交换和指令传递。在内核态中,VFS(虚拟文件系统)起到了关键作用。

3. 系统通用接口

VFS作为系统通用接口,接收用户态的操作请求,然后根据具体需求调用相应的文件子系统或进程控制子系统。例如,读写文件操作需要VFS来统一处理。

4. 文件子系统

文件子系统负责管理文件的存储和访问。由于支持多种文件系统(如ext4、vfat、tmpfs等),文件子系统需要具备高度的灵活性和兼容性。每种文件系统都有不同的存储方式,且需要通过VFS进行操作。

5. 进程控制子系统

进程控制子系统负责管理进程的执行和调度。它处理进程间的通信和资源分配,还需要通过操作控制子系统来操作硬件。

6. 设备驱动

设备驱动层负责管理硬件设备。无论是字符设备还是块设备,都需要编写相应的驱动程序,并将其注册到文件系统中。

7. 操作控制

操作控制子系统是硬件操作的门户。这一层负责将内核态的指令转化为具体的硬件操作,例如通知CPU执行某个动作或控制IO口的输入输出。

二、结构框图解释

1. 用户态

用户态是程序运行的上层环境,开发者在这里编写代码,调用的都是用户态的C库函数。由于用户态与内核态的交互需要通过系统调用接口,避免了直接访问底层硬件的风险。

2. 内核态

内核态是系统的核心部分,负责处理复杂的任务。内核态需要同时与用户态交互和管理硬件资源,因此设计非常复杂。

三、举例说明

wiringPi库为例,其简单的IO操作背后涉及复杂的内核机制。从用户态发出的digitalWrite函数,需要经过用户态→VFS→文件子系统→设备驱动→操作控制子系统,最终控制硬件完成操作。这个过程展示了Linux内核的高效性和复杂性。

四、关于Shell的通俗理解

Shell是用户与内核交互的接口。它接收用户输入的命令并解析,通过命令解释器执行命令。例如,在终端输入命令后,Shell会启动并解析命令,完成相应的系统操作。

转载地址:http://ntlwz.baihongyu.com/

你可能感兴趣的文章
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
查看>>
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
查看>>
Java8新特性——并行流与顺序流
查看>>
C语言的数值溢出问题(上)
查看>>
BottomNavigationView控件item多于3个时文字不显示
查看>>
函数指针的典型应用-计算函数的定积分(矩形法思想)
查看>>
8051单片机(STC89C52)八个LED灯闪烁
查看>>
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
查看>>
用 wxPython 打印你的 App
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>
Linux下安装MySql过程
查看>>
原生vue实现VantUI中IndexBar索引导航栏功能
查看>>
android:使用audiotrack 类播放wav文件
查看>>
vue通过better-scroll 封装自定义的下拉刷新组件
查看>>
android解决:使用多线程和Handler同步更新UI
查看>>
vue自定义封装Loading组件
查看>>
解决移动端项目中苹果ios和安卓android手机点击输入框网页页面自动放大缩小
查看>>
Element UI 中动态路由的分析及实现
查看>>
使用springMVC配置视图管理器后找不到指定的页面
查看>>
关于js中对于Promise的深入理解
查看>>