导语
很多童鞋有分析阅读Linux源代码的强烈愿望,可是Linux内核代码量庞大,大部分人不知道如何下手,以下是我分析Linux源代码的一些经验,仅供参考,有不实之处请大神指正!
1.要想阅读内核首先要进入内核,其中用户态程序进入内核态的主要方式是int 0x80中断,搞懂这条指令的执行过程是我们学习内核的第一步;
2.Linux中...
分类:
其他好文 时间:
2016-05-04 13:32:53
阅读次数:
292
1)fork函数总是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。fork在子进程中的返回值是0,而在父进程中的返回值则是子进程的id。2)子进程在创建的时候会复制父进程的当前状态(PCB信息相同,用户态代码和数据也相同)。3)程序运行的结果基本上是父子进程交替打印,但这 ...
分类:
其他好文 时间:
2016-05-04 10:25:13
阅读次数:
167
作者:江军 ID:fuchen1994 一.Linux系统的简单理解 Linux操作系统比起windows来说要小巧很多,相对来说没有那么复杂。两者有相似之处,也有不同之处。比如两者都拥有内核态,用户态,系统调用,进程的基本的操作系统概念与实现。但是,在一些具体的实现方面,架构方面又大有不同,比如文 ...
分类:
系统相关 时间:
2016-04-30 16:59:10
阅读次数:
225
信号—signal一、信号的基本概念为了理解信号,先从我们最熟悉的场景说起:1.用户输入命令,在Shell下启动一个前台进程。2.用户按下Ctrl-C,这个键盘输入产生一个硬件中断。3.如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中..
分类:
系统相关 时间:
2016-04-29 20:21:24
阅读次数:
367
概念 驱动程序作为系统内核的一部分,它工作在核心态,而应用程序工作在用户态。也就是说,程序不能直接通过指针,把用户空间的数据地址传递给内核Linux内核把驱动程序划分为3种类型:字符设备、块设备和网络设备。字符设备和块设备可以像文件一样被访问。它们的主要区别不在于能否seek,而是在于系统对于这两种 ...
分类:
移动开发 时间:
2016-04-27 10:54:46
阅读次数:
177
OProfile 性能分析工具 官方网站:http://oprofile.sourceforge.net/news/ oprofile.ko模块本文主要介绍Oprofile工具,适用系统的CPU性能分析,最主要它能深入内核函数,这是很多用户态工具达不到的地方. Oprofile是一个内核态工具,通过 ...
分类:
其他好文 时间:
2016-04-24 12:31:39
阅读次数:
135
backtrace 【用途】用户态或者内核态程序异常退出时回溯堆栈信息 【原理】通过对当前堆栈的分析,回溯上层函数在当前栈中的帧地址,直至顶层函数。帧地址是指在栈中存在局部变量、上一级函数返回地址、寄存器值的内存空间。由于不同处理器堆栈实现不同(向上增长和向下增长),此功能的具体实现是编译器内建的_ ...
分类:
系统相关 时间:
2016-04-23 14:51:13
阅读次数:
351
1、安装VS2012 安装VS2012略过,主要用它来做数据传输应用程序的,WINDRIVER提供了一系列API接口,方便了用户,使用户能直接进入用户态的编程,因为内核态的编程它已做好,不需要进行修改,当然你也可以对它进行修改,这便要求你对驱动编程有一定的认识。 2、安装WINDRIVER 在网上下 ...
之前我一直都提到的是进程,现在多了一个线程的概念,从字面意思来看,线程应该比进程校嘿嘿。其实操作系统刚开始的时候,提出进程概念后,操作系统一直都是以进程作为独立运行的基本单位,然后有人感觉了,这不对呀,进程之间的中断转换太浪费了,并且用户态到核心态的切换也..
分类:
编程语言 时间:
2016-04-19 20:21:20
阅读次数:
305
进程的切换和系统的一般执行过程 一、进程调度的三个时机: 1.中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 2.内核线程可以直接调用schedule()进行进程切换,也可以在中断处 ...
分类:
系统相关 时间:
2016-04-17 22:11:09
阅读次数:
192