用户态与内核态切换

甲戌神展子江
• 阅读 4911

用户态与内核态切换


用户态切内核态, 是用户程序在运行中的状态切换;
用户程序在运行中遇到申请外部资源, 比如程序执行中需要访问: 磁盘内存分配网卡声卡, 甚至主板LED指示灯时, 就会发生用户态到内核态的切换.
比如读写文件: open/read/write 就会从用户态切换到内核态;
比如申请内存: C语言的: malloc/ java语言 new 一个对象 都需要申请内存空间;
包括select/poll/epoll 都是系统调用;
用户态到内核态的切换, 一般有三种方式: 系统调用异常中断; 系统调用 又有 进程文件设备信息通信等的调用;

查看内核提供的可用系统调用可以用: man syscalls
可以把syscalls导出来看下:
man syscalls|col -b >syscalls.txt

系统调用大体分类如下:

进程调用: 终端命令exit fork;
文件调用: chmod chown;
设备调用: read write;
信息读取: 比如cpu信息 getcpu;
通信: pipe mmap(文件内存映射)

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
strace命令使用
命令介绍strace是Linux环境下的一款程序调试工具,用来输出一个应用程序所使用的系统调用。strace底层使用内核的ptrace特性来实现其功能。什么是系统调用?系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互,是操作系统留给
亚瑟 亚瑟
4年前
IO多路复用
用户空间和内核空间Userspace(用户空间):用户程序的运行空间Kernelspace(内核空间):Linux内核的运行空间当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。Kernelspace可以执行任意
Stella981 Stella981
3年前
Linux系统调用原理
一、什么是系统调用系统调用 跟用户自定义函数一样也是一个函数,不同的是 系统调用 运行在内核态,而用户自定义函数运行在用户态。由于某些指令(如设置时钟、关闭/打开中断和I/O操作等)只能运行在内核态,所以操作系统必须提供一种能够进入内核态的方式,系统调用 就是这样的一种机制。系统调用 是Linux内核提供的一段
Stella981 Stella981
3年前
Linux下的strace命令介绍
简介strace常用来跟踪进程执行时的系统调用和所接收的信号。在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义
Stella981 Stella981
3年前
Linux内核编译及添加系统调用
1总体设计思路系统调用的本质是调用内核函数,以内核态运行程序。为了在内核态下运行,本实验针对Linux的内核进行修改,增加自定义系统调用函数实现用户态程序对任意进程的nice值进行修改或者读取来进行测试。2主要函数的接口设计核心态程序SYSCALL\_DEFINE3(mysetnice,pid\_t,pid,int,flag,i
Stella981 Stella981
3年前
Go实现FastCgi Proxy Client 系列(三)优化篇
墨迹一点个人琐碎最近比较忙,以致于很久都没有写blog了,但是,golang的水平自认为是总算入门了。协程的个人理解网上的说法一般都是协程是轻量级线程。我个人认为协程的好处1.小2.无需在用户态和内核态切换(完全在用户态)3.无需线程上下文切换的开销(因为之上的好处)4.编码简单(原
Wesley13 Wesley13
3年前
Linux2.6
一、4G线性空间的使用1.03G属于用户空间,无论是用户态还是内核态都可以寻址,但是内核一般不访问这里的数据34G属于系统空间,只有内核态的进程才可以访问。二、系统空间1.3G4G的系统空间的使用(1)3G3Ghigh\_memory:对前896MBRAM进程映射的线性地址(2)high\_memory
Stella981 Stella981
3年前
Linux探秘之用户态与内核态
关注“aCloudDeveloper”云计算领域大小事,你都能尽在掌握 Unix/Linux的体系架构如下图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。!(https://oscimg.oschina.net/oscnet/5b4a8
Wesley13 Wesley13
3年前
IO模型详解
IO编程包括:文件读写操作StringIO和BytesIO内存中操作文件和目录OS序列化jsonpickling操作系统内核空间(缓冲区)收发数据:内核态(内核空间)》用户态用户空
Stella981 Stella981
3年前
Linux 面试知识点笔记
问:linux的体系结构?!(https://oscimg.oschina.net/oscnet/7e41e5605a979bbf6cc4263647ae72292f8.jpg)体系结构主要分为用户态(用户上层活动)和内核态内核:本质是一段管理计算机硬件设备的程序系统调用:内核的访问接口,是一种能再简化的操作
DPDK简介和原理
DPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。