用户态和内核态的简单理解

article/2025/11/10 19:16:30

文章目录

  • linux基础
  • 系统调用和库函数的区别
  • 为什么要区分用户态和内核态?
  • 用户态和内核态的切换耗费时间的原因
  • 哪些情况会出出现用户态和内核态的切换
  • 用户态切换到内核态的三种方式

linux基础

linux的kernel内核外是系统调用,系统调用外是shell、库函数,而应用程序则在最外层
在这里插入图片描述

系统调用和库函数的区别

  • 内核:屏蔽了调用各硬件资源的细节
  • 系统调用:内核提供给用户调用的接口,但系统调用的可移植性差
    移植性差的原因:windows、linux内核的系统调用是不同的,比如:同一个功能提供给用户的函数名、参数都不相同,会出现从一个系统移植到另一个系统无法正常运行。
  • 库函数:为了解决系统调用移植新差的问题,同时封装windows和linux系统调用,对用户提供一个的函数(接口)。
  • 系统调用在内核地址空间执行,而库函数是在用户地址空间调用。

在这里插入图片描述

为什么要区分用户态和内核态?

在CPU指令中,有些指令是非常危险的,如果错用将导致系统崩溃,比如清内存、设置时钟等,所以CPU将指令分为特权指令和非特权指令。对于危险指令,只允许操作系统及其相关模块使用,普通应用程序只能使用不危险的指令。

  • Intel的CPU将特权等级分为4个级别:Ring0~Ring3,而Linux使用Ring3级别运行用户态,Ring0作为内核态。
  • 操作系统启动时对内存进行了划分,操作系统的数据都是存放于内核空间的,用户进程的数据是存放于用户空间的。处于用户态级别的程序只能访问用户空间,而处于内核态级别的程序可以访问用户空间和内核空间。
  • 当一个进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核态

用户态和内核态的切换耗费时间的原因

内核为上层应用使用CPU、存储、IO等硬件资源提供了接口,即系统调用,如果一个应用程序需要用到内核资源,就需执行系统调用的相关语句。
(1)当执行系统调用时,首先会保存现场,然后通过系统调用到内核态执行,最后内核态变为用户态执行用户程序时,需要恢复用户态的现场。
在进入内核的时候需要保存用户态的寄存器,在内核态返回用户态的时候会恢复这些寄存器的内容。

(2)每个线程都有两个栈:用户栈和内核栈,当执行系统调用时,线程就会由用户栈切换到内核栈,而内核代码对用户不信任,需要进行额外的检查。
Linux | 为什么用户态和内核态的切换耗费时间?

哪些情况会出出现用户态和内核态的切换

  • 线程间的切换(上下文):线程上下文切换时,前一个线程的线程线程(切换前最后时刻的数据和指令)会被保存到内核中,而切换回来时需要从内核空间中读取数据恢复现场。
  • Syncronized锁的获取和释放:使用内核中monitor对象

用户态切换到内核态的三种方式

  • 当程序在用户态需要申请外部资源(如声卡、网卡、U盘、磁盘)时,需要从用户态切换到内核态,主要有3种情况需要申请外部资源:
    (1)系统调用
    举例: 创建线程时,需要通过pthread函数库调用内核来创建
    (2)中断
    举例: 当外围设备完成用户请求的操作后,会想CPU发送中断信号。这时CPU会暂停执行下一条指令(用户态)转而执行与该中断信号对应的中断处理程序
    (3)异常:某些异常如缺页异常只能由内核进行处理

http://chatgpt.dhexx.cn/article/RV2PWxL6.shtml

相关文章

度量学习和pytorch-metric-learning的使用

度量学习是学习一种特征空间的映射,把特征映射到具有度量属性的空间中,所谓度量属性是指在某种度量距离(可以是欧氏距离、余弦相似性等)下类内距离更小,类间距离更大。有了这种属性之后,就可以仅根据特征间…

深度度量学习 (metric learning deep metric learning )度量函数总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_16234613/article/details/81210320 曼哈顿距离(CityBlockSimilarity) 同欧式距离相似&#x…

Multi-Scale Metric Learning for Few-Shot Learning(用于小样本学习的多尺度度量学习)

Abstract 本文提出了一种新的小样本学习方法,名字叫多尺度度量学习(multi-scale metric learning, MSML),能提取多尺度特征,学习样本间的多尺度关系,进行少镜头学习分类。提出了一种基于特征金字塔结构的多尺度特征嵌入方法&…

Metric Learning——度量学习

2018年04月10日 15:30:29 敲代码的quant 阅读数:1567 标签: 度量学习metric learning机器学习聚类 更多 个人分类: 机器学习 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FrankieHel…

百面深度学习:基于度量学习的元学习模型

文章目录 Q1 元学习中非参数方法相比于参数方法的优点?Q2 如何用度量学习和注意力机制来改造基于最邻近的元学习方法? 更多基础知识可以查看前文内容 《百面深度学习》之元学习 基于度量学习(Metric Learning)的元学习方法&#…

行人重识别-度量学习

行人重识别-度量学习 前言 和前面介绍到的表征学习一样,度量学习也是基于全局特征学习的一种方法,且被广泛用于图像检索领域。不同于表征学习通过分类或者验证的方式,度量学习目的在于通过网络学习两张图片的相似度。在行人重识别问题上&am…

度量学习方法 - KISSME

KISSME(keep it simple and straightforward metric), 属于有监督的线性度量学习方法,本质上还是学习马氏距离中的矩阵M. 推导 首先,认为对于样本对,它们之间的差异程度(dissimilar)可以通过似然…

论文 基于度量学习的小样本学习研究 阅读心得

论文主要工作: 本文提出带间隔的小样本学习, 提升了所学习嵌入表示的质量。 为引入间隔, 本文根据小样本场景特点提出了多路对比损失, 使得小样本学习模型可以学习到一个更加具有判别性的度量空间,同时泛化误差可以减小…

度量学习1

度量学习: 度量学习作为小样本学习中主要方法之一,在解决小样本问题上应用较广,本篇博客主要介绍几篇metric learning的基础文献。 分别是: (1)Siamese Neural Networks for One-shot Image Recognition &a…

度量学习DML之Circle Loss

度量学习DML之Contrastive Loss及其变种_程大海的博客-CSDN博客 度量学习DML之Triplet Loss_程大海的博客-CSDN博客 度量学习DML之Lifted Structure Loss_程大海的博客-CSDN博客 度量学习DML之Circle Loss_程大海的博客-CSDN博客 度量学习DML之Cross-Batch Memory_程大海的…

度量学习DML之MoCO

度量学习DML之Contrastive Loss及其变种_程大海的博客-CSDN博客 度量学习DML之Triplet Loss_程大海的博客-CSDN博客 度量学习DML之Lifted Structure Loss_程大海的博客-CSDN博客 度量学习DML之Circle Loss_程大海的博客-CSDN博客 度量学习DML之Cross-Batch Memory_程大海的…

【ReID】表征学习和度量学习

文章目录 1.表征学习1.1分类损失1.2验证损失1.3表征学习总结 2.度量学习2.1 Introduction2.2 对比损失2.3 三元组损失2.4 改进三元组损失2.5 四元组损失2.6 TriHard loss2.7 Triple loss with adaptive weights2.8 度量学习总结 3. 总结 表征学习和度量学习是行人重识别最基本的…

度量学习---综述

introduction 度量学习的对象通常是样本特征向量的距离,度量学习的目的是通过训练和学习,减小或限制同类样本之间的距离,同时增大不同类别样本之间的距离。 度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning&#xff0…

Deep metric learning 深度度量学习 总结

最近的工作用是深度度量学习的改进,这里将DML进行一个总结。 根据个人的理解,开篇用一句话介绍一下度量学习: “不同于分类学习,度量学习是通过学习数据之间的相似性程度来获得一个更有意义或者说更具可分性的特征空间。” Tra…

度量学习方法总结

目录 一.距离度量 闵可夫斯基距离 欧式距离(Euclidean Distance): 标准化欧氏距离 (Standardized Euclidean distance ) 曼哈顿距离(ManhattanDistance) 切比雪夫距离(Chebyshevdistance) 马氏距离 马氏距离代…

度量学习

度量学习(Metric Learning) 度量(Metric)的定义 在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的函数。一个具有度量的集合被称为度量空间。 度量学习(Metric Learni…

度量学习(Metric learning、损失函数、triplet、三元组损失、fastreid)

定义 Metric learning 是学习一个度量相似度的距离函数:相似的目标离得近,不相似的离得远. 一般来说,DML包含三个部分, 如下图.。 1)特征提取网络:map embedding 2)采样策略:将一个mini-batch里的样本组合成很多个sub…

度量学习Metric Learning

度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning,DML) 相似度学习 度量学习 是指 距离度量学习,Distance Metric Learning,简称为 DML,是人脸识别中常用传统机器学习方法,由Eric Xing在NIPS 2…

度量学习(Metric Learning)基础概念

一、什么是度量学习? 度量学习 (Metric Learning) 距离度量学习 (Distance Metric Learning,DML) 相似度学习。 在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的函数。一个具有度量的集合被称为度量空…

度量学习——总结

传统方法 User guide: contents — metric-learn 0.6.2 documentation 深度学习 基于深度学习的度量学习方法大都由两个部分组成:特征提取模块和距离度量模块。距离度量模块的任务是使同一类样本间的距离更靠近,而不同类样本间的距离更远离。这一模块…