首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用户内核态、用户内核

一、用户内核内核用户态是操作系统的两种运行级别,用于区分不同程序的不同权利。 内核态就是拥有资源多的状态,或者说访问资源多的状态,也称为特权态。...二、用户内核 内核在创建进程的时候,在创建task_struct的同时,会为进程创建相应的堆栈。每一个进程都有两个,一个用户,存在于用户空间;一个内核,存在于内核空间。...当进程在用户空间运行时,CPU堆栈指针寄存器里面的内容都是用户地址,使用用户;当进程在内核空间时,CPU堆栈指针寄存器里面的内容是内核空间地址,使用内核。...进程陷入到内核态后,先把用户态堆栈的地址保存在内核之中,然后设置堆栈指针寄存器的内容为内核的地址,这样就完成了用户内核的转换;当进程从内核态恢复到用户态之后时,在内核态之后的最后将保存在内核里面的用户的地址恢复到堆栈指针寄存器即可...这样就实现了用户内核的互转。 那么,知道从内核转到用户态时,用户的地址是在陷入内核的时候保存在内核里面的,但是在陷入内核的时候,如何知道内核的地址?

1.9K20

【转发赠书】详解多核心、用户内核

冬瓜哥收集了 “大话存储” ”大话计算机” 两个公众号中帖子下的留言如下(蓝色表示往期已回答,红色表示本期选中): 计算的本质是什么 指令系统 我想看分支预测的章节,Intel的漏洞这个有关...特别是8p的选路 ddr 内存初始化浅析memory training 介绍内存MMIO的译码规则内存在BIOSOS下的布局情况 memory mapdecode这两个概念,特别是decode...5.2.3 向编译器描述数据的编排方式 cache组关联 7.1.3 DMA与缓存的一致性 第一章入门部分 10.2.1.1 用户内核 10.9.1.2 9.5.3.3 CUDA对线程的调度方式...关于用户内核,当线程运行到内核态的时候,需要使用专门的来存储函数上下文。 ? ? ? ? ? ? ? ? ? ? ? ?

51030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux 中的各种:进程 线程 内核 中断

    各种的内存位置? 介绍完的工作原理用途作用后,我们回归到 Linux 内核上来。...内核分成四种: 进程 线程 内核 中断 一、进程 进程是属于用户进程 虚拟地址空间 (Virtual Address Space) 密切相关。...进程的初始化大小是由编译器链接器计算出来的,但是的实时大小并不是固定的,Linux 内核会根据入情况对区进行动态增长(其实也就是添加新的页表)。...二、线程Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程进程不加区分的统一到了 task_struct 中。...三、进程内核 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的并不是原先进程用户空间中的,而是一个单独内核空间的,这个称作进程内核

    3.4K20

    Linux 中的各种:进程 线程 内核 中断

    各种的内存位置? 介绍完的工作原理用途作用后,我们回归到 Linux 内核上来。...内核分成四种: 进程 线程 内核 中断 一、进程 进程是属于用户进程 虚拟地址空间 (Virtual Address Space) 密切相关。...进程的初始化大小是由编译器链接器计算出来的,但是的实时大小并不是固定的,Linux 内核会根据入情况对区进行动态增长(其实也就是添加新的页表)。...二、线程Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程进程不加区分的统一到了 task_struct 中。...三、进程内核 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的并不是原先进程用户空间中的,而是一个单独内核空间的,这个称作进程内核

    2.9K50

    一文搞懂 | Linux 中的各种(进程 线程 内核 中断

    各种的内存位置? 介绍完的工作原理用途作用后,我们回归到 Linux 内核上来。...内核分成四种: 进程 线程 内核 中断 一、进程 进程是属于用户进程 虚拟地址空间 (Virtual Address Space) 密切相关。...进程的初始化大小是由编译器链接器计算出来的,但是的实时大小并不是固定的,Linux 内核会根据入情况对区进行动态增长(其实也就是添加新的页表)。...二、线程Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程进程不加区分的统一到了 task_struct 中。...三、进程内核 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的并不是原先进程用户空间中的,而是一个单独内核空间的,这个称作进程内核

    6.7K33

    一文读懂 | Linux 中的各种:进程 线程 内核 中断

    各种的内存位置? 介绍完的工作原理用途作用后,我们回归到 Linux 内核上来。...内核分成四种: 进程 线程 内核 中断 一、进程 进程是属于用户进程 虚拟地址空间 (Virtual Address Space) 密切相关。...进程的初始化大小是由编译器链接器计算出来的,但是的实时大小并不是固定的,Linux 内核会根据入情况对区进行动态增长(其实也就是添加新的页表)。...二、线程Linux 内核的角度来说,其实它并没有线程的概念。Linux 把所有线程都当做进程来实现,它将线程进程不加区分的统一到了 task_struct 中。...三、进程内核 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的并不是原先进程用户空间中的,而是一个单独内核空间的,这个称作进程内核

    1.8K20

    Linux内核IO技术详解

    中间的黑色实线是用户内核态的分界线。 从上往下分析这张图,首先是C语言stdio库定义的相关文件操作函数,这些都是用户态实现的跨平台封装函数。...Linux内核中的IO 这一小节来看Linux内核的IO的结构。...先上一张全貌图[4]: 由图可见,从系统调用的接口再往下,Linux下的IO致大致有三个层次: 文件系统层,以 write 为例,内核拷贝了write参数指定的用户态数据到文件系统Cache中,并适时向下层同步...设备层,通过DMA与内存直接交互,完成数据具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap、Direct IO,这些机制怎么Linux IO联系起来呢...这个机制更狠,直接让用户块IO层对接,直接放弃Page Cache,从磁盘直接用户态拷贝数据。好处是什么?

    2.6K10

    Linux 内核的网络协议

    前言 本文主要记录 Linux 内核网络协议的运行原理 数据报文的封装与分用 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议中,然后逐一通过 TCP/IP 协议族的每层直到被当作一串比特流送入网络...Linux 内核网络协议 协议的全景图 协议的分层结构 逻辑抽象层级: 物理层:主要提供各种连接的物理设备,如各种网卡,串口卡等。...网络协议层(Network protocols):对应 IP layer Transport layer。毫无疑问,这是整个内核网络协议的核心。...协议的数据结构 msghdr:描述了从应用层传递下来的消息格式,包含有用户空间地址,消息标记等重要信息。 iovec:描述了用户空间地址的起始位置。...协议无关层系统调用接口层:当用户需要接收数据时,首先根据文件描述符 inode 得到 socket 结构体 sock 结构体,然后从 sock 结构体中指向的队列 recieve_queue 中读取数据包

    3K61

    如何学习 Linux 内核网络协议

    协议的细节 下面将介绍一些内核网络协议中常常涉及到的概念。...而这里提到的 socket sock 是内核中的两个数据结构,其中 socket 向上面向用户,而 sock 向下面向协议。 如下图所示,这两个结构实际上是一一对应的。...L3->L4 我们知道网络协议是分层的,但实际上,具体到实现,内核协议的分层只是逻辑上的,本质还是函数调用。...Netfilter Netfilter 是报文在内核协议必然会通过的路径,我们从下面这张图就可以看到,Netfilter 在内核的 5 个地方设置了 HOOK 点,用户可以通过配置 iptables...fib 可以理解为一个数据库,数据来源是用户配置或者内核自动生成的路由。

    1.5K20

    如何学习 Linux 内核网络协议

    1 协议的细节 下面将介绍一些内核网络协议中常常涉及到的概念。...而这里提到的 socket sock 是内核中的两个数据结构,其中 socket 向上面向用户,而 sock 向下面向协议。 如下图所示,这两个结构实际上是一一对应的。...L3->L4 我们知道网络协议是分层的,但实际上,具体到实现,内核协议的分层只是逻辑上的,本质还是函数调用。...Netfilter Netfilter 是报文在内核协议必然会通过的路径,我们从下面这张图就可以看到,Netfilter 在内核的 5 个地方设置了 HOOK 点,用户可以通过配置 iptables...fib 可以理解为一个数据库,数据来源是用户配置或者内核自动生成的路由。

    1.5K20

    DragonOS的内核traceback

    简介   内核traceback的功能位于kernel/debug/traceback/文件夹中。为内核态提供traceback的功能,打印调用到屏幕上。   ...具体的使用场景如:内核出错的时候,打印调用,以便定位原因。...演示如下图所示: 图片 API void traceback(struct pt_regs * regs) 作用   该接口定义于kernel/debug/traceback/traceback.h中,将会对给定内核进行...参数 regs   要开始追踪的第一层内核帧(也就是的底端) 实现原理   当内核第一次链接之后,将会通过Makefile中的命令,运行kernel/debug/kallsyms程序,提取内核文件的符号表...最后,Makefile中再次调用ld命令进行链接,将kallsyms.o链接至内核文件。   当调用traceback函数时,其将遍历该符号表,找到对应的符号并输出。

    45620

    从 0 开始学 Linux 内核之 android 内核溢出 ROP 利用

    本篇开始学Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86arm指令集的Linux系统提权了,arm指令集的基本都是安卓rootiOS越狱,而mips指令集的几乎没啥人在搞...那么在Linux在怎么把权限从普通用户变成特权用户呢?...cred commit_creds(prepare_kernel_cred(0)); 把当前用户cred设置为该特权cred MSR CPSR_c,R3 从内核态切换回用户态(详情自己百度这句指令...,内核是有大小限制的,在arm32中的大小是0x2000,而thread_info的信息储存在的最底部 所以,如果我们能获取到当前进程在内核中运行时的其中一个地址,我们就能找到thread_info...,但是该指令却只存在于该函数之前,无法找到相关的gadget,之后我想了很多利用该函数的方法,最后测试成功的方法是: 计算有漏洞的溢出函数的ret_fast_syscall函数的距离,在使用ROP

    1.6K00

    从 0 开始学 Linux 内核之 android 内核溢出 ROP 利用

    本篇开始学Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86arm指令集的Linux系统提权了,arm指令集的基本都是安卓rootiOS越狱,而mips指令集的几乎没啥人在搞...那么在Linux在怎么把权限从普通用户变成特权用户呢?...cred commit_creds(prepare_kernel_cred(0)); 把当前用户cred设置为该特权cred MSR CPSR_c,R3 从内核态切换回用户态(详情自己百度这句指令CPSR...,内核是有大小限制的,在arm32中的大小是0x2000,而thread_info的信息储存在的最底部 所以,如果我们能获取到当前进程在内核中运行时的其中一个地址,我们就能找到thread_info...,但是该指令却只存在于该函数之前,无法找到相关的gadget,之后我想了很多利用该函数的方法,最后测试成功的方法是: 计算有漏洞的溢出函数的ret_fast_syscall函数的距离,在使用ROP

    1.5K30

    Linux操作系统原理—内核网络协议

    前言 本文主要记录 Linux 内核网络协议的运行原理 数据报文的封装与分用 image.png 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议中,然后逐一通过 TCP/IP...image.png Linux 内核网络协议 协议的全景图 image.png 协议的分层结构 image.png image.png 逻辑抽象层级: 物理层:主要提供各种连接的物理设备,如各种网卡...网络协议层(Network protocols):对应 IP layer Transport layer。毫无疑问,这是整个内核网络协议的核心。...NOTE:在整个协议实现中 dev.c 文件的作用重大,它衔接了其下的硬件层其上的网络协议层,可以称它为链路层模块,或者设备无关层的实现。...协议无关层系统调用接口层:当用户需要接收数据时,首先根据文件描述符 inode 得到 socket 结构体 sock 结构体,然后从 sock 结构体中指向的队列 recieve_queue 中读取数据包

    3.2K00

    浅墨: 聊聊Linux IO(中)——Linux内核中的IO

    接上一篇浅墨: 聊聊Linux IO(上),先上一张全貌图[4]: ?...由图可见,从系统调用的接口再往下,Linux下的IO致大致有三个层次: 文件系统层,以 write(2) 为例,内核拷贝了write(2)参数指定的用户态数据到文件系统Cache中,并适时向下层同步...设备层,通过DMA与内存直接交互,完成数据具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么Linux IO联系起来呢...假设要去读一个冷文件(Cache中不存在),open(2)打开文件内核后建立了一系列的数据结构,接下来调用read(2),到达文件系统这一层,发现Page Cache中不存在该位置的磁盘映射,然后创建相应的...这个机制更狠,直接让用户块IO层对接,直接放弃Page Cache,从磁盘直接用户态拷贝数据。好处是什么?

    2.3K20

    linux 内核态与用户态_linux内核用户态通信

    大家好,又见面了,我是你们的朋友全君。...2/用户态->内核态 在linux中,用户对设备的操作往往被抽象为对文件的操作。利用这一特性,可以通过注册实现伪字符设备到内核,来实现用户进程内核空间的交互。...4/内核用户态 proc文件系统,是当前内核内核模块,用户交互的主要方式,它通过将虚拟的文件系统挂载在/proc下,利用虚拟文件读写在用户内核态间传递信息。...在实现用户内核交互的各种方式中,netlink的主要特点得意于它继承了 socket的一些基本特性,包括异步通讯,多播,双向性,不需要额外的文件。...发布者:全程序员长,转载请注明出处:https://javaforall.cn/192222.html原文链接:https://javaforall.cn

    2.1K30

    Linux 内核网络协议源码剖析】recvfrom 函数剖析

    大家好,又见面了,我是你们的朋友全君。 继前篇介绍完sendto 数据发送函数 后,这里介绍数据接收函数 recvfrom。...这里sockfd是接收,from那边是发送 前面三个参数分别表示:套接字描述符,指向写出缓冲区的指针写字节数。...return er; //数据包数据部分(数据报)长度 truesize = skb->len; //读取长度检查设置,udp是面向报文的,其接收到的每个数据包都是独立的 //如果用户要求读取的小于可读取的...shouldn't happen but .. */ *err=-EAGAIN; } return skb;//返回该数据包 } skb_copy_datagram() //将内核缓冲区中数据复制到用户缓冲区...发布者:全程序员长,转载请注明出处:https://javaforall.cn/163441.html原文链接:https://javaforall.cn

    2.1K20
    领券