
Linux内核/驱动
deviosyan
这个作者很懒,什么都没留下…
展开
-
深入分析Linux内核链表(转载)
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。 一、链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访转载 2010-05-10 08:28:00 · 443 阅读 · 0 评论 -
理解进程调度时机跟踪分析进程调度与进程切换的过程
一、基础知识Linux系统的一般执行过程最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程1. 正在运行的用户态进程X2. 发生中断——save cs:eip/esp/eflags(current) to kernel stack, then load cs:eip(entry of a specific ISR) and ss:esp(point t原创 2016-04-17 18:08:15 · 712 阅读 · 0 评论 -
Linux内核如何装载和启动一个可执行程序
一、理论知识Linux中,可以从c源代码生产一个可执行程序,这其中要经过预处理、编译和链接的过程。可以参考以下图来理解这个过程: 可执行文件的格式: 在 Linux 平台下主要有以下三种可执行文件格式: 1、a.out(assembler and link editor output 汇编器和链接编辑器的输出) 2、COFF(Common Object File Format 通原创 2016-04-10 21:00:05 · 567 阅读 · 0 评论 -
system_call中断处理过程分析
1原创 2016-03-27 20:37:23 · 469 阅读 · 0 评论 -
学习Linux内核启动过程:从start_kernel到init
作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”一、实验步骤: 1:运行menuos: a)cd LinuxKernel/ b)qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img启动后启原创 2016-03-13 21:23:19 · 1204 阅读 · 0 评论 -
分析Linux内核创建一个新进程的过程
创建进程常常用到的函数:1:fork创建自集成;2:vofrk:创建子进程,与父进程共享地址空间;3:clone,创建线程;创建一个进程的过程中涉及用到的函数: sys_clone,do_fork,dup_task_struct,copy_process,copy_thread,et_from_fork 1.在创建进程的时候,传统的unix会全复制父进程给子进程。这种方式不好的是,创建慢、浪费原创 2016-04-03 09:38:33 · 610 阅读 · 0 评论 -
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”首先我们从http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl这个网站中找一个我们想用来做实验的一个系统调用,我们本次使用execve来当原创 2016-03-20 11:17:17 · 576 阅读 · 0 评论 -
函数栈的调用
分析如下的文件:(文件名是hi.c)int g(int x, int y){ return x + y + 3;}int f(int x, int y){ return g(x,y);}int main(void){ return f(3,4) + 1;}通过反汇编后得到如下的内容:使用反汇编的命令:gcc -S hi.c -m32生成如下代码: .原创 2016-02-22 22:02:42 · 602 阅读 · 0 评论 -
别人都linux更新咱来个linux降低版本试试!
ubuntu 11.04 最新的内核是2.6.38.8~ ~!运行ldd3的代码,会有些问题,毕竟版本更新了后;有些不兼容了。于是乎我就想着能不能把内核版本降低;懒得弄新的linux了~ ~!另一方面也试试玩儿! 罪恶愿与寂寞;一、www.kernel.org现在了个li原创 2011-08-31 00:39:23 · 1665 阅读 · 0 评论 -
ubuntu 2.6.22 内核树建立
<br />本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。<br /><br />刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。那怎么建立呢?为此上网“翻云覆雨”起来而结果却是“惨败原创 2010-06-02 16:31:00 · 373 阅读 · 0 评论 -
Linux内核编程
摘要<br />Linux内核模块编程的资料有些纷繁复杂,有的过于简单,有的过于庞杂,我试图用笔记的形式想读者展示怎样来进程Linux模块编程,力图做到简明扼要,这篇文章也是作为本人备忘的资料,所以有些地方过于简略是难免的。本来这篇文章的目的就是让用户知其然,至于所以然还是请参考相应的资料,其实最好的资料莫过于LinuxKernel Source。<br />适用范围:Linux Kernel >= 2.6.0 [在2.4.20-8上试了哈,也行]<br />Linux模块简介<br />转载 2010-06-02 20:00:00 · 578 阅读 · 0 评论 -
Linux内核编程风格
第一章:缩进 制表符(tabs)占8个字符,所以缩进也是8个字符。有些异端运动想使用4个字符(甚至是2个字符)的缩进,这和把PI(圆周率)定为3没什么两样。 原因:缩进的根本目的是用来清晰地标识一个控制块的起始。<br /><br />第一章:缩进<br />制表符(tabs)占8个字符,所以缩进也是8个字符。有些异端运动想使用4个字符(甚至是2个字符)的缩进,这和把PI(圆周率)定为3没什么两样。 <br />原因:缩进的根本目的是用来清晰地标识一个控制块的起始。特别是当你连续盯着屏幕看了20 个转载 2010-06-02 19:59:00 · 1211 阅读 · 0 评论 -
如何编写Linux设备驱动程序
<br />Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与Linux fans共享,有不当之处,请予指正。<br /> 以下的一些文字转载 2010-07-26 21:01:00 · 508 阅读 · 0 评论 -
Linux内核课程学习总结
Linux内核课程学习总结学习期间发布博客文章的总结: *函数栈的调用 *学习Linux内核启动过程:从start_kernel到init *使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 *system_call中断处理过程分析 *分析Linux内核创建一个新进程的过程 *Linux内核如何装载和启动一个可执行程序 *理解进程调度时机跟踪分析进程调度与进程切换的过原创 2016-05-01 10:59:55 · 727 阅读 · 0 评论