序言 设备驱动可以运行在内核态,也可以运行在用户态,用户态驱动的利弊网上有很多的讨论,而且有些还上升到政治性上,这里不再多做讨论。不管用户态驱动还是内核态驱动,他们都有各自的缺点。内核态驱动的问题是:系统调用开销大;学习曲线陡峭;接口稳定性差;调试困难;bug致命;编程语言选择受限;而用户态驱动面临 ...
分类:
系统相关 时间:
2018-03-21 17:25:40
阅读次数:
282
Q:怎么从用户态切换到内核态 A:用户程序调用系统调用的时候,用户程序先将系统调用号放入eax,执行int0x80指令触发中断,中断发生时,cpu切入内核态,从 用户栈 切换到 内核栈 ,在 内核栈 中依次压入用户态的寄存器,也就是保护现场,根据中断号在中断向量表中查找对应的中断处理程序,并调用它。 ...
分类:
其他好文 时间:
2018-03-21 13:52:46
阅读次数:
172
众所周知,内存管理是Linux内核中最基础,也是相当重要的部分。理解相关原理,不管是对内存的理解,还是对大家写用户态代码都很有帮助。很多书上、很多文章都写了相关内容,但个人总觉得内容太复杂,不是太容易理解,这里想用我自己理解的简单的方式来描述,希望能有所帮助。本篇文章由圆柱模板博主原创,转载需注明! ...
分类:
系统相关 时间:
2018-03-20 00:43:06
阅读次数:
213
运维必须掌六大命令之——strace 简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个 ...
分类:
其他好文 时间:
2018-03-18 16:24:22
阅读次数:
198
1、iptables的组成:内核态:集成在内核里的功能。用户态:安装服务的软件包后提供的管理命令2、iptables服务的功能:查看,修改,删除,添加规则3、iptables的组成:功能表链ip包过滤:filterINPUT,FORWARD,OUTPUT网络地址转换:natPREROUTING,POSTROUTING,OUTPUT对ip包打标记:manglePREROUTING,INPUT,FOR
分类:
其他好文 时间:
2018-03-17 17:56:20
阅读次数:
128
完整的计算机系统: 应用程序 操作系统 计算机硬件1 操作系统 1)什么是操作系统: 是一个协调、管理、控制计算机硬件与软件的控制程序 2)操作系统分成两部分: 接口程序:将硬件的功能封装成简单的接口,用来给应用软件或者给用户使用 内核:具体控制硬件,对下2 内核态与用户态(了解): CPU的两种工 ...
分类:
编程语言 时间:
2018-03-17 12:11:28
阅读次数:
276
这个问题的根源在:使用动态链接库可以省内存,因为多个进程可以共享物理内存; 老觉得这部分逻辑是在用户态的动态加载器完成的,但是想想奇怪,动态加载器是嵌入到进程里的so,案例说是不会感知到外面的世界的啊,难道是内核? 【等等,动态加载器,可能直接就是在不同的进程中中共享的一份,是不是它本身就记录着整个 ...
分类:
其他好文 时间:
2018-03-17 10:48:43
阅读次数:
137
1.库函数,系统调用,用户态及内核态 内核调用是指进入内核态然后执行指令然后再回到用户态 http://blog.csdn.net/wwzhang0307/article/details/68945172 http://blog.csdn.net/skywalkzf/article/details/ ...
分类:
系统相关 时间:
2018-03-14 12:53:28
阅读次数:
196
转自:http://linuxperf.com/?p=116 在Linux系统上,进程运行分为用户态与内核态,进入内核态之后使用的是内核栈,作为基本的安全机制,用户程序不能直接访问内核栈,所以尽管内核栈属于进程的地址空间,但与用户栈是分开的。Linux的内核栈大小是固定的,从2.6.32-520开始 ...
分类:
其他好文 时间:
2018-03-14 12:44:54
阅读次数:
270
多线程并发、包括线程池,是操作系统控制的并发。如果是单线程,可以通过协程实现单线程下的并发。 协程 又称微线程,是一种用户态的轻量级线程,由用户程序自己控制调度。 python的线程属于内核级别的,由操作系统控制调度(如单线程遇到io或执行时间过长就会被迫交出cpu执行权限,切换其他线程运行) 而单 ...
分类:
编程语言 时间:
2018-03-12 15:16:21
阅读次数:
213