2013年4月15日

Ubuntu 下安装LXR(linux源代码阅读工具)

摘要: 1.安装apache2 sudo apt-get install apache2 2.安装lxrglimpse sudo apt-get install lxr 下载最新glimpse解压 下载地址http://download.csdn.net/detail/yming0221/30760... 阅读全文

posted @ 2013-04-15 11:41 胡永光 阅读(130) 评论(0) 推荐(0) 编辑

Linux0.11内核--内核态与用户态

摘要: 内核态与用户态 intel x86 架构的 CPU 分 Ring0-Ring3 三种级别的运行模式,Ring0级别最高,Ring3 最低。 针对不同的 级别,有很多的限制,比如说传统的 in ,out 指令,就是端口的输入输出指令,在 Ring0 级下是可以用的,但在 Ring3 级下就不... 阅读全文

posted @ 2013-04-15 11:38 胡永光 阅读(222) 评论(0) 推荐(0) 编辑

进程的用户栈和内核栈

摘要: 进程是程序的一次执行过程。用剧本和演出来类比,程序相当于剧本,而进程则相当于剧本的一次演出,舞台、灯光则相当于进程的运行环境。 进程的堆栈 每个进程都有自己的堆栈,内核在创建一个新的进程时,在创建进程控制块task_struct的同时,也为进程创建自己堆栈。一个进程 有2个堆栈,用户堆栈和系... 阅读全文

posted @ 2013-04-15 11:37 胡永光 阅读(192) 评论(0) 推荐(0) 编辑

Linux0.11内核--进程的结束

摘要: 进程的结束 结束一个进程,就是要释放该进程所有的结构和资源,让系统从此之后再也感觉不到它的存在。如前面所说的,一个进程的结构包括: task[]数组中一项,指向了该进程的task_struct和内核堆栈所在页面; GDT中两项,一项是TSS描述符,一项是LDT描述符; 若干页目录项和... 阅读全文

posted @ 2013-04-15 11:35 胡永光 阅读(252) 评论(0) 推荐(0) 编辑

static,inline,volatile的作用

摘要: 1、static (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 [cpp] v... 阅读全文

posted @ 2013-04-15 11:31 胡永光 阅读(253) 评论(0) 推荐(0) 编辑

Linux 内核--fork()函数创建进程 (续)之copy_mem(int nr, struct task_struct *p)

摘要: 本问分析基于Linux 0.11内核,转载请标明出处http://blog.csdn.net/yming0221/archive/2011/06/06/6528490.aspx copy_mem(int nr, struct task_struct *p)函数是为进程设置段基址,限长,并复制页... 阅读全文

posted @ 2013-04-15 11:29 胡永光 阅读(161) 评论(0) 推荐(0) 编辑

Linux 内核--fork()函数创建进程

摘要: 本文分析基于Linux 0.11内核,转载请表明出处http://blog.csdn.net/yming0221/archive/2011/06/05/6527337.aspx Linux在move_to_user_mode()之后,进程0通过fork()产生子进程实际就是进程1(in... 阅读全文

posted @ 2013-04-15 11:27 胡永光 阅读(268) 评论(0) 推荐(0) 编辑

Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode

摘要: 本文分析基于Linux 0.11内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx 在main.c的程序中,当设备初始化完毕后,程序将从内核模式切换到用户模式,也就是所说的任务0,执行fork()函数... 阅读全文

posted @ 2013-04-15 11:24 胡永光 阅读(290) 评论(0) 推荐(0) 编辑

Linux 内核--任务0的调度切换

摘要: 本文分析基于Linux 0.11内核,转载请标明出处 http://blog.csdn.net/yming0221/archive/2011/06/09/6533865.aspx。 main.c中在move_to_user_mode()之后,切换到用户模式下运行,task0然后执行fo... 阅读全文

posted @ 2013-04-15 11:21 胡永光 阅读(214) 评论(0) 推荐(0) 编辑

Linux添加系统调用

摘要: 本文基于Linux 2.4.26内核,GCC 3.2.2添加系统调用mycall(int num) 增加系统调用只修改/usr/src/linux-2.4.29/include/asm-i386/unistd.h和arch/i386/kernel/entry.S,系统调用函数一般在kerne... 阅读全文

posted @ 2013-04-15 11:20 胡永光 阅读(182) 评论(0) 推荐(0) 编辑

Linux 内核编译 添加系统调用

摘要: 主机:Ubuntu 11.04 现在内核版本:2.6.38.9 编译的目标内核版本:2.6.39 编译成功后修改内核,添加个系统调用,并重新编译内核,编写C程序,调用自己添加的系统调用 首先编译内核 1、从下载Linux内核版本2.6.39 2、解压内核到任意目录(这里不用必须解压到/u... 阅读全文

posted @ 2013-04-15 11:19 胡永光 阅读(167) 评论(0) 推荐(0) 编辑

关于vmlinux,vmlinuz,bzImage,zImage的区别和联系

摘要: vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,... 阅读全文

posted @ 2013-04-15 11:18 胡永光 阅读(276) 评论(0) 推荐(0) 编辑

linux进程调度浅析

摘要: 操作系统要实现多进程,进程调度必不可少。 有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的。 而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TAS... 阅读全文

posted @ 2013-04-15 11:15 胡永光 阅读(93) 评论(0) 推荐(0) 编辑

内核中断,异常,抢占总结篇

摘要: 一、基本概念 中断分为同步中断和异步中断。同步中断是由CPU控制单元产生的,“同步”是指只有在一条指令执行完毕后,CPU才会发出中断,而不是发生在代码指令执行期间,比如系统调用。而异步中断是由其他硬件设备依照CPU时钟信号产生的,即意味着中断能够在指令之间发生,例如键盘中断。 按照Intel的微... 阅读全文

posted @ 2013-04-15 11:13 胡永光 阅读(199) 评论(0) 推荐(0) 编辑

深入理解linux内核自旋锁

摘要: 最近在内核频繁使用了自旋锁,自旋锁如果使用不当,极易引起死锁,在此总结一下。 自旋锁是一个互斥设备,它只有两个值:“锁定”和“解锁”。它通常实现为某个整数值中的某个位。希望获得某个特定锁得代码测试相关的位。如果锁可用,则“锁定”被设置,而代码继续进入临界区;相反,如果锁被其他人获得,则代码进入忙... 阅读全文

posted @ 2013-04-15 11:09 胡永光 阅读(165) 评论(0) 推荐(1) 编辑

软中断小结

摘要: 内核处理的任务中有的不是那么紧迫的,在必要的时间可以把它们延迟一段时间,这就是软中断形成的背景。这对于哪些期望它们的中断能在几毫秒内得到处理的“急迫”应用来说是非常重要的。由此,硬中断负责处理紧急的任务,软中断负责处理不是那么紧迫的任务。 Linux 2.6内核提供了两种非紧迫、可中断函数:所... 阅读全文

posted @ 2013-04-15 11:09 胡永光 阅读(112) 评论(0) 推荐(0) 编辑

Linux 中断总结

摘要: Linux中断分为硬中断和软中断。 硬中断是由硬件设备触发的中断。I/O设备要产生硬中断时,会由中断控制器发送一个电信号,内核的设备驱动程序接收到这个电信号,就会调用相应的中断处理函数对这个中断进行处理。硬中断可以在任何时刻到来,它代表的系统必须马上处理的紧急任务,也简称为中断的上半部,与此对应... 阅读全文

posted @ 2013-04-15 11:07 胡永光 阅读(189) 评论(0) 推荐(0) 编辑

在用户空间发生中断时,上下文切换的过程

摘要: 先引用一篇博文,再总结一下相关问题。 所谓上下文切换,实质就是寄存器堆的切换过程。这其中一部分需要硬件来切换,一部分需要软件来处理。 当在用户空间发生中断时,首先由 x86 CPU 从硬件角度进行处理,然后才是 linux 内核的处理。当中断处理完毕,返回到用户空间时,最后的步骤也是交给 CP... 阅读全文

posted @ 2013-04-15 11:06 胡永光 阅读(218) 评论(0) 推荐(0) 编辑

Linux内核抢占实现机制分析

摘要: Linux内核抢占实现机制分析 【摘要】本文详解了Linux内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性。然后分析了禁止内核抢占的情况和内核抢占的时机,最后介绍了实现抢占内核所做的改动以及何时需要重新调度。 【关键字】... 阅读全文

posted @ 2013-04-15 11:03 胡永光 阅读(177) 评论(0) 推荐(0) 编辑

【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析

摘要: Linux内核抢占实现机制分析 【摘要】本文详解了Linux内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性。然后分析了禁止内核抢占的情况和内核抢占的时机,最后介绍了实现抢占内核所做的改动以及何时需要重新调度。 【关键字... 阅读全文

posted @ 2013-04-15 11:00 胡永光 阅读(207) 评论(0) 推荐(0) 编辑

导航