浅谈linux内核(kernel)结构与模式

本文探讨Linux内核结构,包括用户应用程序、系统库、内核与硬件之间的关系。内核分为与结构无关和有关部分,系统库作为接口降低系统运行效率但提高安全性。文章引入EIT模式,解释了开发者如何通过系统库控制内核,明确了各角色在生态系统中的地位。分析了结构优化的可能性及其对效率和安全的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近突然有一个感悟:“心里想的一些idea,用博客把它写出来,发现难度很大,有时候写出来发现意思完全变了”。中国有句古话“看一遍不如读一遍,读一遍不如写一遍 ”。我想写博客有很大一部分原因是源于此吧,进入主题。

我们所有的操作系统中有一个重要的成员——linux。然而从某种层面上来说linux操作系统是指以kernel内核为核心的控制系统。给出一幅kernel结构图:

Linux内核kernel结构图

从图中能清楚的获取kernel的组成部分。

开发者部分:

最上一部分是用户使用的运用程序,

下面的系统库是开发者在开发运用程序的过程中,kernel内核提供给开发者调用的系统部件。

内核部分:

内核与结构无关部分:是系统运行过程中,对用户运用程序进行调度、管理的模块。

内核与结构有关部分:是系统运行过程中,为在硬件上实现程序的调度、管理而根据不同的硬件所定制开发的模块。

硬件部分:为实现软件功能的硬件。

整个图介绍得差不多了,接下来谈谈为什么会采用这样一个结构。从图来看,可以把它看做由用户运用程序、内核,硬件三部分组成。这样的结构很合理,因为他们拥有不同的功能。那么为什么还要把系统库单独提出来放在内核和用户运用程序之间呢?这样做一是降低了系统的运行效率,二是对内核部分进行了一个解耦。这样做需要从几个方面进行分析。

一:开发者不是对内核的每一部分都进行调用,把开发者最常调用的部分打包抽象出来成为一个新的系统库更便于管理。

二:内核部分是系统最核心的部分,那么安全性就面临而来。要改善安全性,防范外界的侵入,把系统库抽象出去作为一个接口是一个很好的方案。

问题:能不能把内核与结构无关部分再进行一次抽象,这样做对系统的运行效率有什么影响,对系统的安全和易用带来哪些改善,综合考虑哪一种方案更可行?

结构部分就说这么多,接下来说说控制部分。回想起一年前看了高焕堂老师的《EIT秘诀》虽然很用力的看但还是一知半解,现在算是有些头绪了。开发者开发运用程序,系统提供给开发者的工具是系统库。开发者通过对系统的的组合构造出一个新的运用程序,系统库受控于开发者,开发者处于主动的位置,系统库处于被动的位置。而程序运行的过程中,被开发者通过其调用的系统库对内核发出控制指令。当指令发出后,内核对指令进行捕获,捕获指令并作出相应的行动。指令对内核进行请求。运用程序处于被动位置,内核处于主导位置。这就是高焕堂老师所说的E(引擎)I(接口)T(实现)模式。通过这么一分析就很容易弄清楚系统开发者和运用程序开发者和用户在整个生态链中所扮演的角色了。

总结一下:本文主要从两个方面来分析kernel内核的结构,一方面从系统效率、安全方面来分析,另外一方面从运用程序开发者和系统开发者两者在整个生态中的主从位置的角度来分析。就写这么多,大脑内存快满了。   (20130407




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值