操作系统的体系结构

一、内核结构

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

 

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

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

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

 

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

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

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

 

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

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

二、分层结构 

 

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

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

分层结构优点:

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

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

分层结构缺点:

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

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

三、模块化结构

 

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

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

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

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

模块化结构优点:

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

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

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

模块化结构缺点:

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

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

四、外核结构

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

 

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

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

 

外核结构优点:

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

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

外核结构缺点:

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

2.操作系统更加复杂

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫工作者必备:使用爬虫ip轻松获得最强辅助

在进行网络数据爬取时,爬虫ip成为了爬虫工作者们的得力辅助。通过使用爬虫ip,可以实现IP地址的伪装和分布式请求,有效规避访问限制和提高爬取效率。本文将为爬虫工作者们分享关于使用爬虫ip的知识,帮助您轻松获取最强辅助&#xf…

【SpringMVC】基于 Spring 的 Web 层MVC 框架

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理SpringMVC : 基于 Spring 的 Web 层MVC 框架 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下…

VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网

1、首先打开我们的虚拟网络编辑器 2、查看我们的网关 3、查看IP池,根据需求自己设置 4、打开centos7虚拟机 编辑网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-ens160####我的网卡是ens160TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic …

「聊设计模式」之原型模式(Prototype)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是软件开发中经过长期实践总结的经验和规范&#…

git 查看当前版本号

你看,那个人好像一条狗哎。 ——周星驰 《大话西游》 要查看当前 Git 仓库的版本号,您可以使用以下命令: git log --oneline -n 1 这会显示最近一次的提交信息,包括提交的哈希值(版本号)和提交的摘要信息…

微服务保护-流量控制

流量控制 雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。我们先学习这种模式 簇点链路 当请求进入微服务时,首先会访问DispatcherServlet,然后进入Controller、Service、Mapper&…

vue基础知识十三:Vue中的$nextTick有什么作用?

一、NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM 什么意思呢? 我们可以理解成,Vue 在更新 DOM 时是异步执行的。当数据发生变化,Vue将开启一个异…

神经网络 01(介绍)

一、神经网络 人工神经网络 (Artificial Neural Network,简写为ANN)也简称为神经网络 (NN),是一种模仿生物神经网络结构和功能的 计算模型。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号&#xff0c…

HTTP代理与VPN:网络代理技术的比较

HTTP代理和VPN是两种常见的网络代理技术,它们可以帮助用户隐藏自己的IP地址、保护网络隐私、绕过网络限制等。本文将介绍HTTP代理和VPN的定义、工作原理、优缺点以及使用场景。 一、HTTP代理 HTTP代理是一种通过代理服务器转发网络请求的技术。当用户发起网络请求时…

C++ - map 和 set的 例题

前言 本博客在 一下文章关于 map 和 set 讲解之下,对 map 当中的 operator[] ()函数的功能运用,感受 map 功能强大。 349. 两个数组的交集 - 力扣(LeetCode) 给定两个数组 nums1 和 nums2 ,返回…

CG MAGIC分享3ds Max卡顿未保存处理方法有哪些?

3ds Max进行建模、渲染这一系列过程中,大家使用中都会遇到各种原因导致软件卡顿或崩溃是很常见的情况。 可以说卡机没关系,可是卡顿发生时,如果之前的工作没有及时保存,可能会导致数据的丢失和时间的浪费。这就是最让人烦躁的了&…

Linux基本指令

本片文章只讲述Linux的一些基本指令,让你简单上手Liunx! 目录 🍑ls : 显示当前目录下的文件列表 -a :列出目录下的所有文件,包括以 . 开头的隐含文件​编辑 -l :显示文件的详细信息​编辑 &#x1f3…

后端配置(宝塔):SSH终端设置

一、打开SSH开关 在“安全”中找到SSH管理,按图打开对应按钮 二、复制秘钥 点击“查看密钥”,对密钥进行复制 三、添加服务器 在终端页面添加新的服务器 四、进行密钥连接 输入IP地址,进行root登录,私钥即在“安全”界面复制的…

Linux进程

一.进程和程序 程序 程序(program)是存放在磁盘文件中的可执行文件 进程 程序的执行实例被称为进程(process) 进程具有独立的权限与职责。如果系统中某个进程崩溃,它不会影响到其余的进程。 每个进程运行在其各自的虚拟地址空间中,进程之间可以通过由内…

软件系统的需求整理方法

软件系统的需求整理是项目的关键阶段之一,它涉及识别、收集和组织软件系统的需求。以下是一些常见的软件系统需求整理方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求收集会议&…

windows系统使用软件异地同步数据(灾备)

Syncthing是一个开源文件同步工具,可以在多台设备之间实时同步文件或文件夹,官方网站:Syncthing 下载地址:Syncthing | Downloads ,一般推荐下载图形界面SyncTrayzor。 官方下载地址: https://github.c…

【Vue】快速入门和生命周期

目录 前言 一、vue的介绍 1. Vue.js是什么? 2. 库和框架的区别 3.基本概念和用法: 二、MVVM的介绍 1. 什么是MVVM? 2. MVVM的组成部分 3. MVVM的工作流程 4. MVVM的优势 5. MVVM的应用场景 三、vue实例 1.模板语法: …

Vue3+vite 使用import.meta.globEager代替require.context实现自动导入api

webpack require.context实现自动导入 Vite方式实现自动导入步骤 1、在src下会有一个api文件夹,结构如下: 2、通常情况下,api文件夹的index.js文件我们通常是这样来引入的 import * as login from ./modules/login import * as system fro…

【C++】泛型算法(二)泛型指针Iterator(迭代器)

迭代器iterator定义 迭代器是一种检查容器内元素并遍历元素的数据类型;迭代器提供一个对容器对象或者string对象的访问方法,并定义了容器范围;迭代器的使用可以提高编程的效率。 其定义应该提供: 迭代对象(某个容器&a…

科技云报道:云安全的新战场上,如何打破“云威胁”的阴霾?

科技云报道原创。 近年来,在云计算和网络安全产业的蓬勃发展下,我国云安全行业市场规模呈现高速增长态势,在网络安全市场总体规模中占比不断上升。 据统计,近5年我国云安全市场保持高速增长,2021年我国云安全市场规模…