操作系统的体系结构

news2024/11/26 9:47:14

一、内核结构

操作系统内核也有两种类别:大内核结构、微内核结构

 

大内核结构:也叫宏内核/单内核。将操作系统的主要功能模块都作为操作系统内核。大内核结构包括进程管理、存储器管理、设备管理等功能(第四层)和时钟管理、中断处理、原语(第五层)。

大内核优点:性能更高(CPU状态转换次数更少)

大内核缺点:内核代码庞大,结构混乱,难以维护 

 

微内核结构:只将最基本的操作系统功能保留在内核内。包括时钟管理、中断处理和原语(第五层)。

微内核优点:内核功能少,结构清晰,易于维护

微内核缺点:性能低,CPU需要频繁地在内核态与用户态之间切换 

 

补充:为什么大内核结构CPU状态切换次数更少?

如下图,如果一个应用程序需要请求操作系统服务,该服务同时涉及到进程管理、存储器管理以及设备管理,那么在大内核结构下,CPU只需要从用户态切换到内核态就可以使用这些服务,然后再切换回用户态,总共共需要2次切换;而在微内核结构下,每使用一种服务就需要切换两次,总共需要切换6次切换。

二、分层结构 

 

最底层是硬件,最高层是用户接口。

高层可以调用相邻的用户接口。

分层结构优点:

1.便于调试和验证,自下向上逐层验证

2.易于扩充与维护,各层之间调用接口清晰固定

分层结构缺点:

1.难以合理定义各层之间的边界

2.效率低,仅可调用相邻低层,系统调用执行时间很长

三、模块化结构

 

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

操作系统内核=主模块+可加载模块

主模块:负责操作系统核心功能,如进程调度,内存管理

可加载模块:可动态加载新模块到操作系统内核中,无需重新编译整个内核,如设备驱动程序

模块化结构优点:

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

2.支持动态加载新的内核模块,增强系统的适应性

3.效率高,任意模块都可以调用其他模块

模块化结构缺点:

1.模块之间的接口普定义未必合理实用

2.模块间相互依赖,难以调试和验证

四、外核结构

外核负责为用户进程分配未经抽象的硬件资源,并且负责保证资源使用安全 。

 

什么是未经抽象的硬件资源?

即一片连续的存储空间,相比于不连续的空间使用效率更高。

 

外核结构优点:

1.可以直接给用户进程分配不虚拟、不抽象的硬件资源,用户进程更加灵活高效地使用硬件资源

2.减少虚拟硬件资源的映射层,提升效率(映射层:普通操作系统给用户进程分配的都是虚拟的硬件资源,比如虚拟内存,用户进程在访问自己的地址空间时只能提供虚拟地址,要想获得实际的物理地址,操作系统必须去查页表)

外核结构缺点:

1.降低了系统的一致性。有的进程分配了虚拟的地址,有的进程分配了实际的物理地址。

2.操作系统更加复杂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringSecurity 初始化解析

文章目录 前言加载SpringSecurity配置解析配置SpringSecurity 解析器security:http 解析FilterChainProxy的注册过程创建 SpringSecurity 过滤器总结 前言 通过上文分析知道了SpringSecurity对一个请求的具体处理流程。不知道大家是否跟我一样都有几个疑问: Filte…

半导体行业如何在跨网数据交换时保证核心数据是安全的?

半导体行业是高科技产业的核心,也是国家战略的重点领域。半导体产业涉及到芯片设计、制造、封装、测试等多个环节,每个环节都需要大量的数据支撑和交换。半导体企业的核心数据不仅包括技术方案、设计图纸、生产参数等,还包括市场分析、客户信…

创建当前工作簿的备份和一次关闭所有工作簿

【分享成果,随喜正能量】专注地做一件事,做到极致,胜过敷衍地做很多事。不求多,但求精,不求散,但求专。每个人的时间和精力都是有限的,专注于某个领域,沉得住气,静得下心…

Python常用算法合集【文末送书啦~】

前言 作者主页:涛哥聊Python 个人网站:涛哥聊Python 大家好,我是涛哥。 今天为大家分享Python常用算法合集,以及各算法的代码示例!还会给大家赠送荣获CSDN“程序员IT好书评选”奖的《labuladong 算法小抄》&#xf…

报错Can‘t pickle local object ‘get_dataset.<locals>.<lambda>‘

将代码里所有 ’num_workers设为0 报错信息 "Cant pickle local object get_dataset.<locals>.<lambda>" 通常出现在使用多进程加载数据时&#xff0c;特别是在使用 Python 的 multiprocessing 模块时。这个错误是由于 Python 无法将局部函数&#xff0…

3D目标检测框架 MMDetection3D环境搭建 docker篇

本文介绍如何搭建3D目标检测框架&#xff0c;使用docker快速搭建MMDetection3D的开发环境&#xff0c;实现视觉3D目标检测、点云3D目标检测、多模态3D目标检测等等。 需要大家提前安装好docker&#xff0c;并且docker版本> 19.03。 1、下载MMDetection3D源码 https://gith…

公司内部网段太多,管控混乱,该如何规范跨网文件传输交换?

在当今的信息化时代&#xff0c;文件传输交换是企业日常工作中不可或缺的一项功能。无论是内部员工之间&#xff0c;还是与外部合作伙伴之间&#xff0c;都需要频繁地进行文件的发送、接收、共享和协作。然而&#xff0c;由于企业内部网段的复杂性和多样性&#xff0c;以及数据…

【JAVA】项目部署

IDEA部署maven&#xff1a;https://www.cnblogs.com/ckfuture/p/15821541.html MySQL数据库安装&#xff1a;https://blog.csdn.net/SoloVersion/article/details/123760428 SQLyog安装&#xff1a; https://blog.csdn.net/qq_43543789/article/details/107997510 git安装&a…

数字孪生平台

数字孪生平台 开放架构的价值数字孪生体和信息物理系统的对比对于数字孪生体的开放架构特点数字孪生体参考架构主要分为两部分 平台生态是数字经济的典型特征&#xff0c;由于数字技术具有网络效应&#xff0c;通过自建或参与数字平台&#xff0c;已成为所有数字技术企业必然的…

低代码平台:顺应时代的选择

低/无代码的高速发展&#xff0c;属于软件市场的选择&#xff0c;相较于传统编写代码的开发方式&#xff0c;它们开发效率更高、投入成本更低、技术门槛也更低&#xff0c;未来更多软件应用将使用低/无代码技术完成&#xff0c;这也是趋势。 身为开发人员经常需要花费大量时间在…

Windows下配置Poetry教程

发生时间&#xff1a;2023.09.16&#xff0c;按照官网的教程&#xff0c;配置系统环境根本找不到路径&#xff0c;所以自己研究了一番。 1.官网入口 https://python-poetry.org/docs/#installing-with-the-official-installer&#xff0c;找到Windows的安装命令 ⇒ 未安装过…

【物联网】常见电子元器件(电阻、电容、电感、二极管、三极管)综合,详细分析原理及其应用

电子元器件是现代电子技术的基础&#xff0c;它们在各个领域中发挥着重要作用。从三极管到电容器、电阻器&#xff0c;这些常用元器件承担着放大、开关、滤波等关键任务。它们的特性和组合方式决定了电路的性能和功能。本文将介绍常用电子元器件的工作原理和应用场景&#xff0…

如何简化第三方和临时用户的安全访问

保护第三方访问安全的重要性 在当今相互关联的业务环境中&#xff0c;与供应商、承包商、合作伙伴和供应商等外部各方进行协作已成为常态。进行协作往往要授予第三方内部系统、网络或数据的访问权限。但是&#xff0c;每个接入点都可能成为 IT 管理员的潜在漏洞&#xff0c;而…

Kibana server is not ready yet

查看kibana日志 docker logs kibana 找到error 翻译一下其实就是说磁盘空间满了导致es的这个索引变成只读模式了。 可以先去查看一下 进入到es中&#xff0c;可以看到占用了96% 命令是 # 查看es的容器id docker ps docker exec -it 容器id /bin/bash #进入到es里之后运行…

关于Controller继承Controller的效果与切面触发测试

关于继承Controller测试 首先创建一个Controller RestController RequestMapping(value"ceshi") public class CeshiController {GetMapping(value "ceshi")public String ceshi() {return "测试";} }创建一个Controller继承上一个Controller…

全面掌握应用程序性能的利器:性能监控软件

在当今数字时代&#xff0c;应用程序性能对于企业的成功至关重要。为了确保应用程序在高负载和压力下能够正常运行&#xff0c;并提供优质的用户体验&#xff0c;性能监控软件成为企业必备的利器。本文将介绍性能监控软件的重要性以及它们如何帮助企业全面掌握应用程序性能。 性…

安防视频/视频汇聚平台EasyCVR使用onvif探测添加设备通道详细步骤来啦!

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

【数据结构】单值二叉树 相同的树 翻转二叉树(五)

目录 一&#xff0c;单值二叉树 题目详情&#xff1a; 解法&#xff1a;父子比较法 解题思路&#xff1a; 思路实现&#xff1a; 源代码&#xff1a; 二&#xff0c;相同的树 题目详情&#xff1a; 解法&#xff1a;比较法 解题思路&#xff1a; 思路实现&#xff1…

Visual Studio 2023年下载、安装教程、亲测有效

visual studio 2022&#xff08;vs 2022&#xff09;是由微软官方出品的最新版本的开发工具包系列产品。它是一个完整的开发工具集&#xff0c;可完美支持C#、C、Python、Visual Basic、Node.js、HTML、JavaScript等主流的编程语言&#xff0c;帮助程序员轻松地完成调试、探查和…

【C++模拟实现】map、set容器的模拟实现

【C模拟实现】map、set容器的模拟实现 目录 【C模拟实现】map、set容器的模拟实现map、set模拟实现的代码&#xff08;insert部分&#xff09;部分一&#xff1a;红黑树的迭代器以及红黑树部分二&#xff1a;对set进行封装部分三&#xff1a;对map进行封装 遇到的问题以及解决方…