10. 谁再和我提内核/用户态, 我跟谁…………

[Android][Linux][Netlink]内核态和用户态使用netlink方法总结 一、Netlink概述 二、用户态如何使用netlink 三、内核态如何使用netlink 四、内核态和用户态之间使用netlink实例(NETD) 五、内核态和用户态之间使用netlink实例(SYN FIREWALL) 一、Netlink概述 (本段摘抄自网络) Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket A 阅读详情

前言

谁再和我提内核/用户态, 我跟谁……

image

记不清哪天了,

咸鱼刚入职场,

依稀记得某天的下午时光,

公司内的一群大牛, 聚在一起    image

尽讨论一些高大上的技术话题, 或底层原理, 或架构……

时不时传来一些专业术语“用户态”,“内核态”…………

咸鱼在边上默默听着, 也不敢插嘴,   image

只能仰望大佬, 同时暗下决心,  今天一定要把这两个概念搞懂!

那么, 用户态和内核态代表究竟是个啥?

用户态和内核态

简而言之, 内核态和用户态就是linux的权限划分.

  • 内核态(Kernel Mode)
运行操作系统程序, 操作硬件
  • 用户态(User Mode)
运行用户程序

为什么要进行这样的划分呢?

其实本质是为了保证系统不会崩溃!

你总不希望系统跑你的程序时,

因为你的程序有bug, 导致操作系统崩溃吧!

特权级别及指令划分

这两种运行级别有不同的特权, 可以运行不同的指令集

特权级别一般分为四种

  • R0

  • R1

  • R2

  • R3

从R0到R3特权能力依次降低

  • R3相当于用户态
当程序运行在R3级特权上时, 就可以称之为运行在用户态.
  • R0相当于内核态
当程序运行在0级特权级上时,就可以称之为运行在内核态.

不同级别能够运行不同的指令集合

  • 特权指令
只能由操作系统使用、用户程序不能使用的指令.
  • 非特权指令
用户程序可以使用的指令.

状态的切换

用户态和内核态可以互相切换.

运行在用户态下的程序不能直接访问操作系统内核数据结构和程序.

当我们在系统中执行一个程序时, 大部分时间是运行在用户态下的,

在其需要操作系统帮助完成某些它没有权力和能力完成的工作时,

就会切换到内核态.

用户态—>内核态

可以通过三种途径

  • 系统调用(访管指令)(用户进程主动发起)
为了安全, 应用程序无法直接调用硬件的功能,
  • 异常(被动)
  当CPU在执行运行在用户态下的程序时,
  • 外围设备的中断(被动)
  当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,

内核态—>用户态

  • 设置程序状态字PSW

两种状态的区别

这两种状态的主要差别是

  • 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的

  • 处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的.

谁再和你提内核/用户态, 请把怼飞他!

image

请关注我的订阅号

订阅号.png

netlink内核态和用户态使用 vold进程: 1.管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化 2.3G 4G 模块支持 G3Dev.cpp ----- usb_modeswitch -W -I … netlink Netlink是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的socketAPI就可以使用netlink提供的强大功能,内核态需要使用专门的内核A... 阅读详情

相关推荐

Linux用户态与内核态通信的几种方式

Linux内核态与用户态通信的常用方法 procfs(/proc) sysctl(/proc/sys) sysfs(/sys) netlink 套接口 ioctl(系统调用) 共享内存 procfs(/proc) procfs 是 进程文件系统 的缩写,它本质上是一个伪文件系统,为什么说是 伪 文件系统呢?因为它不占用外部存储空间,只是占用少量的内存,通常是挂载在 /proc 目...

QQ2558030393的博客 1266

netlink实现与使用方法详解(用户态/内核态)

一、什么是netlink Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 在Linux 内核中,使用netlink 进行应用与内核通信的应用有很多,如 路由 daemon(NETLINK_ROUTE) 用户态 socket 协议(NETLINK_USERSOCK) 防火墙(NETLINK_FIREWALL) netfilter 子系统(NETLINK_NETFILTER) 内核事件向用户态通知(NETLINK_KOBJECT

weixin_42238049的博客 1万+

Linux内核态与用户态进程通信方法-用户上下文

运行在用户上下文环境中的代码是可以阻塞的,这样,便可以使用消息队列和 UNIX 域套接字来实现内核态与用户态的通信。但这些方法的数据传输效率较低,Linux 内核提供 copy_from_user()/copy_to_user() 函数来实现内核态与用户态数据的拷贝,但这两个函数会引发阻塞,所以不能用在硬、软中断中。一般将这两个特殊拷贝函数用在类似于系统调用一类的函数中,此类函数在使用中往往"穿梭

敏于思,慎于行 7372

用户态和内核态

前言 学了C++后发现之前对Java中NIO的理解还是太片面了,所以现在开始更加深入的去学习系统中的IO。学习IO的所有模型可以戳这篇10分钟看懂, Java NIO 底层原理。但是在看之前要先明白操作系统中的用户态和内核态。 值得注意的是Java中的NIO并不是非阻塞式IO(NoneBlocking IO),而是多路复用IO(New IO)。 用户态和内核态 用户态字面理解就是用户使用的...

shenshaoming的博客 967

内核态代码直接使用用户态数据的注意事项

内核态代码直接使用用户态数据的注意事项,copy_from_user,SMAP,CONFIG_X86_SMAP,permissions violation

zhaoxin1989的博客 4386

Linux系统中内核态、用户态和零拷贝技术解析

没有 DMA ,计算机程序访问磁盘上的数据I/O 的过程是这样的:CPU 先发出读指令给磁盘控制器(发出一个系统调用),然后返回;磁盘控制器接受到指令,开始准备数据,把数据拷贝到磁盘控制器的内部缓冲区中,然后产生一个中断;CPU 收到中断信号后,让出CPU资源,把磁盘控制器的缓冲区的数据一次一个字节地拷贝进自己的寄存器,然后再把寄存器里的数据拷贝到内存,而在数据传输的期间 CPU 是无法执行其他任务的。可以看到,整个数据的传输有几个问题:一是数据在不同的介质之间被拷贝了多次;

嵌入式技术开发 1968

linux系统中的用户态和内核态

在Linux系统中,用户态和内核态是两种不同的运行模式,它们主要区别在于程序所处的权限和访问硬件资源的方式。

tuziaaa的博客 2250

用户态网络协议栈还是内核协议栈?

目录 文章目录目录前文列表用户态网络协议栈简述内核协议栈存在的问题总结参考文档 前文列表 《Linux 内核网络协议栈》 《DPDK 网络加速在 NFV 中的应用》 用户态网络协议栈简述 用户态网络协议栈的底层支撑技术称为「完全内核旁路(Full Kernel Bypass)或部分内核旁路」,其思路是绕过内核,直接将网络硬件设备交给在用户空间运行的应用程序使用,常见的内核旁路技术有 PF_RING...

烟云的计算 4001

用户态到内核态的转换原理

想象一下,操作系统就像一栋大楼,有不同的楼层代表不同的权限级别:🏠 用户态(User Mode)🏛️ 内核态(Kernel Mode)这种设计主要是为了安全性和稳定性。就像银行系统一样:主要有三种方式触发这种转换:应用程序主动请求操作系统服务。常见系统调用:硬件设备主动通知CPU有事件发生。中断类型:程序执行时出现错误或特殊情况。异常类型:用户应用程序处理器操作系统内核硬件设备程序正常运行在用户态执行系统调用指令1. 保存当前状态保存寄存器到栈保存程序计数器2. 切换到内核态提升权限级别切换到内核栈跳转

苦哈哈的 C++ 程序员,写这个技术博客不是为了装逼,也不是为了立人设,是为了收割流量 1207

OTN设备核心知识速记

本文章为工作笔记,若有错误,还需大家指正。不定期更新。

Hiddengold的博客 2648

Android手机免root玩转Kali NetHunter:Termux保姆级安装指南(附Kex VNC配置)

本文提供了一份详细的Android手机免root安装Kali NetHunter的保姆级指南。通过使用Termux终端模拟器,用户无需解锁Bootloader或获取root权限,即可在普通安卓设备上部署完整的Kali Linux渗透测试环境。教程涵盖了从环境准备、NetHunter核心安装到配置Kex VNC实现图形桌面访问的全过程,并附带了电脑投屏与常见问题解决方案,旨在打造一个便携的移动安全学习与测试平台。

weixin_29208327的博客 294

linux用户态与内核态通过字符设备交互

Linux内核态与用户态交互之字符设备

Yvan Jiang的专栏 2254

Nginx/OpenResty目录穿越漏洞复现

Nginx/OpenResty目录穿越漏洞复现 漏洞背景: 2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。 Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其运行Lua脚本。 影响版本: nginx <= v1.17

小小猪的博客 1万+

用户态和内核态的区别

内核态(Kernel Mode):运行操作系统程序,操作硬件用户态(User Mode):运行用户程序。

神秘人的博客 828

基于 openEuler 24.03 LTS 源码编译安装 Zabbix 7.4

Zabbix是一款开源的企业级分布式监控系统,支持网络、服务器、应用等多种IT资源的监控。核心功能包括数据采集、告警通知、可视化展示等,采用Server/Agent架构,支持多种操作系统。本文详细介绍了在openEuler 24.03系统上部署Zabbix 7.4.2的完整流程,包括环境准备、MySQL配置、PHP/Apache安装、Zabbix编译安装等步骤,为构建企业级监控系统提供了实践指导。

广然笔记 1188

00 — Intel xe SVM 内核实现精读系列专栏导读

本文系统介绍了Intel Xe GPU的共享虚拟内存(SVM)实现机制。第一部分通过概念地图阐述SVM的六个核心概念及其关系;第二部分通过三个测试用例解析SVM关键功能:fault生命周期验证、madvise与VRAM迁移、跨GPU一致性;第三部分深入内核实现,包括初始化/销毁流程、Page Fault处理、MMU Notifier失效路径、异步垃圾回收、VRAM迁移机制、madvise实现原理,以及与ROCm SVM的对比。文章建议按功能模块顺序学习,从基本概念到测试用例,再深入内核实现细节,最后对比不同

图形/计算GPU的驱动与虚拟化技术分享园地 1659

怎样去理解Linux用户态和内核态

在Linux技术讨论中经常会用户态和内核态术语脱口而出,可你们想过吗?用户态和内核态代表是什么?本片文章,就来谈一谈这个话题。 我们先来看一张Linux整体架构图。 从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿呢?控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。 用户态就是提供应用程序运行的空间,为了使应用程

weixin_42383680的博客 254

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4828

内核态权限和用户态权限

内核态权限和用户态权限 系统调用 这个可以看一下系统调用的过程,应用代码通过int 80发起对系统调用,通过中断处理后执行对应的系统函数,这时候的权限也变了,即内核态。比如cpu有0,1,2,3四种权限等级,有些操作是0等级才能做的,linux使用0和3两种,就是内核态和用户态。简单来说,就是低权限的应用代码通过高权限的操作系统去做某些事情,系统提供的入口就是系统调用。 这是处理器的两种工作模式。差别就是内核模式下什么指令都可以执行,用户模式下有些指令一执行就会引发内部中断。内核模式、用户模式,这只是个简单

惜兰blog 872

SAP 清账凭证 完整生成逻辑(超详细原理 + 底层规则 + 分录逻辑 + 互清特殊规则)

【SAP清账凭证核心逻辑摘要】(149字) SAP清账凭证生成遵循两大类型:1)资金往来对冲型(如F-32/F-44互清),强制生成含完整借贷分录的独立凭证,通过AUGDT/AUGBL字段绑定未清项,典型场景如应收冲应付(借:应付账款 贷:应收账款);2)纯核销型(如F.13自动清账),仅标记行项目状态不产生实际分录。关键规则:①仅未清项管理科目可清账;②互清必须配置主数据关联;③差额清账自动补差(折扣/汇差);④原始凭证永不修改,仅更新BSIK/BSAD等表状态。清账凭证均保留可追溯性,支持FBRA重置还

金牌架构师 542

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机内核态和用户态,用户态和内核态的区别是什么

用户态和内核态的区别是,内核态运行操作系统程序,操作硬件,用户态运行用户程序;当程序运行在3级特权级上时,可以称之为运行在用户态,当程序运行在0级特权级上时,称之为运行在内核态。本文操作环境:windows10系统、thinkpad t490电脑。区别分析如下:1.操作系统需要两种CPU状态内核态(Kernel Mode):运行操作系统程序,操作硬件用户态(User Mode):运行用户程序2.指...

weixin_29752191的博客 1677

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux内核态申请用户态内存空间的方法

目录 一、使用brk系统调用 二、使用set_fs、get_fs 三、do_mmap或者sys_mmap_pgoff 前面文章这里、这里介绍过,内核空间跟用户地址空间是隔离的,正常情况下用户态访问不了内核地址空间;为了系统安全加入smap机制的内核也不允许内核随便访问用户态内存。那么如果有需求需要在内核态用到用户态地址空间,该怎么办呢,笔者前段时间就遇到这个问题,本文将分享下几种解决方案,也作为笔记记录之。 以下是维基百科中内核态跟用户态关系图: 可以看出用户态调用底层相关的接口都是通.

weixin_42915431的博客 3399

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux 用户态和内核态通信几种方式

linux 用户态和内核态通信方式手段

weixin_43999769的博客 1071

Linux学习笔记】信号的产生和用户态和内核态

本文摘要了Linux信号处理机制的核心概念,包括信号递达、未决状态和阻塞状态的区别。重点介绍了信号在内核中的表示方式,通过位图存储未决和阻塞标志。文章详细讲解了信号集操作函数(如sigemptyset、sigaddset等)和关键系统调用sigprocmask(修改信号屏蔽字)与sigpending(获取未决信号集)。最后通过实验代码演示了信号处理过程,包括自定义信号处理函数的实现和信号状态的实时监控。这些知识是理解Linux进程间通信和异常处理机制的基础。

大白的编程日记. 955
上一篇: 别说我没提醒你……
下一篇: 41. 从零开始学springboot整合ElasticSearch
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值