【王道操作系统】ch1计算机系统概述-04操作系统结构

文章目录

  • 【王道操作系统】ch1计算机系统概述-04操作系统结构
    • 操作系统的内核
    • 操作系统的体系结构考纲新增内容(红色为全新内容,黄色为原有内容):
      • 01 分层结构
      • 02 模块化
      • 03 宏内核(大内核)和微内核
      • 04 外核

【王道操作系统】ch1计算机系统概述-04操作系统结构

在这里插入图片描述

操作系统的内核

操作系统内核是操作系统最基本、最核心的部分,实现操作系统内核功能的那些程序就是内核程序
在这里插入图片描述最底层的时钟管理、中断管理、原语是与硬件关联最紧密的三个模块,这些功能是必须放在内核当中的。还有一些管理相关的功能,如进程管理,存储器管理。对于这些功能的管理,更多的是对数据结构的一个操作,而不会直接涉及到硬件。所以有的操作系统并不把这些管理功能放在内核当中,而只在内核当中保留与硬件接触最紧密的这些部分。

因此,这就引出了两种截然不同的内核的设计方法:

  • 大内核
    把所有的这些功能都包含在操作系统内核当中的这种结构,就叫做大内核(宏内核/单内核)
  • 微内核
    而如果内核当中只保留与硬件关系最紧密的这些部分,那么这种内核就叫做微内核
    在这里插入图片描述
    在这里插入图片描述
    背景:一个应用程序想要请求操作系统服务,这个服务的处理同时涉及到进程管理、
    存储管理、设备管理。
  • 在大内核的操作系统下,CPU的状态将会发生2次改变
  • 在微内核的操作系统下,CPU的状态将会发生6次改变
    而CPU状态的切换是有成本的,频繁地切换状态会降低系统的性能。

在这里插入图片描述

操作系统的体系结构考纲新增内容(红色为全新内容,黄色为原有内容):

在这里插入图片描述

01 分层结构

在这里插入图片描述

02 模块化

在这里插入图片描述

03 宏内核(大内核)和微内核

在这里插入图片描述
在这里插入图片描述

04 外核

在这里插入图片描述

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

在普通的操作系统当中,如果用户进程他想要申请使用一片内存空间。那么给他分配的内存空间是经过虚拟化的。用户进程自己看到的视角,似乎是自己拥有了一整片连续的这个内存空间。但事实上,这只是虚拟的地址空间,操作系统内核会把这些虚拟空间映射到实际的物理空间中,这些物理空间在内存当中通常是离散的。

除了内存空间之外,给进程分配的文件存储空间外存空间也是经过抽象的。对于进程来说,他觉得自己的文件好像是连续的一个地址空间。但事实上,这个文件的各个块。在磁盘当中,很有可能是被离散存放的,所以普通的操作系统给用户进程分配的磁盘空间也是经过抽象的。

外核可以给用户进程直接分配未经抽象的硬件资源
优点:比如一个用户进程知道自己的这一片存储空间是经常需要随机访问的,一会访问a地址,一会访问b地址

  • 如果给这个用户进程分配的磁盘空间在外存当中是离散的,那么用户进程在随机访问这些文件块的时候,意味着这个磁头需要来回横跳,那这样就会导致用户进程对自己的文件随机访问的这种性能效能变低。

  • 如果采用外核的这种策略,那么外核可以直接给用户进程分配未经抽象的硬件资源。也就是说,如果这个用户进程他知道自己的这个文件需要频繁的被随机访问,那么我就可以向外核申请给我分配一整片连续的这个磁盘块,比如说从0号块到1024号块,全部都是我的。用户进程文件数据直接存放到连续的几个磁盘块当中,那他之后想要随机访问自己这个文件里边的任何一块,磁头移动的这些距离就会变少。

外核除了分配回收这些未经抽象的硬件资源之外,还需要负责保证这些硬件资源的使用安全。

  • 比如a到b这个空间已经分配给了进程p1,此时另一个进程p2想要访问这片区域。外核就需要及时的发现并且制止。
  • 同时,进程p1如果要访问a-b之外的其他空间,这个行为也应该被外核发现并制止。所以外核它分配了这些硬件资源之后,还需要保证这些硬件资源的使用安全。

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

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

相关文章

mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操

MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 功能代码测试前提: 需要对mybatisPl…

HarmonyOS Full SDK的安装

OpenHarmony的应用开发工具HUAWEI DevEco Studio现在随着OpenHarmony版本发布而发布,只能在版本发布说明中下载,例如最新版本的OpenHarmony 4.0 Release。对应的需要下载DevEco Studio 4.0 Release,如下图。 图片 下载Full SDK主要有两种方式,一种是通过DevEco Studio下载…

黑马程序员微信小程序学习总结11.分包与uniapp

这里写目录标题 分包什么是分包分包加载规则 自定义tab(略,后面项目使用到再学)uniapp创建项目目录结构使用git管理项目新建页面配置tabbar修改导航栏 分包 什么是分包 分包加载规则 其他略,赶进度快进到uniapp,这些可…

黑马c++ STL部分 笔记(5) stack容器

stack是一种先进后出的数据结构,它只有一个出口。 栈中只有栈顶的元素才可以被外界使用,因此栈不允许有遍历行为。 栈可以判断容器是否为空。 栈可以返回元素个数。 栈中进入数据——入栈push。 栈中弹出数据——出栈pop。 stack常用接口 // stack常用…

2023年06月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

一、单选题(共15题,共30分) 第1题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A:编辑 B:保存 C:调试 D:编译 答案:D 第2题 排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数据中有两个相等记录的关…

堆与TopK问题分析

TopK问题 题目及思路分析 所谓TopK问题,在一组数据中找出前K个最大或者最小的数值,而使用TopK问题的解决思路的问题一般数据个数都比较大,如果直接用数组,则会导致数据无法一次性加载到内存从而难以比较,难者甚至因为…

C++之函数,指针

函数 1,函数概述 作用:将一段经常使用的代码封装起来,减少重复代码 一个较大的程序,一般分为若干份程序块,每个模块实现特定的功能 2,函数的定义 函数的定义一般有五个步骤: 1&#xff0c…

MATLAB中function_handle函数用法

目录 说明 创建对象 示例 命名函数求积分 匿名函数求积分 function_handle函数所表示的是函数的句柄。 说明 函数句柄是一种表示函数的 MATLAB 数据类型。函数句柄的典型用法是将函数传递给另一个函数。例如,可以将函数句柄用作基于某个值范围计算数学表达式的…

c++基础知识补充4

单独使用词汇 using std::cout; 隐式类型转换型初始化:如A a1,,此时可以形象地理解为int i1;double ji;,此时1可以认为创建了一个值为1的临时对象,然后对目标对象进行赋值,当对象为多参数时,使用(1&#xf…

微信小程序云开发教程——墨刀原型工具入门(添加交互事件)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

【多线程】CAS详解

目录 🌴什么是 CAS🌸CAS 伪代码 🎍CAS 是怎么实现的🍀CAS 有哪些应⽤🌸实现原子类🌸实现自旋锁 🌳CAS 的 ABA 问题🌸**什么是 ABA 问题**?🌸ABA 问题引来的 B…

笔记73:ROS中的各种消息包

参考视频: 33.ROS 的标准消息包 std_msgs_哔哩哔哩_bilibili 34. ROS 中的几何包 geometry_msgs 和 传感器包 sensor_msgs_哔哩哔哩_bilibili 标准消息包:std_msgs常用消息包:common_msgs导航消息包:nav_msgs几何消息包&#xf…