开始学内核的时候,一定会讲从ring3到ring0的调用,但是网上很多的文章讲的模棱两可,这次记录下我对系统调用的研究。。。。。。。。一个线程由用户态进入内核态的途径有3种典型的方式:1、 主动通过int 2e(软中断自陷方式)或sysenter指令(快速系统调用方式)调用系统服务函数,主动进入内核...
分类:
其他好文 时间:
2015-04-20 22:31:41
阅读次数:
610
ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第一部分,介绍了内核相关的编译选项、用户态访问 ftrace 的接口、ftrace 的数据文...
分类:
系统相关 时间:
2015-04-19 14:31:04
阅读次数:
213
1.Linux下的应用程序所需要的外部函数可以由函数可和系统调用提供。2.函数库是处于用户态的,由工作人员编写的函数的集合,而系统调用是由Linux内核实现的。3.函数库分为静态和动态,按照链接方式划分的。动态函数库比静态节约空间。使用静态函数库以后应用程序最终会包含自身和函数库,在内存中运行的时候...
分类:
其他好文 时间:
2015-04-16 21:35:45
阅读次数:
157
很多资料上都写分用户栈、内核栈、中断栈,主要问题就是系统安全和健壮性考虑,用户栈处于用户空间,内核栈处于内核空间,权限不一样。
系统调用 :内核态,运行于进程上下文,内核代表进程运行于内核空间
硬件中断 :内核态,运行于中断上下文,内核代表硬件运行于内核空间;
异常
:...
分类:
系统相关 时间:
2015-04-16 17:37:01
阅读次数:
153
引自:韦东山嵌入式视频第二期 “第31课第3节_应用调试之配置修改内核打印用户态段错误信息_P” 第6分钟起。1.配置内核支持DEBUG_USER (勾选 Kernel hacking -> Verbose user fault messages[*] 即可)(视频第8:23)2.设置bootarg...
分类:
系统相关 时间:
2015-04-15 21:06:57
阅读次数:
155
最近开发用到fuse文件系统,这个文件系统的功能实现是在用户态下进行的,然而它的文件系统操作接口必须在内核态注册,所以需要研究一下内核态到用户态的开销到底如何。下面这个例子是在stackoverflow上看到的,基本能反映开销的差异了:在linux测试这个测试程序,getuid是一个系统调用,返回当...
分类:
其他好文 时间:
2015-04-15 18:48:23
阅读次数:
210
1.从用户空间到内核空间的时候需要进行系统调用2.系统调用通过swi指令实现,这个时候会有一个参数,存放到r7寄存器,用来指定要调用的内核态函数。3.一般内核态的实际函数可以再任意的.c文件实现,但是必须在call.S里面加上相应的函数指针(添加表项)4.而且要在unistd.h里面对参数进行声明。...
分类:
系统相关 时间:
2015-04-15 16:37:34
阅读次数:
127
在调试上层程序时,经常会遇到的错误是段错误,当出现段错误时,系统往往只会给出一个 segmention error,而在没有更多的信息(默认不产生core dump),在这种情况下,可以通过修改内核启动参数来使能调试模式,让用户态出现段错误时,打印出更多的提示信息,有助于定位错误。 分析流程: 先从...
分类:
其他好文 时间:
2015-04-14 12:39:22
阅读次数:
135
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此...
分类:
其他好文 时间:
2015-04-13 18:32:47
阅读次数:
503
函数的多线程安全性在内核编程中比用户态应用程序的编程更常见。 调用源 运行环境 原因 driverEntry,DriverUnload 单线程 这两个函数由系统进程的单一线程调用,不会出现多线程同时调用 的情况 各种分发函数 多线程 ...
分类:
其他好文 时间:
2015-04-11 10:08:36
阅读次数:
148