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

CHS_01.1.4+操作系统体系结构 一

CHS_01.1.4+操作系统体系结构 一

  • 操作系统的体系结构 也就是操作系统的内核应该怎么设计这样一个问题
    • 操作系统的内核

在这个小节中 我们会学习

操作系统的体系结构 也就是操作系统的内核应该怎么设计这样一个问题

在这里插入图片描述

那这个小节的内容我们只需要做简要的了解就可以了 我们考试中常考的是这样的两种体系结构 一种叫大内核 一种叫微内核

那经过我们之前的学习 我们知道计算机系统的层次结构是这样子的 但是操作系统的内部其实还可以再进行进一步的划分

一部分是内核的功能 另一部分是非内核的功能 操作系统最核心的那些功能需要放在操作系统的内核当中

操作系统的内核

在这里插入图片描述

比如说时钟管理 中断处理 还有原语另外呢 还有之后我们要学习的进程管理 存储器管理 设备管理等等

这些功能都是要放在操作系统内核当中的 那那这儿提到的时钟管理其实就是用我们之前提到过的时钟中段来实现了

计算机计时的功能想要实现程序并发 就必然离不开始终管理这个

很重要的内核功能 那中断处理呢就不再多解释了 之前已经举了很多例子 另外呢 还有一种特殊的程序叫做原语

原语这种程序 它具有原子性 所谓的原子性就是说这种程序要么就一气呵成的全部运行完成 要么就是不运行

它的执行过程是不可被中断的 也就是说 在执行原语的这一小段程序的过程当中

即使有外部中断信号过来了 那cpu也会继续把原语执行完成 才去处理那个外部中断信号

总之 我们这儿列举的最下面这一层的这三个东西 适合硬件结合最为紧密的

所以他们必须放在操作系统的内核当中 那其实像Ubuntu、CentOS等等这些我们耳熟能详的linux操作系统

这些系统的开发团队 他们主要干的事情其实是在实现非内核的功能 而这些个操作系统的内核使用的就是linux的内核

那同学如果不知道这些什么东西的话也无所谓 这个不需要深究 总之 内核是操作系统最核心最基本的部分

它由一系列的内核程序组成 这些内核程序必须运行在内核态
在这里插入图片描述

那刚才我们提到的最底层的这三个部分是与硬件关联最紧密的模块

这些功能是必须放在内核当中的 还有一些管理相关的功能 向进程管理 存储器管理

对于这些功能的管理更多的是对数据结构的一个操作 而不会直接涉及到硬件

所以 有的操作系统并不把这些管理功能放在内核当中 而只在内核当中保留与硬件接触最紧密的这些部分
在这里插入图片描述

因此 这就引出了两种截然不同的内核的设计方法 把所有的这些功能都包含在操作系统内核当中的

这种结构就叫做大内核 而如果内核当中只保留与硬件关系最紧密的这些部分

那么这种内核就叫做微内核 那我们需要注意的是 如果采用的是微内核的这种结构的话

那么 属于内核的这些功能是需要运行在内核态的 而不属于内核的上面的这些功能就需要运行在用户态

这会对我们系统的性能造成一定的影响 那我们用更直观的例子来体会这一点

那假设现在有两种体系结构的系统 第一个系统 它采用的是大内核的体系结构

那么 由于进程管理 存储管理等等这些这些功能都是被划分在内核当中的 所以这些功能的处理都需要运行在内核态

而只有应用程序是运行在用户台的 而对于采用微内核结构的操作系统来说

只有和硬件联系最紧密的 这些功能被划分在了内核当中 只有这些功能是需要在内核太下才可以执行的

而其他的这些功能模块在用户态下就可以运行 那现在来看这样一个故事
在这里插入图片描述

假设现在这个应用程序想要请求操作系统的服务 并且这个服务的背后需要同时涉及到进程管理 存储管理 设备管理这几个功能

如果采用的是大内核的体系结构的话 那么应用程序向操作系统提出服务的请求

这个时候 cpu会从用户他切换为核心态 然后开始运行这一系列的内核程序

而如果采用的是v内核的体系结构的话 应用程序向操作系统提出服务的请求

接下来 操作系统的这几个模块都需要为应用程序服务 而进程管理这个模块 在处理应用程序的请求的时候 他同样也需要得到内核的支持 所以这个模块对内核的访问就涉及到了

cpu从用户态转到内核态 服务完成了之后又会从内核态再转回用户态

然后 同样的存储管理和设备管理这两个模块 他们也在完成相应的工作的时候 同样也需要得到内核的支持 因此每一个模块都需要请求内核的服务

那每一次请求内核的服务都会涉及到一个cpu状态转换的过程 因此 如果我们采用的是大内核的

体系结构的话 那么应用程序的这个请求只需要两次变态就可以了 这一次 这一次

而如果采用的是v内核的体系结构的话 那么整个过程的处理就需要有六次变态

这需要注意的是 这个cpu的状态转换 这个过程其实是有成本的 需要消耗不少的时间 因此频繁的切换cpu的状态是会降低系统性能的

对了 这个地方也需要强调一下 大家在考试的时候不要使用变态这个词 这个只是我们为了方便描述 然后使用的一种描述方式

大家在考试答题的时候需要写的正规一点 就是要说成是cpu状态的转换

好的 那么这个小姐 我们介绍的是操作系统的体系结构 分为大内核和微内核相 通过刚才例子相信大家也能够体会他们俩的

一个区别大内核的优点就是性能高 因为应用程序在请求内核服务的时候 这个变态的过程会比较少

而v内核的缺点呢是需要频繁的在核心态和用户态之间切换 所以它的性能会更低一些

不过 非内核的优点呢是 它的内核功能很少 所以结构清晰 方便程序员维护

而大内核 由于他们把很多很多功能都放在内核里 所以内核代码就会变得比较庞大 结构混乱 难以维护

这也不难理解 那典型的大内核操作系统 像linux unix这些都是大内核的

然后 微内核的操作系统的话 大家可以去看一下windows NT 当然这些并不是考试考察的重点 考试的时候只会考察

啊 这两种体系结构 它们的优缺点 大家只要能够有个印象就可以好的
在这里插入图片描述

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

相关文章:

  • C++推箱子游戏开发
  • React Hooks的useState、useRef使用
  • Linux-进程间通信_管道
  • <设计模式> 七大原则
  • Linux--好玩的进度条
  • 【博士每天一篇文-算法】Graph Structure of Neural Networks
  • hfish蜜罐docker部署
  • 【计算机网络】TCP原理 | 可靠性机制分析(二)
  • 1045 - Access denied for user ‘root @223.98.184.126‘ (using password: YES)
  • 解决word图片格式错乱、回车图片不跟着换行的问题
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)
  • FreeRTOS学习总结(二)FreeRTOS任务创建和删除API函数
  • CentOS找回root密码
  • 开源字符识别 OCR 引擎推荐
  • 1.框架介绍项目环境配置与项目启动!
  • 10个最佳ES6特性 ES7与ES8的特性
  • axios 和 cookie 的那些事
  • canvas绘制圆角头像
  • css系列之关于字体的事
  • ES6系统学习----从Apollo Client看解构赋值
  • gulp 教程
  • JavaScript的使用你知道几种?(上)
  • node.js
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 跨域
  • 巧用 TypeScript (一)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • hi-nginx-1.3.4编译安装
  • 说说我为什么看好Spring Cloud Alibaba
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $GOPATH/go.mod exists but should not goland
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (libusb) usb口自动刷新
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (力扣题库)跳跃游戏II(c++)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (译) 函数式 JS #1:简介
  • . Flume面试题
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET正则基础之——正则委托
  • @property python知乎_Python3基础之:property
  • @RunWith注解作用
  • [.net] 如何在mail的加入正文显示图片
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [C#][DevPress]事件委托的使用
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [CDOJ 838]母仪天下 【线段树手速练习 15分钟内敲完算合格】
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误