今天我们介绍另一种用户内核空间通信的方法:proc文件系统。
proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的proc文件系统已经演变成一个“用户-内核”空间半双工的通信方式了(虽然目前已经开始有点混乱了,但某些...
分类:
其他好文 时间:
2016-04-01 06:35:23
阅读次数:
270
Linux内核对进程管理是操作系统的重要任务之一。 此次实验就是了解内核创建一个新进程的大致过程。 为了简单,使用fork再用户态创建一个进程。代码如下: 打开gdb进行远程调试? 设置断点 b sys_clone b do_fork b dup_task_struct b copy_process ...
分类:
系统相关 时间:
2016-03-31 16:59:21
阅读次数:
223
1.内核中的bug 内核调试的难点 2. 内核调试的工具和方法 2.1 输出 LOG 输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用的一个调试手段. 通过在可疑的代码周围加上一些LOG输出, 可以准确的了解bug发生前后的一些重要信息. linux内核中输出LOG的函数是 p ...
分类:
系统相关 时间:
2016-03-28 21:45:12
阅读次数:
260
预备知识
内核态
用户态
为什么要划分系统级别?
如何区分内核和用户态? cs:eip
寄存器上下文
上下文切换
系统调用号
中断向量
调度时机
系统调用过程中一定发生中断, 在系统调用执行过程中可能有进程的切换.系统调用分类进程控制load
execute
end, abort
create process (for example, fork on Unix-like systems, or N...
分类:
其他好文 时间:
2016-03-28 00:14:43
阅读次数:
383
输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用的一个调试手段. 通过在可疑的代码周围加上一些LOG输出, 可以准确的了解bug发生前后的一些重要信息. linux内核中输出LOG的函数是 printk (语法和printf几乎雷同, 唯一的区别是printk可以指定日志级别) ...
分类:
系统相关 时间:
2016-03-24 16:20:37
阅读次数:
226
Linux内核设计第四周——扒开系统调用三层皮by苏正生 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、知识点整理1.用户态 内核态和中断处理程序我们一般使用系统调用一般通过库函数的方式用...
分类:
系统相关 时间:
2016-03-20 21:32:25
阅读次数:
221
一.实验原理 1.1系统调用的意义 (1)把用户从底层的硬件编程中解放出来 (2)极大的提高了系统的安全性 (3)使用户程序具有可移植性 1.2系统调用过程 (1)当用户态进程调用一个系统调用时,CPU切换到内核态并开始执行一个内核函数。 (2)在Linux中是通过执行int $0x80来执行系统调
郭皓 原创作品转载请注明出处 《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 用户态:当进程在执行用户自己的代码时,则称其处于用户态,即此时处理器在特权级最低的(3级)用户代码中运行。 内核态:当一个进程执行系统调
分类:
系统相关 时间:
2016-03-20 21:05:35
阅读次数:
310
张潇月《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 通过库函数与系统调用沟通。 用户态和内核态:高的执行级别下,代码可以执行特权指令,访问任意物理地址,这就是内核态。低级别的就是用户态。 为什么要有权限分级?让操作
分类:
其他好文 时间:
2016-03-20 15:52:21
阅读次数:
135
用户态、内核态和中断的处理过程 用户态和内核态的区分 内核态:代码可以执行特权指令,访问任意的物理地址,CPU的这种执行级别就对应着~ 相对的用户态就对应着低级别的执行状态就是用户态,代码所掌控的范围有限。 至于为什么会划分权限,因为操作系统的发展,防止程序员写的代码造成系统运转的崩溃 划分为0、1
分类:
系统相关 时间:
2016-03-20 14:33:41
阅读次数:
226