当前位置: 首页 > news >正文

操作系统——计算机系统概述——1.4操作系统结构

目录

操作系统的体系结构

大内核(宏内核/单内核):

微内核:

分层法

模块化


操作系统的体系结构

大内核(宏内核/单内核):

将操作系统的主要功能模块都作为系统内核,运行在核心态。(大内核的OS通常也采用了“模块化”的设计思想)

优点:高性能,内核内部各种功能都可以直接相互调用

缺点:

1、内核代码庞大,结构混乱,难以维护

2、大内核中某个功能模块出错,就可能导致整个系统崩溃

微内核:

只把最基本的功能保留在内核。

优点:

1、内核小功能少、易于维护,内核可靠性高

2、内核外的某个功能模块出错不会导致整个系统崩溃

缺点:

1、需要频繁地在核心态和用户态之间切换,性能低。用户态下的功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。

2、用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。

tip:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能。

分层法

将操作系统分为若干层,底层(层0)为硬件,顶层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)。

优点:

1、便于调试和验证,自底向上逐层调试验证

2、易扩充和易维护,各层之间调用接口清晰固定

缺点:

1、仅可调用相邻低层,难以合理定义各层的边界

2、效率低,不可跨层调用,系统调用执行时间长

模块化

将内核划分为多个模块,各模块之间相互协作。

内核=主模块+可加载内核模块

主模块:只负责核心功能,如进程调度、内存管理。

可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。

优点:

1、模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发

2、支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性。

3、任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。

缺点:

1、模块间的接口定义未必合理、实用

2、模块间相互依赖,更难调试和验证。

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。

优点:

1、外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。

2、减少了虚拟硬件资源的“映射层”,提升效率。

缺点:

1、降低了系统的一致性。

2、使系统变得更复杂。

外核

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。

优点:

1、外核可以直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更加灵活的使用硬件资源

2、减少了虚拟硬件资源的“映射层”,提升效率。

缺点:

1、降低了系统的一致性

2、使系统变得更加复杂


http://www.mrgr.cn/news/64895.html

相关文章:

  • 勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器
  • 生成式语言模型的文本生成评价指标(从传统的基于统计到现在的基于语义)
  • 为数据集而生的 SQL 控制台
  • TS 项目中给常用的路径定义一个别名 tsconfig.json
  • 蓝绿发布的全面指南
  • 视频QoE测量学习笔记(二)
  • 【数据结构】二叉树——前中后序遍历
  • 聚类算法综述
  • RC高通滤波器Bode图分析(传递函数零极点)
  • 【Jenkins】 上传docker包并推送到远程仓库
  • 基于YOLO11/v10/v8/v5深度学习的危险驾驶行为检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • ZYNQ7045之YOLO部署——FPGA-ZYNQ Soc实战笔记1
  • C#中const与readonly的区别:定义、赋值与用途
  • Observability:OpenTelemetry Elastic 分发简介
  • 全网最全的前端学习路线和编程指南
  • 微服务架构深入理解 | 技术栈
  • 基于java+SpringBoot+Vue的古典舞在线交流平台设计与实现
  • 高频电子线路---调幅方法与检波
  • dup函数-文件描述符
  • n1book web1信息收集
  • Boost服务器端的acceptor、io_context和socket的理解
  • 架构师备考-信息安全
  • 基于 Java 的 Spring Boot 和 Vue 的宠物领养系统设计与实现
  • JVM问题排查分析
  • 各种方法实现瀑布流
  • 026集——CAD动态效果—瞬态实现——vs CAD二次开发