自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白水煮鸡蛋

路漫漫其修远兮~~~~~~~~~~

  • 博客(31)
  • 资源 (5)
  • 收藏
  • 关注

转载 do_IRQ 函数细节

//// do_IRQ 函数执行完硬件 ISR 后退出时调用此函数。//void irq_exit(void){        account_system_vtime(current);        trace_hardirq_exit();        sub_preempt_count(IRQ_EXIT_OFFSET);        //

2012-03-29 23:27:25 3362

转载 linux2.6软中断-tasklet

6.1下半部下半部的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。对于在上半部和下半部之间划分工作,尽管不存在某种严格的规则,但还是有一些提示可供借鉴:(1)如果一个任务对时间非常敏感,将其放在中断处理程序中执行。(2)如果一个任务和硬件相关,将其放在中断处理程序中执行。(3)如果一个任务要保证不被其它中断打断,将其放在中断处理程序中执行。(4)

2012-03-29 23:19:46 1322

转载 Linux中的mips64 tlb管理

Linux中的mips64 tlb管理 (2011-08-31 07:37)标签:  mips64  tlb  分类: mips64关于tlb的描述可参考mips run2以及mips64官方手册。tlb条目:tlb entry寄存器:entryHi, entryLo0, entryLo1, mask, index, wired指令:

2012-03-27 23:21:15 3514

转载 内核线程、轻量级进程、用户线程

转载:http://www.cnitblog.com/tarius.wu/articles/2277.html转载:http://www.fansoo.com/blog/2011/kernel-threads-lightweight-processes-threads-and-linuxthreads-library-users/内核线程内核线程只运行在内核态,不受用户态上下文的拖

2012-03-26 23:07:46 6297

转载 内核线程

原文链接 http://blog.csdn.net/yunsongice/article/details/5522012按照传统UNIX规定的一些操作系统标准,一些重要的任务需要由进程来周期性地执行。这些任务包括刷新磁盘高速缓存,交换出不用的页框,维护网络连接等等。那么,由于这些系统进程只运行在内核态,所以Linux将他改造了,跟一般的进程不一样了,给它取个名称叫内核线程(kernel

2012-03-26 23:03:26 866

转载 fork与vfock系统调用的区别

原文链接 http://blog.csdn.net/yunsongice/article/details/5516382fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:1. fork():子进程拷贝父进程的数据段,代码段   vfork():子进程与父进程共享数据段2. fork():父子进程的执行次序不确定   vfork保证子进程先运行

2012-03-26 23:02:32 627

转载 执行进程间切换

原文链接  http://blog.csdn.net/yunsongice/article/details/55159651 进程切换之前的工作由于每个进程共享CPU寄存器(咱们就当是单CPU吧),因此在恢复一个进程之前,内核必须确保每个寄存器装入挂起进程时的值,他们就叫“硬件上下文”。在Linux中,进程硬件上下文得一部分放在TSS段,主要用于对内核态堆栈进行寻址,而剩余部分

2012-03-26 23:01:34 690

转载 进程的创建 —— do_fork()函数详解

原文链接http://blog.csdn.net/yunsongice/article/details/5508242在讲进程管理专题最核心的课题——进程创建之前,我们先简单地回顾一下上一篇博文的sys_clone()系统调用:asmlinkage int sys_clone(struct pt_regs regs){    unsigned long clone_flags;

2012-03-26 22:44:15 1120

转载 Linux的线程——轻进程

原文链接 http://blog.csdn.net/yunsongice/article/details/5506113进程类似于人生:它们被产生,有或多或少有效的生命,可以产生一个或多个子进程,最终都要死亡。一个微小的差异是进程之间没有性别差异——每个进程都只有一个父亲。那么,操作系统有一个重要的概念——线程,在Linux上是怎么实现的呢?可以明确的告诉你,Linux并没有线程这个概念。呵呵

2012-03-26 22:42:34 2108

转载 进程ID号

关于进程ID号,在深入理解linux内核架构中已经讲得很清楚了。下面是主要的部分。UNIX进程总是会分配一个号码用于在其命名空间中唯一地标识它们。该号码被称作进程ID号,简称PID。用fork或clone产生的每个进程都由内核自动地分配了一个新的唯一的PID值。1. 进程ID但每个进程除了PID这个特征值之外,还有其他的ID。有下列几种可能的类型。处于某个线程组(在

2012-03-25 21:59:58 2672

转载 进程任务结构与初始化

Linux系统的线程实现非常特别:他对线程和进程并不特别区分。对linux而言,线程只不过是一种特殊的进程罢了,后面我们会看到,他们都通过do_fork函数创建,只是传入的参数不一样而已。线程创建时,会共享内核资源。       在内核中,各个进程的task_struct存放在他们内核栈的尾端。这样做是为了让那些像x86那些寄存器较少的硬件体系结构只要通过栈指针就能计算出他的位置而避免额外

2012-03-25 21:49:14 832

转载 linux mmap 详解

一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start :

2012-03-22 22:19:46 1089

转载 Linux驱动之设备模型(9)-platform

10.Platform10.1  overviewl  一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、IIC、SPI等的设备而言,这自然不是问题,但是在嵌入式系统中,SoC系统中集成的独立的外设控制器,挂接在SoC内存空间的外设(IIC,RTC,SPI,LCD,看门狗)等却不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为

2012-03-18 16:07:39 777

转载 Linux驱动之设备模型(8)

9.小结9.1  总线,设备,驱动和类之间的关系l  总线相当于一个容器,是device和device_driver的管理机构,它包含了一个device集合(devices_kset)和一个驱动集合(drivers_kset),分别表示挂依附于此总线的所有设备和所有驱动。l  驱动依附在总线上,包含了一个设备链(klist_devices),用来遍历总线上的设备,驱动还包含

2012-03-18 16:07:07 758

转载 Linux驱动之设备模型(7)

8.类8.1  classl  Class是对设备按照功能进行的分类,这样做是为了给用户空间提供一个比较友好的界面。Class也是一个kset,对应于/sys/class下的一个目录int __initclasses_init(void){         /* 对应/sys/class目录 */         class_kset =kset_c

2012-03-18 16:06:31 551

转载 Linux驱动之设备模型(6)

7.设备驱动7.1  设备驱动l  在Linux设备模型中,设备驱动用device_driver结构来表示structdevice_driver {         const char                  *name;       /*名字*/         struct bus_type                 *bus;

2012-03-18 16:05:45 608

转载 Linux驱动之设备模型(5)

6.设备6.1  设备l  Linux设备模型中每一个设备用device结构来表示struct device {         struct device             *parent;   /* 父设备,通常是某种总线或者是宿主设备 */          struct device_private       *p;   /* 私有数

2012-03-18 16:05:04 647

转载 Linux驱动之设备模型(4)

5.总线5.1  overview前面我们介绍了设备模型的底层部分,下面我们来看下设备模型的高层部分,总线、设备和驱动 5.2 总线l  总线,是处理器与一个或者多个设备之间的通道。在Linux设备模型中,用bus_type结构来表示struct bus_type{         const char                  *n

2012-03-18 16:04:29 599

转载 Linux驱动之设备模型(3)

4.小结4.1  kobject, kset和ktypekobject, kset和ktype就三个结构体,但是却很容易让人混淆,是由于它们内部相互交织。l  kobject,是设备模型中的基本对象,包含了引用计数,父子关系,目录项等,通常会嵌入到其它的数据结构中,使其也具有kobject的特性;l  ktype,定义了一些kobjct相关的默认特性:析构函数,sy

2012-03-16 23:05:30 550

转载 Linux驱动之设备模型(2)

3.ktype& Kset3.1  ktypel  用来描述一组kobject所具有的共同特性,用structkobj_type结构体来表示struct kobj_type{         void (*release)(struct kobject *kobj);         const struct sysfs_ops *sysfs_ops;

2012-03-16 22:49:16 644

转载 Linux驱动之设备模型(1)

1.Overviewl  设备模型是2.6内核引入的新特性,提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,使得系统具有以下优点:n  代码重复最小化n  提供诸如引用计数这样的统一机制n  可以列举系统中所有的设备,观察它们的状态,并查看它们连接的总线n  可以将系统中的全部设备结构以树的形式完整、有效地展现出来n  可以将设备和其

2012-03-15 23:20:09 713

转载 Linux内核模块符号导出后无法调用问题

Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。1. 符号导出函数EXPORT_SYMBOL()EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的

2012-03-15 23:05:04 861

转载 Linux 文件和目录的属性

Linux 文件和目录的属性作者:北南南北来自:LinuxSir.Org摘要:本文讲述的是文件或目录的属性,比如节点inode、文件类型、文件权限及归属;还对setuid、setgid及粘贴位进行了一般性的讲解。对ln 、chmod、umask、chown、chgrp 、touch 的用法也进行了比较详细的说明和举例;目录1、 Linux 文件的属性概说;

2012-03-15 22:59:23 500

转载 Linux设备模型(中)之上层容器

努力成为linux kernel hacker的人李万鹏原创作品,转载请标明出处http://blog.csdn.net/woshixingaaa/archive/2011/05/05/6396620.aspxLinux设备模型是由总线(bus_type),设备(device),驱动(device_driver)这三个数据结构来描述的。在设备模型中,所有的设备都通过总线来连接。即使

2012-03-15 22:31:31 1706

转载 Linux设备模型(上)之底层模型

努力成为linux kernel hacker的人李万鹏原创作品,转载请标明出处http://blog.csdn.net/woshixingaaa/archive/2011/05/05/6396618.aspx如果哪里有理解不对的请指教,文章引用的内核源码版本为2.6.29.1的。建立设备模型主要为了管理方便。最初引入设备模型是为了电源管理。建立一个全局的设备树(device tree

2012-03-15 22:29:07 843

转载 关于内核符号表

在编写驱动的过程中,常会使用到EXPORT_SYMBOL宏来将定义的函数名导出到内核符号表。以前只是简单的知道如果一个模块中定义的函数要提供给其他模块调用,就必须进行导出。这段时间在编译单个模块的时候,因为没编译成功造成了函数没定义而报警的情况,因此让我有一个机会对内核符号表的问题进行了一个深入的学习和认识。 我们知道,如果一个模块中使用到了另一个模块中定义的函数,那么在编译该模块的时候,必然会打

2012-03-15 22:26:06 582

转载 一步一学Linux与Windows 共享文件Samba (v0.2b)

一步一学Linux与Windows 共享文件Samba (v0.2b)作者:北南南北,正在增加中... ... 需要您的参与;来自:LinuxSir.Org简介:本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;

2012-03-15 22:13:10 578

转载 C语言头文件的使用

C语言头文件的使用                                          ——by janders C语言中的.h文件和我认识由来已久,其使用方法虽不十分复杂,但我却是经过了几个月的“不懂”时期,几年的“一知半解”时期才逐渐认识清楚他的本来面目。揪其原因,我的驽钝和好学而不求甚解固然是原因之一,但另外还有其他原因。原因一:对于较小的项目,其作用不易被

2012-03-11 21:09:45 514

转载 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)

成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9 倍。同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势。Denis

2012-03-11 21:00:50 729

转载 当你走不下去的时候

正如“打工皇帝”唐骏说:“我觉得有两种人不要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人,头5年千万不要说你能不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……”         人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从磨难中获得的教益深。一个人在年轻时经历磨难,如能正确视之,冲出黑暗,那就是一个值得敬慕的人。最要紧的是先练好

2012-03-11 20:58:24 582

转载 全面剖析《自己动手写操作系统》第五章---makefile文件

转载请标注: 全面剖析《自己动手写操作系统》第五章---makefile文件  http://blog.csdn.net/zgh1988/article/details/73383801、make概述2、编译和链接3、makefile规则4、自己动手写makefile文件5、后记一、make概述        作为程序员,我们都有使用过Visualstd

2012-03-11 20:55:19 1101

glibc2.9源代码

glibc2.9 提供了标准c接口头文件和一些c库函数,对于c编程有一定的参考价值

2013-04-16

Linux内核设计的艺术

学习linux内核不错的资料 本书导读   前言   第1章 从开机加电到执行main函数之前的过程1   1.1 启动BIOS,准备实模式下的中断向量表和中断服务程序1   1.1.1 BIOS的启动原理2   1.1.2 BIOS在内存中加载中断向量表和中断服务程序3   1.2 加载操作系统内核程序并为保护模式做准备4   1.2.1 加载第一部分代码—引导程序(bootsect)5   1.2.2 加载第二部分代码—setup7   1.2.3 加载第三部分代码—system模块12   1.3 开始向32位模式转变,为main函数的调用做准备16   1.3.1 关中断并将system移动到内存地址起始位置0x0000016   1.3.2 设置中断描述符表和全局描述符表18   1.3.3 打开A20,实现32位寻址20   1.3.4 为在保护模式下执行head.s做准备21   1.3.5 head.s开始执行24   1.4 本章小结41   第2章 从main到怠速42   2.1 开中断之前的准备工作43   2.1.1 复制根设备号和硬盘参数表 44   2.1.2 物理内存规划格局45   2.1.3 虚拟盘设置与初始化46   2.1.4 内存管理结构mem_map初始化47   2.1.5 异常处理类中断服务程序挂接48   2.1.6 初始化块设备请求项结构50   2.1.7 与建立人机交互界面相关的外设的中断服务程序挂接52   2.1.8 开机启动时间设置55   2.1.9 系统开始激活进程056   2.1.10 进程相关事务初始化设置57   2.1.11 时钟中断设置59   2.1.12 系统调用服务程序挂接59   2.1.13 初始化缓冲区 。。。。。。。。。

2012-12-02

linux内存管理之伙伴系统分析(大内存分配)

linux内存管理之伙伴系统分析(大内存分配)

2012-04-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除