操作系统体系结构(不是很重点)

目录

  • 一. 大内核与微内核
  • 二. 分层结构, 模块化和外核
    • 2.1 分层结构
    • 2.2 模块化
    • 2.3 宏内核与微内核
  • 三. 外核

在这里插入图片描述

\quad

一. 大内核与微内核

\quad

在这里插入图片描述
由于对系统资源进行管理的功能不会直接涉及硬件, 所以有的就没有把这个功能放在内核里面

在这里插入图片描述
在这里插入图片描述
注意: 考试的时候不要写变态, 要写CPU状态的转换

在这里插入图片描述

\quad

二. 分层结构, 模块化和外核

\quad

在这里插入图片描述

\quad

2.1 分层结构

\quad

在这里插入图片描述
只能调用相邻一层, 不能跨层调用

优点
1.便于调试和验证,自底向上逐层调试验证
2.易扩充和易维护,各层之间调用接口清晰固定

缺点
1.仅可调用相邻低层,难以合理定义各层的边界
2.效率低,不可跨层调用,系统调用执行时间长

\quad

2.2 模块化

\quad

在这里插入图片描述

在这里插入图片描述
可加载内核模块是锦上添花, 可实现模块拓展

将内核划分为多个模块,各模块之间相互协作。
内核=主模块+可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理
可加载内核模块:(可以动态加载新模块到内核,而无需重新编译整个内核)

优点:
1.模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
2.支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
3.任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高

缺点:
1.模块间的接口定义未必合理、实用
2.模块间相互依赖,更难调试和验证

\quad

2.3 宏内核与微内核

\quad

在这里插入图片描述
关于宏内核与微内核的优缺点上面已有提到

\quad

三. 外核

\quad

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源(如内存存储空间,解释: 内存空间零散),且由外核负责保证资源使用安全

用户看到的内存似乎是连续的, 但是这是操作系统通过映射,抽象和虚拟化出来的(这是普通操作系统给的,和外核不同), 其实在磁盘中是离散的, 同样的, 文件存储空间,外存空间也是

外核可以给用户分配未经抽象的硬件资源, 经常随机访问的就会给一整片连续的磁盘模块, 从而提升性能

优点:
1.(外核可直接给用户进程分配"不虚拟、不抽象"的硬件资源),使用户进程可以更灵活的使用硬件
资源
2.减少了虚拟硬件资源的"映射层",提升效率

普通的操作系统分配空间时, 虚拟地址映射到物理地址是需要损耗时间的
而外核给的如果是你在这个空间区间内, 你就不需要去映射, 因为是实实在在的地址

缺点
1.降低了系统的一致性
2.使系统变得更复杂

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

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

相关文章

【前端】-初始前端以及html的学习

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

听 GPT 讲 client-go 源代码 (24)

分享更多精彩内容,欢迎关注! File: client-go/applyconfigurations/batch/v1/jobstatus.go 在client-go的applyconfigurations/batch/v1/jobstatus.go文件中,定义了与Job的状态相关的配置和操作。 文件中定义了以下几个结构体: Jo…

关于 typeof 与 instanceof 区别引出的原型对象问题

一、关于 typeof 与 instanceof 区别: typeof 和 instanceof 是 JavaScript 中用于检查变量类型的两个不同操作符,它们在使用上有着明显的区别和不同的适用场景。 typeof typeof 是一个一元操作符,用于返回一个变量或表达式的数据类型的字符…

【C++】十大排序算法之 归并排序 快速排序

本次介绍内容参考自:十大经典排序算法(C实现) - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序…

MySQL面试题-锁(答案版)

锁 1、MySQL 有哪些锁? (1)全局锁 加了全局锁之后,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞: 对数据的增删改操作,比如 insert、delete、update等语句&…

UDP实现文件的发送、UDP实现全双工的聊天、TCP通信协议

我要成为嵌入式高手之3月7日Linux高编第十七天!! ———————————————————————————— 回顾 重要程序 1、UDP实现文件的发送 发端: #include "head.h"int main(void) {int sockfd 0;struct sockaddr_i…

每日一练 | 华为认证真题练习Day195

1、下面是路由器RTD的部分输出信息,关于输出信息描述正确的是: A. 该接口使能的IGMP版本是版本1。 B. 该接口的IGMP状态是DOWN的。 C. 该接口上配置发送IGMP查询消息的时间间隔60S D. 该接口上IGMP查询报文中包含的最大响应时间0s 2、下面是一台路由器…

Leetcode : 1137. 高度检查器

学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。 排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。 给你一个整数…

TypeScript 哲学 - Object Types

readonly 修饰对象和数组的 双向可分配性是不同的 Combind types 交叉类型对 值类型可以识别 never 但是 Object 类型识别不了 Tuple

白话模电:1.绪论与半导体(考研面试常问问题)

一、什么是信号?什么是电信号? 信号反映消息的物理量,电信号是反应电压或电流变化的物理量。 二、什么是模拟信号?什么是数字信号? 模拟信号是时间和数值上均连续的信号,数字信号是时间和数值上均离散的信号…

Python中的泛型编程

目录 1. 前言1.1 函数模板1.2 类模板1.3 Python中的泛型 2. TypeVar2.1 函数模板与类模板2.2 构造函数2.3 约束2.4 协变与逆变 Ref 1. 前言 泛型编程的引入主要是为了解决代码重用的问题。在没有泛型的情况下,如果你想要实现一个功能(比如排序或查找&am…

Redis与 Memcache区别

Redis与 Memcache区别 1 , Redis 和 Memcache 都是将数据存放在内存中,都是内存数据库。不过 Memcache 还可用于缓存 其他东西,例如图片、视频等等。 2 , Memcache 仅支持key-value结构的数据类型,Redis不仅仅支持简单的key-value类型的数据&…