linux是微内核还是宏内核,微内核与宏内核比较
微内核与宏内核比较
内核体系结构---微内核与宏内核比较
内核按照体系结构分为两类:微内核(microkernel)与宏内核(macrokernel). 微内核的系统有
WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,etc.通过比较Minix和Linux来比较微内核和宏内
核是很有意思的,因为当年两个系统的创始人对两种内核的优劣有过争论.
两个系统的内核是通过进程的创建FORK的实现来比较,因为进程的创建涉及到系统调用,内存管理,文件管
理等系统的主要方面.因此通过比较FORK的实现可以大致看到内核的差别.
微内核的代表:Minix
在Minix中,操作系统的内核,内存管理,系统管理都有自己的进程表,每个部分的表包含了自
己需要的域。表象是精确对应的,为了保持同步,在进程创建或结束时,这三个部分都要更新各自的表。
由内存管理器协调。
系统启动后,kernel,mm,fs系统进程在各自的空间运行main()函数循环等待消息
While(TRUE)
{…
receive(ANY,&mm_in);
…}
当一个FORK传给mm’main(),main()调用do_fork(),do_fork()函数把父进程的data segment和stack
segment创造了一个精确副本给子进程,并把父进程的text segment 与子进程共享,然后在mm的进程表
mproc[]中添加新进程,并设置各属性。添加完后发送消息给kernel(sys_fork(…))和 fs(tell_fs
(…)).,kernel中的函数sys_task()接收到系统信息,调用do_fork(message * m_ptr),copy parent’
proc struct to child.并设置进程在内核进程表中的属性。tell_fs()是内存管理器与文件系统之间的接
口,tell_fs(…)调用 _taskcall(…),文件管理器接收到FORK系统消息,调用do_fork()函数,copy
parent’fproc struct to child.并设置进程在文件进程表中的属性。这样整个进程的属性就设置完成.
在Minix创建新进程的过程中,可以看到一个很大特点,就是整个系统按功能分成几个部分,各模块
之间利用消息机制通信,调用其他模块的函数必须通过目标模块的守护进程调用.
宏内核的代表:Linux
在Linux中,进程的结构如下:
Struct task_struct{
pid_t pid;
pid_t pgrp;
…
/* filesystem information */
struct fs_struct *fs;
/* memory management info*/
struct mm_struct *mm;
…
};
在Linux进程的结构定义中,task_struct包含了所有的信息,包括进程的内存情况,文件系统情况。在创
建新进程时,系统调用sys_fork调用do_fork(…)函数.
int do_fork(unsigned long clong_flags,… )
{
struct task_struct *p;
p->pid = get_pid(clone_flags);
…
/* copy all the process information*/
copy_files(clone_flags,p);
copy_fs(clone_flags,p);
copy_mm(nr,clone_flags,p);
…
}
在创建进程时,do_fork函数把所有的工作完成,分配pid…号,拷贝父进程数据段,堆栈段,等等。
Linux的进程创建过程是一个完整的过程,直接调用其他模块的函数,而不是消息传递。
Minix与Linux创建新进程的过程比较可以看出二者之间的区别,Minix是建立在分模块之上的,
模块之间以信息传递联系。Linux内部也是分模块的,但在运行的时候,他是一个独立的二进制大映像,
其模块间的通讯是通过直接调用其他模块中的函数实现的。宏内核与微内核的区别也就在这吧,微内核是
一个信息中转站,自身完成很少功能,主要是传递一个模块对另一个模块的功能请求,而宏内核则是一个
大主管,把内存管理,文件管理等等一股脑全部接管。
从理论上来看,微内核的思想更好些,微内核把系统分为各个小的功能块,降低了设计难度,系
统的维护与修改也容易,但通信带来的效率损失是个问题。宏内核的功能块之间的耦合度太高造成修改与
维护的代价太高,不过在目前的Linux里面还不算大问题,因为Linux目前还不算太复杂,宏内核因为是直
接调用,所以效率是比较高的。
参考书目:
1)Andrew S.tanenbaum 电子工业出版社1998 Operating Systems:Design and Implementation
2) Scott Maxwell 机械工业出版社 2000 Linux Core Kernel Commentary
阅读(2667) | 评论(0) | 转发(0) |
linux是微内核还是宏内核,微内核与宏内核比较相关推荐
- linux是微内核还是宏内核,对比平台--宏内核与微内核
内核是在硬件和操作系统之间形成一层的软件,它分为两种主要类型,即,宏内核和MicroKernel,这些类型主要是根据它们对进程的管理方式来区分的,它们在以下方面也有所不同:执行样式,大小,速度,稳定性 ...
- 鸿蒙使用linux内核微内核,浅谈鸿蒙操作系统的微内核
描述 华为在松山湖的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 -- 微内核.华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可 ...
- linux虚拟中断virq,一种微内核操作系统的分区多核方法与流程
本发明涉及一种计算机领域,特别涉及一种微内核操作系统的分区多核方法. 背景技术: 在宏内核操作系统(如Linux,Windows)中,网络.文件系统.设备驱动等大量系统服务都在操作系统内核中,微内核操 ...
- Linux内核中max()宏的奥妙何在?(一)
Linux内核中max()宏的奥妙何在?(一) 1.max()宏那点事 在Linux内核中,有这样四个比较大小的函数,如下: max(x,y) //两个数求最大值 min(x,y) //两个数求最小值 ...
- Linux内核中max()宏的奥妙何在?(二)——大神Linus对这个宏怎么看?
最新max()宏 上回,我们在<Linux内核中max()宏的奥妙何在?(一)>一文中说到,在3.18.34版Linux内核源码中的max()宏,采用了GCC的扩展特性,可以避免一些错误. ...
- Linux 内核中的宏定义
Linux 内核中的宏定义 rtoax 日期 内核版本:linux-5.10.13 注释版代码:https://github.com/Rtoax/linux-5.10.13 __attribute__ ...
- ios微内核和鸿蒙微内核,华为发布基于微内核、面向全场景的分布式操作系统:鸿蒙OS...
PingWest品玩8月9日讯,华为消费者业务今天在其全球开发者大会上正式向全球发布其全新的基于微内核的面向全场景的分布式操作系统--鸿蒙OS. 鸿蒙OS将作为华为迎接全场景体验时代到来的产物,发挥其 ...
- Linux 内核详解以及内核缓冲区技术
Linux 内核简介 现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构.您可以从两个层次上来考虑操作系统,如图 2 所示. 图 2. GNU/Linux 操作系统的基本体 ...
- linux 进程映射空间 libc,为什么不能在64位内核的32位Linux进程中映射(MAP_FIXED)最高虚拟页面?...
尝试测试时是否允许访问跨越x86中零边界的内存?在Linux的用户空间中,我编写了一个32位测试程序,该程序试图映射32位虚拟地址空间的低和高页. 之后echo 0 | sudo tee /proc/ ...
最新文章
- php 判断是否有相同的ID,如果有就修改数据库字段,没有就插入数据库字段
- leetcode--删除链表的倒数第N个节点--python
- maven安装错误履历
- 数制系统之间的转换总结(各进制的转换)
- 数据结构--二叉树(1)
- 重装windows后 用live cd修复ubuntu启动gurb
- 前腾讯游戏产品经理舒展:「觉」是产品最重要的维度
- Win7下程序结束为何没有调用 DLL_PROCESS_DETACH?
- hasOwnProperty()
- mysql存储map数据结构_map数据结构
- 之江学院第0届 A qwb与支教 容斥与二分
- 5. Keras - CNN应用于手写数字识别
- Quartz数据库存储
- 复旦大学高等数学学习网站
- 2018年工商银行软件开发中心面试经历
- 逃脱只会部署集群系列 —— k8s集群的网络模型与跨主机通信
- ***测试技巧总结更新篇2
- 小目标检测的一些理解
- gpib-usb-hs linux,美国NI GPIB-USB-HS+连接线GPIB转USB接口控制器高速传输
- 贝叶斯学习、MAP、ML
热门文章
- note2刷 android 5.0.2,三星Galaxy Note Pro 12.2 Android 5.0.2更新锁定了竞争对手的键盘
- 美国奶酪(芝士) - cheese
- 一次3281AB慧荣主控U盘修复
- 某东满3000减2020真的有这个劵么
- 怎样使用word的朗读文本功能
- java递归查询数据库数据
- 论文笔记 Object-Aware Instance Labeling for Weakly Supervised Object Detection - ICCV 2019
- HC32L130基于Xmodem协议实现IAP串口在线升级
- 规划并优化能在 Google Play 上取得更大成功的游戏
- 卷积神经网络demo