系统调用进程有两种运行模式:用户态和内核态。进程通常在用户态,这时可以使用CPU和内存,而当进程需要对硬件外设进行操作的时候(如读取磁盘文件、发送网络数据),就必须切换到内核态,当在内核态的任务完成后,进程又切回到用户态。由于系统调用涉及进程从用户态到内核态的..
分类:
Web程序 时间:
2015-04-23 13:35:05
阅读次数:
160
开始学内核的时候,一定会讲从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
引自:韦东山嵌入式视频第二期 “第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
在调试上层程序时,经常会遇到的错误是段错误,当出现段错误时,系统往往只会给出一个 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
陈铁+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000Linux内核对进程管理是操作系统的重要任务之一。此次实验就是了解内核创建一个新进程的大致过程。为了简单,使用fork再用户态创建一个进程。代码如下:#include<std..
分类:
系统相关 时间:
2015-04-10 11:40:39
阅读次数:
222