微内核和零拷贝

news2024/9/22 23:19:20

文章目录

    • 1.操作系统的特性
      • 并发
      • 共享
      • 虚拟
      • 异步
    • 2. 微内核
      • (1) 支撑功能
        • 中断管理
        • 时钟管理
        • 原语操作
      • (2)资源管理功能
        • 进程管理
        • 存储器管理
        • 设备管理
    • 3.零拷贝
      • 什么是零拷贝
      • 传统拷贝方式
      • 零拷贝方式
      • GatherCopy零拷贝
      • mmap零拷贝

1.操作系统的特性

并发

并发:在宏观上,多个事件在同一个时间间隔内发生

并行:在微观上,多个事件在同一时刻发生

共享

        资源复用,系统中的资源可供内存中,多个并发执行的进程共同使用。当系统中资源数量少于多个进程对资源的需求数量时,就会形成对共享资源的争夺。目前主要实现资源共享的方式有两种:

  • 互斥共享
    某些资源只能互斥访问,如打印机,在一段时间内,只允许一个进程访问该资源。这种互斥访问的资源,称为临界资源,或独占资源。

  • 同时访问

    ​ 系统中还有一类资源,允许在一段时间内由多个进程同时访问。不过,对于这个“同时”需要注意,在单处理机环境中,其是宏观上的意义,微观上对这些资源的访问是交替进行,最典型的就是磁盘。

虚拟

        将一个物理实体变为若干个逻辑上的对应物,如物理磁盘对应内存。

  • 时分复用

​ 复用“某设备为一用户服务的空闲时间”为其它用户服务,以达到充分复用设备的目的。使得看起来好像是多个用户在同时使用多台相同设备。这种虚拟技术称为时分复用技术。

  • 空分复用

​ 将一个频率范围比较宽的信道划分为多个频率范围较窄的信道(频带),其中的任何一个频带都仅供一对用户通话。这种频分复用技术就属于空分复用技术。

        这种“虚拟化”思想,在开发中也经常用到,可以解决很多不方便解决的问题。

例如,Dubbo在采用一致性Hash算法实现负载均衡时会出现一个问题:提供者Server的增减,仅对某个提供者的负载状态有影响,对其它提供者没有任何帮助。Dubbo使用“虚拟化思想”对该算进行了优化,默认将一台物理提供者虚拟为了360个,解决了原来的问题。

异步

        进程以不可预知的速度向前推进的特性,称为异步性。如Redis可以实现分布锁,实现分布式协调功能。

2. 微内核

        微内核并非是一个完整的OS,而只是将操作系统中最基本、最核心的功能放入微内核。这些基本功能大体可以划分为支撑功能 资源管理功能两大功能。

(1) 支撑功能

        是内核提供给服务进程模块的基本功能,是服务进程实现功能的支撑,主要分为三方面:

中断管理

        中断处理是内核最基本的功能,没有中断处理就没有OS的并发。当然,为了减少CPU中断的时间,提高程序执行的并发性,内核也只是对中断进行“短暂处理”,继而转入相关其它进程去完成后续工作。

时钟管理

        时钟管理是内核的一项基本功能,例如,时间片轮转调度中,每当时间片用完,时钟管理就会产生一个中断信号,使调度程序重新进行调度。

原语操作

        原语操作,由一组指令构成,用于完成某一特定功能。这组操作中的指令具有的一个特征是,要么全做,要么全不做,即原子性。它们的执行过程是不允许被中断的。原语操作在系统态下执行,常驻内存。

(2)资源管理功能

进程管理

        OS内核可以实现对进程的基础化管理,这些基础化管理功能要么使用频率很高,要么属于可以为其它服务进程提供基础化功能。将这些功能放入到内核中,可以大大提高OS的性能。

存储器管理

        OS中存储器管理相关进程的运行频率非常得高,将它们放入到内核中,可以大大提升存储器的运行效率,提高读写速度。

设备管理

        由于设备管理与计算机硬件紧密相关,所以大部分功能都是常驻内核的。

3.零拷贝

什么是零拷贝

        零拷贝指的是,从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是通过DMA总线技术实现的。零拷贝与具体的编程语言无关,完全依赖于OS,OS支持就可使用,不支持设置了也不起作用。
        DMA(DirectMemoryAccess,直接内存访问)是一种计算机系统内部的数据传输技术,需要DMA总线(硬件的体系结构)的硬件支持。其整个数据传输过程是DMA控制器下完成的。

        零拷贝在计算机内部数据拷贝及网络传输中都大量使用,用于减少CPU消耗和内存带宽占用,减少用户空间与内核空间的拷贝过程,减少用户态与内核态间的切换次数,提高系统效率,提升系统性能。例如远程服务器处理客户端浏览器的主页打开请求过程,就是一个零拷贝在网络传输中的典型应用。下面全部以该场景为例进行分析。

传统拷贝方式

        站在服务器角度,服务器操作系统经历了以下过程:
在这里插入图片描述

        该拷贝方式共进行了16次用户空间与内核空间的上下文切换,以及4次数据拷贝,其中两次拷贝存在CPU参与。

零拷贝方式

在这里插入图片描述

        该拷贝方式共进行了14次用户空间与内核空间的上下文切换,以及3次数据拷贝,但整个拷贝过程均没有CPU的参与,这就是零拷贝。

GatherCopy零拷贝

        该拷贝方式是由DMA完成,当然,需要当前主机的DMA支持GatherCopy方式。

在这里插入图片描述

        该方式中没有数据拷贝到socketbuffer。取而代之的是只是将kernelbuffer中的数据描述信息写到了socketbuffer中。数据描述信息包含了两方面的信息:kernelbuffer中数据的地址及偏移量。

        该拷贝方式共进行了14次用户空间与内核空间的上下文切换,以及2次数据拷贝,并且整个拷贝过程均没有CPU的参与。

mmap零拷贝

        mmap,MemoryMap,存储映射。mmap零拷贝是对零拷贝的改进。当然,若当前主机的DMA支持GatherCopy,mmap同样可以实现GatherCopyDMA的零拷贝。

在这里插入图片描述

​        该方式与普通零拷贝的唯一区别是,应用程序与内核共享了Kernelbuffer。由于是共享,所以应用程序也就可以操作该buffer了。当然,应用程序对于Kernelbuffer的操作,就会引发用户空间与内核空间的相互切换。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TryHackMe-Wreath [网络杀伤链](windows网络)渗透测试

Wreath 复习了几天,把自己写的辣鸡wp都看了看,ad也复了复,顺便还将之前一些不懂和遗漏的一些问题都解决了,所谓温故而知新 在继续红队路径之前,先来玩一玩期待已久的Wreath 了解如何通过破坏面向公众的 Web 计算机并…

分布式缓存的问题

1,Redis缓存穿透问题 Redis缓存穿透问题是指查询一个一定不存在的数据,由于这样的数据缓存一定不命中,所以这样的请求一定会打到数据库上。但是由于数据库里面也没有这样数据,且也没有将这样的null值缓存到数据库,从而造成这样的…

软件设计(十三)-原码、反码、补码、移码

软件设计(十二)数据结构(下)https://blog.csdn.net/ke1ying/article/details/129035300 下面把一个数转成二进制表达形式 原码: 数值1 : 0000 0001 数值-1 : 1000 0001 1 (- 1) : 1000 0010 这是8个…

【安卓逆向】APK修改与反编译回编译

【安卓逆向】反编译修改APK回编译使用工具流程步骤Apktool相关安装与使用常用命令备查APK签名命令备查实战练习反编译查看修改的地方使用Apktool反编译得到产物文件夹并进行修改回编APK实用场景在日常开发我们可能需要替换某些资源或者修改某些代码,但是我们没有源码…

Java基础语法练习题

2023.2.18刷题1、java的4类流程控制语句解析:java的4类流程控制语句循环语句:while,for,do while选择语句(分支语句):if,switch跳转语句:break,continue,break,label异常处理语句&am…

Markdown及其语法详细介绍(全面)

文章目录一、基本语法1.标题2.段落和换行3.强调4.列表5.链接6.图片7.引用8.代码9.分割线10表格二、扩展语法1.标题锚点标题 {#anchor}2.脚注3.自动链接4.任务列表5.删除线6.表情符号7.数学公式三、Markdown 应用1.文档编辑2.博客写作3.代码笔记四、常见的工具和平台支持 Markdo…

加油站会员管理小程序实战开发教程12

我们上一篇介绍了会员数据源的开发,本节我们介绍一下会员注册功能。 首先呢梳理一下会员注册的业务逻辑,如果用户是首次登录,那他肯定还没有给我们的小程序提交任何的信息。那么我们就在我的页面给他显示一个注册的按钮,如果他已经注册过了,那么就正常显示会员的信息,他…

spring cloud 集成 seata 分布式事务

spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server 做存储,如, 可以指定 branch_tabledistributed_lockglobal_tablelock_table 准备一个业务库,比如存放定单&#xff…

【学习笔记2.19】动态规划、MySQL、Linux、Redis(框架)

动态规划 343整数拆分 class Solution {public int integerBreak(int n) {int dp [] new int [n 1];//dp[i]:正整数i拆分后的最大乘积dp[2] 1;for(int i 2;i < n ;i ){for(int j 1;j < i;j ){dp[i] Math.max(dp[i],Math.max(j * (i - j),j * dp[i - j]));} …

Ubuntu安装opencv库3.4.10,并在cmake工程中引入opencv库

Windows下安装不同&#xff0c;Ubuntu安装OpenCV库时&#xff0c;需要事先安装依赖&#xff0c;而且不同OpenCV库所需的依赖可能会有所不同&#xff0c;下面的依赖亲测 3.4.10 和 4.5.5版本的有效&#xff0c;但是4.6以上版本安装可能会报错。 参考链接&#xff1a;https://bl…

【Python】以邮件的方式定时发送一天的股票分析报告

【Python】以邮件的方式定时发送一天的股票分析报告 文章目录【Python】以邮件的方式定时发送一天的股票分析报告1、Python发送邮件1&#xff09;EmailSender封装2&#xff09;可能存在的问题2、jinja2动态渲染html页面3、阿里云OSS搭建图床1&#xff09;Python上传图片到OSS中…

在Linux和Windows上安装sentinel-1.8.5

记录&#xff1a;380场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;安装sentinel-1.8.5。在Windows上操作系统上&#xff0c;安装sentinel-1.8.5。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件。版本&#xff1a;JDK 1.8 sentinel-1.8.5 CentOS 7.9官网地址…

开发板上搭建vsftpd服务器

1、交叉编译vstftp 下载vsftpd源码&#xff1a;vsftpd-3.0.2.tar.gz # tar –xzvf vsftpd-3.0.2.tar.gz # cd vsftpd-3.0.2 修改makefile文件&#xff1a; CC arm-linux-gnueabihf-gcc # make 将vsftpd文件放到/usr/bin/&…

说说Hibernate

当你在实战项目中需要用到SSH时, 如果你之前只用过Mybatis那自然是不能解决问题的, 因为在很多银行类金融类项目中你可能会使用到Hibernate, 那么关于Hibernate你应该要了解什么呢, 本篇文章就以学习Hibernate框架为目的, 巩固在工作中可能需要用到的这种ORM技术, 同时也欢迎家…

PVE硬件直通之强制IOMMU分组

文章目录检查是否直接支持IOMMU分组配置IOMMU分组不直接支持的需要更新内核参考检查是否直接支持IOMMU分组 下面 以SATA控制器为例&#xff0c;看pci设备是否可以直接支持IOMMU分组 /* 打印pci设备详细信息*/ lspci -vv /* 找到SATA controller 段落*/ 16:00.1 SATA controll…

设计模式:模板模式 CRTP设计习语

一、模板模式 1、模板模式 1&#xff09;定义 定义一个操作中的算法的骨架&#xff08;稳定&#xff09;&#xff0c;而将一些步骤延迟&#xff08;变化&#xff09;到子类中。Template Method使得子类可以不改变&#xff08;复用&#xff09;一个算法的结构即可重定义&…

tensorflow 学习笔记(二):神经网络的优化过程

前言&#xff1a; 学习跟随 如何原谅奋力过但无声的 tensorflow 笔记笔记。 本章主要讲解神经网络的优化过程&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损失函数和正则化的使用&#xff0c;用 Python 语言写出 SGD、Momentum、Adagrad、RMSProp、Ada…

2023-02-18干活记录

MathBERT: 耗时&#xff1a;2-3hours(昨天和人聊天聊完了&#xff0c;今天九点才到实验室&#xff0c;呜呜呜一早上就看了个论文) 读论文&#xff1a;BERT-Based Embedding Model for Formula Retrieval Corpus Description&#xff1a; resource:from MSE;the formulas ex…

腾讯云——负载均衡CLB

负载均衡 CLB 提供四层&#xff08;TCP 协议/UDP 协议/TCP SSL 协议&#xff09;和七层&#xff08;HTTP 协议/HTTPS 协议&#xff09;负载均衡。您可以通过 CLB 将业务流量分发到多个后端服务器上&#xff0c;消除单点故障并保障业务可用性。CLB 自身采用集群部署&#xff0c;…

电子技术——共栅和共源共栅放大器的高频响应

电子技术——共栅和共源共栅放大器的高频响应 我们在之前学过无论是是CS放大器还是CE放大器&#xff0c;都可以看做是一个带通&#xff08;IC低通&#xff09;滤波器。在高频处的响应收到输入电容 CinC_{in}Cin​ 的限制&#xff08;主要是米勒效应&#xff09;。因此&#xff…