【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )
文章目录
- 一、操作系统需要满足的要素
- 二、宏内核
- 三、微内核
- 四、Linux 内核动态加载机制
一、操作系统需要满足的要素
电脑上运行的 操作系统 , 是一个 软件 ;
设备管理 : 操作系统需要 为 用户 和 应用程序 管理并分配电脑的 硬件资源 , 如 CPU , 磁盘 , 内存 , 网络 等 ;
开发环境 : 操作系统 要为 应用程序 开发 提供配套环境 ;
执行环境 : 操作系统 要为 应用程序 执行 提供配套环境 ;
虚拟性支持 : 支持多进程 , 每个运行的应用程序进程 , 都可以感觉到有专门的处理器提供系统服务 ;
并发性支持 : 操作系统需要有 执行多个线程的能力 , 线程是独立运行 , 独立调度的最基本单位 ;
二、宏内核
宏内核 :
内核代码 编译成 二进制文件 ,
内核 运行在 一个 大内核 地址空间 中 ,
可以 直接 访问 , 调用 内核代码 ,
这种内核优点是 效率高 , 性能强 ;
下图中 , 最上层是 " 系统调用 " , 中间是 " 宏内核 " , 最下方是 硬件层 ;
宏内核优点 : 设计简单 , 性能高 ;
三、微内核
微内核 :
将 操作系统 拆分成 多个 独立功能模块 ,
这些 独立功能模块 之间通过 " 消息 " 进行通信 ,
微内核 效率低 ;
下图中 , 进程 , 文件系统 , 设备驱动 , 与 微内核 中的 通信模块 , 进程调度模块 , 内存管理模块 , 通过 消息 进行通信 ,
微内核优点 : 稳定性好 , 实时性好 ;
微内核缺点 : 高度模块化 , 模块之间只能通过消息传递信息 , 效率低 ;
四、Linux 内核动态加载机制
Linux 内核模块动态加载 :
Linux 内核 使用了 模块设计 , 可以进行 动态加载 内核模块 ;
Linux 内核的 核心实现 , 设备驱动实现 ,
可以 编译成一个独立模块 ,
这些独立模块可以被编译成 独立的目标文件 ,
可以在运行时 , 动态 加载 / 卸载 内核模块 ;
开发简单 : Linux 内核模块引入 , 带来了很多便利 ,
很多内核驱动 , 都可以 编译成动态 加载 / 卸载 的模块 ,
驱动开发时 , 必须 遵守规定的接口 , 来访问内核 ,
这样 开发内核模块 , 变得 更加容易 , 方便 ;
与平台无关 : 内核模块 可以 设计成 与 平台无关的 模块 , 如 : 文件系统 ;
【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )相关推荐
- 交大大佬新作上市!微内核架构操作系统ChCore全新升级
大家好!我是韩老师. 相信不少粉丝应该知道,我毕业于上海交通大学软件学院. 最近,上海交通大学软件学院的两位大佬陈海波和夏虞斌教授出新书啦!作为交大学子,必须支持一波! <操作系统:原理与实现& ...
- 服务器和微内核系统哪个好,分析微内核架构操作系统优缺点
<分析微内核架构操作系统优缺点>由会员分享,可在线阅读,更多相关<分析微内核架构操作系统优缺点(2页珍藏版)>请在人人文库网上搜索. 1.分析微内核架构操作系统优缺点一 优点: ...
- Linux 2.6内核的编译步骤及模块的动态加载
本文是基于2.6的内核,也建议各位可以先看一下<Linux内核设计与实现(第二版)>作为一个基础知识的铺垫.当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块 ...
- linux内核采取,采用动态加载模块的方式Linux内核编译
Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活方便.那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入手.以下是一个简单的hello内核模块的Makefi ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块...
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- [driver]linux内核动态加载模块
问题: 1. 把编译好的模块放到板子/lib/modules对应文件夹下,并且执行了depmod -a, 比如pl2303.ko, 那么下一次插入pl2303的串口线,是否可以识别,也就是自动加载pl ...
- Linux下的静态库、动态库和动态加载库
from: http://www.techug.com/linux-static-lib-dynamic-lib 库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从L ...
- java类加载器 架构 设计_类加载器(DexClassLoader)与插件化(动态加载)
类加载器与插件化解析 2.1 类装载器 DexClassLoader 首先,我们需要了解关于java代码本地import的一些知识: import中所引用的类有两个特点: 1.必须存在于本地,当程序运 ...
- CTFHub Linux 动态加载
CTFHub Linux 动态加载 观察页面,写着没有 x权限,说明我们没有办法执行根目录下的 elf 文件 readflag,所以我们无法利用下方的 webshell 获取flag(我们的权限不够) ...
最新文章
- python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...
- 设置USB无线网卡为监听模式大学霸IT达人
- SpringCloud接入EDAS——服务发现篇
- DDD理论学习系列(10)-- 聚合
- ruby,rails环境架设配置 转载一文章.
- 不再以讹传讹,GET和POST的真正区别
- c语言中for语句的作用是,c语言中for语句是怎么用的
- 【perl】LWP module
- WP7备注(11)(页面跳转)
- 从精度看CPU线程:实验室与量产的差距
- 达梦 DCA 培训总结
- 人工智能学习路线,文末赠书活动(深度学习Spark机器学习)
- 复习————吃饭睡觉打豆豆
- 数据分析师,你是车夫,还是拉车的驴子
- 关于男女交往的换位思考
- 还爱着你心中曾经那朵红玫瑰吗?
- 高频交易(二)浅谈高频交易中比较成熟的一些交易策略
- 阿里巴巴国际站产品标题的组合和优化方法一览
- IDEA最强美化插件:Material Theme UI和Atom Material Icons
- Halcon API