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

[1.4]计算机系统概述——操作系统的体系结构

第一章 计算机系统概述

操作系统的体系结构

  • 大内核/单内核/宏内核
  • 微内核

  通过之前的学习,我们知道计算机系统的层次结构是这样的。

image-20230305132944828

  但是操作系统的内部其实还可以再进一步地划分。

  一部分是内核的功能,一部分是非内核的功能。

image-20230305133055539

  操作系统最核心的功能,要放在内核当中。比如:时钟管理、中断处理、原语;进程管理、存储器管理、设备管理等等。这些功能都是要放在操作系统内核当中的。

image-20230305133143897

  时钟管理:利用时钟中断实现计时功能。

  中断处理:略。

  原语:原语是一种特殊的程序,具有原子性。也就是说,这段程序的运行必须一气呵成,不可被“中断”。要么就一气呵成的全部运行完成,要么就不运行。它的执行过程是不可被中断的,也就是在执行原语这一段程序的过程当中,即使有外部中断信号过来了,CPU也会继续把原语执行完成,然后才去处理那个外部中断信号。

  总之,上图“内核”部分当中,最底层的那三个(时钟管理那一行),是与硬件结合最为紧密的,它们必须放在操作系统的内核当中。

  Ubuntu、CentOS的开发团队,其主要工作是实现非内核功能,而内核都是用了Linux内核。

  内核是操作系统最基本、最核心的部分。

  实现操作系统内核功能的那些程序就是内核程序

image-20230305133940226

  对于那三个最底层的功能,它们是与硬件结合最为紧密的,也必须放在操作系统内核当中。

  而进程管理、存储器管理这些管理功能,不会直接涉及硬件,所以,有的操作系统并不把这些管理功能放到内核当中。而只在内核当中保留那些与硬件接触最紧密的部分。


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

  把所有的这些功能都包含在操作系统当中的,这种结构就叫大内核;

  在内核当中只保留与硬件结合最紧密的这些部分,那么这种结构就叫做微内核。

image-20230305134417875

  注意:操作系统内核需要运行在内核态;操作系统的非内核功能运行在用户态

  需要注意的是,如果采用微内核结构的话。

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

  这会对我们系统的性能造成一定影响。

  如何造成影响,我们用一个更直观的例子来体会。

  现在,我们有两种体系结构的系统。

image-20230305134816017

  第一个系统,采用的是大内核的体系结构,那么,由于进程管理、存储管理等等这些功能都是被划分在内核当中的,所以这些功能的处理都需要运行在内核态,只有应用程序是运行在用户态的。

  而如果采用微内核结构的操作系统,只有与硬件联系最紧密的这些被划分在了内核当中,只有这些功能是在内核态下才可以执行的,而其他的功能模块在用户态下就可以运行。

  此时有这样一种情况。

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

  如果采用的是大内核的体系结构的话,那么应用程序向操作系统提出服务的请求,此时CPU会从用户态切换为核心态,然后开始运行这一系列的内核程序。

image-20230305135231663

  而如果采用的是微内核的体系结构的话,应用程序向操作系统提出服务的请求,接下来操作系统的这几个模块都需要为应用程序提供服务,而这几个模块之中,进程管理这一个模块在处理应用程序请求的时候,它同样也需要得到内核的支持(如时钟、中断等),所以在进程管理这一个模块服务的过程中,CPU还需要由用户态转为内核态,服务完成之后又会从内核态再转回用户态。同理,存储管理、设备管理这两个模块也是一样的,它们在执行相应工作的时候,同样也需要得到内核功能的支持。因此,每一个模块,都需要请求内核的服务,每一次都需要涉及到一次CPU状态转换的过程。

image-20230305135420191


  因此,如果采用的是大内核的体系结构,CPU只需要进行两次状态转变就可以了。

  而如果采用的是微内核体系结构,整个过程的处理就需要有六次变态。

image-20230305135528724

  需要注意的是,CPU的状态转换,这件事情是有成本的,需要消耗不少的时间。因此,频繁地切换CPU的状态,是会降低系统性能的。

【注意】此处“变态”这个词只是我们为了方便表达,正确的说法应该是“CPU状态的转换”。

小结

image-20230305135751622

典型的 大内核/宏内核/单内核 操作系统:Linux、UNIX

典型的 微内核 操作系统:Windows NT

(了解即可,重要的是知道两种体系结构各自的优缺点)

相关文章:

[1.4]计算机系统概述——操作系统的体系结构

第一章 计算机系统概述 操作系统的体系结构 大内核/单内核/宏内核微内核 通过之前的学习,我们知道计算机系统的层次结构是这样的。 但是操作系统的内部其实还可以再进一步地划分。 一部分是内核的功能,一部分是非内核的功能。 操作系统最核心的功能&…...

FPGA的GigE Vision IP相机图像采集方案设计,转换为千兆UDP,支持10G MAC

1 概述 GigE Vision是一个比较复杂的协议,要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的配置和图像采集功能,则只需要实现其中小部分功能即可。本文对原有GigE Vision协议的结构进行了裁剪,仅保留设备搜索…...

大数据相关面试题

linux 常见linux高级命令? top、iotopnetstatdf -hjmap -heaptarrpmps -efshell 用过的shell工具? awk Awk 命令详解 - 简书 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来…...

AI绘画第二步,抄作业复现超赞的效果!

上一篇,讲了如何安装AI绘画软件,但是装完后发现生成效果很渣!而网上那些效果都很赞。真的是理想很丰满,现实很骨感。今天就是来聊聊如何抄作业,最大程度的还原那些超赞的效果。换一种说法就是,教大家如何使…...

Python的并发编程

我们将一个正在运行的程序称为进程。每个进程都有它自己的系统状态,包含内存状态、打开文件列表、追踪指令执行情况的程序指针以及一个保存局部变量的调用栈。通常情况下,一个进程依照一个单序列控制流顺序执行,这个控制流被称为该进程的主线…...

【Linux】基本系统维护命令

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享C/C相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...

高数:数列的收敛

数列特点无限个数特定顺序数列和集合区别集合可以乱序,数列不行集合出现重复元素依然相同,数列出现新的重复元素就不相等[1,2,3,4][1,2,3,3,4]对集合来说相等&#xff0c…...

不平凡的一天——

作者:指针不指南吗 专栏:个人日常记录 🐾或许会很慢,但是不可以停下来🐾 文章目录1.自我介绍2.上学期3.不凡的一天4.新学期写个博客,简单记录一下,新学期加油!!&#xff…...

【Java基础】Map遍历的5种方式

目录 创建一个集合 方式一:Iterator 迭代器遍历 map.entrySet().iterator(); map.keySet().iterator(); 方式二:For Each方式遍历 map.forEach(BiConsumer action) 方式三:获取Collection集合 map.values().forEach() 方式四&#x…...

第十四届蓝桥杯三月真题刷题训练——第 2 天

目录 题目1:奇数倍数 代码: 题目2:求值 代码: 题目3:求和 代码: 题目4:数位排序 代码: 题目1:奇数倍数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即…...

自然语言处理历史最全预训练模型(部署)汇集分享

什么是预训练模型?预练模型是其他人为解决类似问题而创建的且已经训练好的模型。代替从头开始建立模型来解决类似的问题,我们可以使用在其他问题上训练过的模型作为起点。预训练的模型在相似的应用程序中可能不是100%准确的。本文整理了自然语…...

csdn写文章自定义表格怎么做

前言 CSDN写文章时,经常会用到表格,不同于Word文档中直接插入表格(自定义几行几列),使用CSDN自带的md文本编辑器时,很难快速插入想要的表格样式,追究原因,也是因为md的语法问题&…...

Pytorch处理数据与训练网络问题汇总(协同训练)

基础语法 模型训练 【Swin-Unet】官方代码预训练权重加载函数load_from() 实际上由于SwinUnet是一个encoder-decoder对称的结构,因此加载权重时,作者并没有像通常那样仅仅加载encoder部分而不加载decoder部分,而是同时将encoder的权重对称地…...

机器学习:基于神经网络对用户评论情感分析预测

机器学习:基于神经网络对用户评论情感分析预测 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞&#x1f4…...

Vue3之组件间传值避坑指南

组件间传值的两个坑 我们都知道父组件可以把值传递到自组件中,但是有时候子组件需要修改这个父组件传递过来的这个值,我们可以想象下能修改成功吗?这是坑之一。我们在组件间传值的时候,都是一个属性名对应一个值,接收…...

02-问题思考维度:抓住核心用户、场景化分析、需求收集与辨别、用户故事

文章目录2.1 抓住核心用户2.1.1 为什么要抓住核心用户2.1.2 核心用户的特征根据不同维度,描述核心用户2.1.3 如何抓住核心用户2.2 场景化分析2.2.1 场景五要素2.2.2 场景化分析方法2.2.3 场景化分析方法的应用2.3 需求收集与辨别2.3.1 需求的定义及层次2.3.2 需求收…...

C 语言编程 — GCC Attribute 语法扩展

目录 文章目录目录Attribute 属性扩展机制__attribute__((packed))__attribute__((aligned(n)))__attribute__((noreturn))__attribute__((unused))Attribute 属性扩展机制 GCC 的特点之一就是 Attribute 语法扩展机制,通过使用 __attribute__ 关键字可以设置以下对…...

LeetCode 热题 C++ 399. 除法求值 406. 根据身高重建队列

LeetCode 399 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其…...

提升Mac使用性能的5大方法,CleanMyMacX 2023非常的好用哦~

近些年伴随着苹果生态的蓬勃发展,越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现,它的使用逻辑与Windows存在很多不同,而且随着使用时间的增加,一些奇奇怪怪的文件也会占据有限的磁盘空间,进而影响使用…...

一步一步学会给Fritzing添加元器件-丰富你的器件库

文章目录1、获取元器件文件2、单个添加元器件3、批量加入(1)、通过别人发布的bin文件加载(2)、终极大招(拖)4、制作自己器件文章出处: https://blog.csdn.net/haigear/article/details/12931545…...

解锁AI编程新范式:Continue插件的颠覆性开发体验

解锁AI编程新范式:Continue插件的颠覆性开发体验 【免费下载链接】continue ⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI 项目地址: https://gitcode.com/GitHub_Trending/co/continue 你是否曾在深夜调试…...

CANoe Trace中的Time列:从基础定义到高级时序分析实战

1. CANoe Trace中的Time列基础解析 第一次打开CANoe的Trace窗口时,那排密密麻麻的数据确实让人头皮发麻。但别担心,咱们先来搞定最左边那个看似简单却至关重要的Time列。这个时间戳就像车载网络的"心电图"记录仪,精确到微秒级别地记…...

3个核心技巧:快速掌握免费在线PPT编辑器PPTist的创作秘诀

3个核心技巧:快速掌握免费在线PPT编辑器PPTist的创作秘诀 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing…...

通义千问1.5-1.8B-Chat-GPTQ-Int4实战:微信小程序集成AI对话功能开发指南

通义千问1.5-1.8B-Chat-GPTQ-Int4实战:微信小程序集成AI对话功能开发指南 最近在做一个宠物社区的小程序,想加个智能客服功能,让用户能随时问问养宠问题。一开始觉得这事儿挺复杂,得自己搞个大模型服务器,成本高不说&…...

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中,我们经常遇到一个典型问题:本地机器性能不足,无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...

从智能门铃到工业质检:拆解5个嵌入式AI落地案例,看模型压缩和硬件选型怎么选

从智能门铃到工业质检:5个嵌入式AI实战案例与选型策略 智能门铃的摄像头突然捕捉到一张陌生面孔,300毫秒内完成本地人脸比对并推送到主人手机——这背后是嵌入式AI在消费电子领域的典型应用。当算法工程师面对瑞芯微RK3588和地平线旭日X3两颗芯片的选型表…...

避开这些坑!在PX4 1.14.0上添加自定义串口传感器的完整避坑指南

PX4 1.14.0自定义串口传感器开发实战:从设备注册到数据解析全链路避坑指南 当你在PX4飞控上尝试接入一款新型激光雷达时,是否遇到过这样的场景:按照官方文档一步步操作,编译通过后却发现传感器始终无法输出有效数据?本…...

国行iPhone Siri功能意外上线又撤回,背后暗藏玄机

iPhone“Siri”变身“Apple智能与Siri”,意外功能短暂亮相3月31日凌晨,部分国行iPhone用户惊喜发现,手机设置中的“Siri”入口悄然变更为“Apple智能与Siri”,同时还短暂解锁了端侧模型下载及AI功能。不过,这一新鲜体验…...

3步掌握B站视频下载:解锁大会员4K高清内容

3步掌握B站视频下载:解锁大会员4K高清内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader Bilibili-downloader是你获取B站…...

手把手教你学<基于 Linux 的 NPU 协处理器固件开发>专栏第1章 入门:

1.2 典型 AI 芯片架构:主核 Linux + NPU 协处理器 在上一节我们明确了NPU是依附于Linux主核的专用AI协处理器,属于主从配合的工作模式,这一节我们就深入拆解端侧AI芯片最主流的“Linux主核+NPU协处理器”异构架构。结合大家日常接触的代码仓库管理、编译脚本执行、固件烧录…...