微内核和宏内核是什么?

如题所述

微内核与宏内核比较
内核按照体系结构分为两类:微内核(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个回答  2012-11-25
微内核是将服务转移到进程上的一种内核模式。宏内核是一种传统的内核结构,它将进程管理,内存管理等各项服务功能都放到内核中去,通常用在通用式的内核上,如unix,linux等本回答被提问者采纳

什么是微内核和宏内核
而宏内核,又名单内核,其所有模块如进程调度、内存管理、文件系统、设备驱动等运行在内核态,具备直接硬件操作能力。代表性操作系统如UNIX\/Linux、FreeBSD等,它们采用宏内核架构,通常在代码中包含类似arch\/arm\/的目录,用于实现与体系结构相关功能。微内核与宏内核的设计哲学与架构差异,反映出操作系统构建...

什么是微内核和宏内核?
微内核是将服务转移到进程上的一种内核模式。宏内核是一种传统的内核结构,它将进程管理,内存管理等各项服务功能都放到内核中去,通常用在通用式的内核上,如unix,linux等。两个系统的内核是通过进程的创建FORK的实现来比较,因为进程的创建涉及到系统调用,内存管理,文件管理等系统的主要方面。因此通过...

一文了解宏内核和微内核
宏内核,又可称为单内核或单核,其特点是所有内核服务和用户服务都集中在一个地址空间中,通过直接通信,执行效率高,但可拓展性较差,类似于软件开发中的单体架构。微内核则将服务划分为独立进程,通过IPC通信,模块化设计使得每个服务独立运行,即使一个服务故障也不会影响整体,执行效率相对较低,类似微...

微内核与宏内核
微内核设计将功能分为独立进程,每个进程作为服务器运行在用户空间,通过消息传递实现通信。宏内核则将所有服务在一个单独的大进程内实现,运行在同一地址空间,直接调用函数实现通信。微内核设计旨在保持内核小巧,易于移植,而宏内核则强调简单性和高性能。Linux选择了宏内核设计,部分原因是因为它的历史背景...

windows是微内核还是宏内核
操作系统内核设计中的宏内核与微内核是两种不同的实现方式。在讨论Windows操作系统时,我们可以说它采用了宏内核设计。宏内核的设计理念在于将操作系统的核心功能集成在内核中,包括但不限于资源管理、进程管理、文件系统、网络协议栈以及设备驱动程序等。这种设计方式的一个显著优点是性能较高,因为内核中的...

一文搞懂宏内核、微内核以及混合内核
操作系统内核是连接应用程序与硬件的桥梁,是计算机资源的管理者。内核通过整合硬件资源(CPU、存储器、总线、各种I\/O设备等)与软件资源(系统软件、应用软件),实现对计算机系统的高效管理和控制。内核的结构主要有三种:宏内核、微内核与混合内核。宏内核将所有功能模块整合在一起,运行在内核进程中,...

操作系统如何实现:什么是宏内核、微内核?
在现实的应用中,宏内核和微内核设计并存。如Linux、Unix等操作系统采用宏内核结构,提供高效底层服务;而Mac OS X、Windows NT和华为鸿蒙Harmony OS等则倾向于微内核设计,追求更高的稳定性和可扩展性。MINIX操作系统,作为影响Linux发展的关键因素之一,采用了微内核架构,而Linux则以宏内核著称。这样的...

操作系统内核(一)——操作系统概述
操作系统内核,作为应用程序与硬件之间的关键桥梁,主要区分于宏内核和微内核两种架构。宏内核统一管理用户服务和内核服务,而微内核则通过不同地址空间分离两者。在Linux中,进程被视为一个执行上下文,包含内核信息,系统调用和故障处理依赖于这些信息,涉及进程同步、通讯、调度等功能。Linux的fork()系统调用...

什么是宏内核
微内核 认识到宏内核的缺点,就提出了微内核。微内核的观点是内核只完成服务功能,其他的管理功能就交给一个或多个特权服务程序。它的优点和缺点也同样是明显的。因为内核只完成基本的服务功能,所以微内核可以很方便的扩充。但是,由于真正的系统功能不是实现在内核里,各个功能之间的切换而引起的开销就...

linux是微内核还是宏内核
宏内核体系结构允许内核功能模块在操作系统启动时加载到内存中,并且通过内核接口提供给用户空间应用程序使用。相比之下,微内核(Microkernel-based Kernel)通常用于较小的、简单的系统,如某些移动电话和嵌入式系统。微内核的设计目标是减少系统开销和资源占用,同时提供基本的操作系统功能。Linux系统并不是微...

相似回答