跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
单内核
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{NoteTA |G1=IT |G2=OS }} '''单内核'''(Monolithic Kernel)是[[操作系统内核]]的一种架构设计模式,其特点是将所有核心功能(如[[进程管理]]、[[内存管理]]、[[设备驱动]]、[[文件系统]]等)集成在一个大的内核空间中运行。与[[微内核]]架构相比,单内核的各组件间通过函数调用直接通信,而非通过进程间通信(IPC)。 == 设计特点 == 单内核的主要特征包括: * '''高度集成''':所有核心功能模块编译为单一的可执行文件 * '''直接函数调用''':子系统间通过函数调用而非消息传递交互 * '''高性能''':避免了进程间通信的开销 * '''特权模式运行''':整个内核运行在[[特权级|最高特权级]](如x86架构的Ring 0) === 与微内核对比 === {| class="wikitable" |+ 单内核与微内核架构对比 ! 特性 !! 单内核 !! 微内核 |- | 设计哲学 || "所有功能在内核" || "最小化内核" |- | 通信机制 || 函数调用 || 进程间通信(IPC) |- | 性能 || 更高 || 相对较低 |- | 稳定性 || 组件故障可能影响整个系统 || 单个服务崩溃不影响系统 |- | 典型代表 || [[Linux]], [[Unix]] || [[Mach]], [[QNX]] |} == 实现原理 == 单内核通常采用模块化设计,虽然所有组件共享同一地址空间,但可以通过[[可加载内核模块]](LKM)实现动态扩展。 === 代码示例 === Linux内核的系统调用实现示例: <syntaxhighlight lang="c"> // 简化的系统调用处理流程 asmlinkage long sys_getpid(void) { return current->tgid; // 返回当前进程ID } </syntaxhighlight> == 优势与局限 == '''优势:''' * 系统调用和硬件访问效率高 * 组件间协作紧密 * 开发调试相对简单 '''局限:''' * 内核体积通常较大 * 安全漏洞可能影响整个系统 * 移植性较差 == 实际应用 == 大多数类Unix系统采用单内核设计,包括: * [[Linux]](如[[CentOS]]、[[Ubuntu]]等) * [[FreeBSD]] * 传统[[Unix]]系统 === CentOS中的实现 === 如上下文所示,[[CentOS]]使用单内核架构,其特点包括: * 基于[[Red Hat Enterprise Linux|RHEL]]源代码构建 * 使用[[RPM包管理器]]进行软件管理 * 内核类型明确标注为"单内核(Monolithic)" == 性能优化 == 现代单内核系统采用多种优化技术: * [[内核抢占]](Kernel Preemption) * [[对称多处理]](SMP)支持 * [[线程局部存储]](TLS) * [[写时复制]](Copy-on-Write) <mermaid> graph TD A[用户进程] -->|系统调用| B(单内核空间) B --> C[进程管理] B --> D[内存管理] B --> E[文件系统] B --> F[设备驱动] C --> B D --> B E --> B F --> B </mermaid> == 数学表示 == 内核响应时间可以表示为: <math> T_{response} = T_{syscall} + \sum_{i=1}^{n} (T_{module_i}) </math> 其中: * <math>T_{syscall}</math> 是系统调用开销 * <math>T_{module_i}</math> 是各内核模块处理时间 == 参见 == * [[微内核]] * [[混合内核]] * [[操作系统内核]] * [[Linux内核]] == 参考文献 == {{Reflist}} [[Category:操作系统内核]] [[Category:计算机架构]] [[Category:Linux]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Main other
(
编辑
)
模板:NoteTA
(
编辑
)
模板:Reflist
(
编辑
)
模板:Reflist/styles.css
(
编辑
)
模块:Check for unknown parameters
(
编辑
)
模块:Crc32lua
(
编辑
)
模块:NoteTA
(
编辑
)
模块:WikitextLC
(
编辑
)