自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海纳百川

Standing on shoulders of giants. Thank you!

  • 博客(39)
  • 资源 (22)
  • 问答 (1)
  • 收藏
  • 关注

转载 Linux内核--内核地址空间分布和进程地址空间

Linux内核--内核地址空间分布和进程地址空间(转) 内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所

2012-10-25 16:42:40 1142

转载 Linux子进程对父进程资源“写时拷贝”

Linux子进程对父进程资源“写时拷贝”转:http://tech.ddvip.com/2009-02/1234347359108317.htmlLinux的fork()使用写时拷贝 (copy- on-write)页实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。  Linux进程创建,子进程对父进

2012-10-22 19:44:16 885

转载 U-Boot启动过程完全分析

1.1       U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:       (1)第一阶段的功能Ø  硬件设备初始化Ø  加载U-Boot第二阶段代码到RAM空间Ø  设置好栈Ø  跳转到第二阶段代码入口       (2)第二阶段的功能Ø  初始化本阶段使用的硬件设备Ø  检测系统内存映射Ø  将内核从Fla

2012-10-18 21:36:39 918

转载 linux内核调度算法(2)--CPU时间片如何分配

内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有的进程仿佛同时在执行。双核CPU,实际上最多只能有两个进程在同时运行,大家在top、vmstat命令里看到的正在运行的进程,并不是真的在占有着CPU哈。所以,一些设计良好的高性能进程,比如nginx,都是实际上有几颗CPU,就配几个工作进程,道理就在这。比如你的服务器有8颗CPU,那么nginx work

2012-10-17 21:17:24 1218

转载 linux内核调度算法(1)--快速找到最高优先级进程

为什么要了解内核的调度策略呢?呵呵,因为它值得我们学习,不算是废话吧。内核调度程序很先进很强大,管理你的LINUX上跑的大量的乱七八糟的进程,同时还保持着对用户操作的高灵敏响应,如果可能,为什么不把这种思想放到自己的应用程序里呢?或者,有没有可能更好的实现自己的应用,使得操作系统能够以自己的意志来分配资源给自己的进程?带着这两个问题来看看KERNEL。首先回顾上我们开发应用程序,基本上

2012-10-17 21:16:47 596

转载 linux内核调度算法(3)--多核系统的负载均衡

多核CPU现在很常见,那么问题来了,一个程序在运行时,只在一个CPU核上运行?还是交替在多个CPU核上运行呢?LINUX内核是如何在多核间调度进程的呢?又是内核又是CPU核,两个核有点绕,下面称CPU处理器来代替CPU核。实际上,如果你没有对你的进程做过特殊处理的话,LINUX内核是有可能把它放到多个CPU处理器上运行的,这是内核的负载均衡。上文说过,每个处理器上有一个runqueue

2012-10-17 21:15:19 919

转载 浅析linux 2.6.23 bus总线模型下match()和probe()函数调用顺序

将driver驱动内嵌的kobj对象添加到管理该driver的总线层次管理集合kset所管理的链表中,然后调用driver_attach()函数,遍历驱动所在bus总线的设备链表klist_devices检测该driver驱动程序是否可以为bus总线上未获得驱动的device设备提供驱动,进一步通过__driver_attach()函数检测设备是否可以被该driver驱动管理.__

2012-10-16 23:32:29 1284

转载 module_init的加载和释放

像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include #include #include     其中,init.h 定义了驱动的初始化和退出相关的函数,kernel.h 定义了经常用到的函数原型及宏定义,module.h 定义了内核模块相关的函数、变量及宏。    几乎每个lin

2012-10-16 14:35:28 795

转载 解密module_init幕后的故事

解密module_init幕后的故事在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x)        __

2012-10-16 10:24:31 680

转载 Linux设备驱动模型

2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l 代码重复最小化。l 提供诸如引用计数这样的统一机制。l 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l 可以将系统中的全部设备结构以树的形式完整、有效的展 现出来——包括所有的总

2012-10-15 23:49:15 640

转载 Linux Device和Driver注册过程,以及Probe的时机

田海立@CSDN2011/08/26Linux 2.6的设备驱动模型中,所有的device都是通过Bus相连。device_register() / driver_register()执行时通过枚举BUS上的Driver/Device来实现绑定,本文详解这一过程。这是整个LINUX设备驱动的基础,PLATFORM设备,I2C上的设备等诸设备的注册最终也是调用本文讲述的注册函数来实现的。

2012-10-15 23:13:01 1451

转载 有关上拉输入、下了输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及、浮空输入、模拟输入区别

有关上拉输入、下了输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及、浮空输入、模拟输入区别         最近在网上看见一些人对STM32的八种方式的解释,说了一大堆,最后看完了 也不知道讲了什么,为了方便大家一目了然,本人总结如下,希望对大家有帮助。 1、上拉输入:上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!弱强只

2012-10-15 10:03:06 26357 3

转载 嵌入式系统一些硬件概念

理解嵌入式开发中的一些硬件相关的概念       做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。电平(Level)       在数字电路中,分为高电平和低电平,分别用1和0表示。一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一

2012-10-15 08:38:11 2060

转载 Linux解压命令大全

linux下解压命令大全.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz

2012-10-12 22:17:01 475

转载 10道精彩的智力问题

10道精彩的智力问题1. 给一个瞎子52张扑克牌,并告诉他里面恰好有10张牌是正面朝上的。要求这个瞎子把牌分成两堆,使得每堆牌里正面朝上的牌的张数一样多。瞎子应该怎么做?答案:把扑克牌分成两堆,一堆10张,一堆42张。然后,把小的那一堆里的所有牌全部翻过来。2. 如何用一枚硬币等概率地产生一个1到3之间的随机整数?如果这枚硬币是不公正的呢?答案:如果是公正的

2012-10-12 22:13:51 1081

转载 100层楼摔鸡蛋问题

题目】有一栋100层高楼,从某一层开始扔下的玻璃杯刚好摔坏,现有两个玻璃杯,最少几次能找到那一层?reference http://my.oschina.net/kaixindewo/blog/16533【题目】有一栋100层高楼,从某一层开始扔下的玻璃杯刚好摔坏,现有两个玻璃杯,最少几次能找到那一层?首先我要对题目的表述提点意见。这是一个很有歧义的表述

2012-10-12 22:10:39 3540

转载 KDE/QT vs GNOME/GTK

虽然在商业方面存在竞争,GNOME与KDE两大阵营的开发者关系并没有变得更糟,相反他们都意识到支持对方的重要性—如果KDE和GNOME无法实现应用程序的共享,那不仅是巨大的资源浪费,而且将导致Linux出现根本上的分裂。     KDE 与GNOME是目前Linux/UNIX系统最流行的图形操作环境。从上个世纪九十年代中期至今,KDE和GNOME都经历了将近十年的漫漫历程,两者也都从最初的

2012-10-09 10:23:54 1036

转载 dup and dup2的剖析

dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区

2012-10-09 09:43:29 418

转载 linux c语言 select函数用法

linux c语言 select函数用法        Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线

2012-10-09 09:33:34 895

转载 Linux串口—struct termios结构体

一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员: tcflag_t c_iflag;      /* 输入模式 */tcflag_t c_oflag;      /* 输出模式 */tcflag_t c_cflag;      /* 控制模式 */tcflag_t c_lflag;      /* 本地模式

2012-10-08 22:08:25 694

转载 linux 中解析命令行参数

用Getopt在Linux下获取命令行参数的方法 用Getopt在Linux下获取命令行参数的方法 [摘要] 如果getopt()找不到符合的参数则会印出错信息,并将全域变量optopt设为“?”字符,如果不希望getopt()印出错信息,则只要将全域变opterr设为0即可。[关键字] GetoptLinux命令行参数  1、函数说明   表头文件:#include

2012-10-08 15:50:46 6298

转载 Linux driver中device_create()

使用内核版本Linux 2.6.32通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便。而这个过程就是通过device_create()和device_destroy()内核函数完成的,在Linux2.6.27之前是class_device_create()和class_device_destroy()。最近在开发过程中发现dev

2012-10-08 08:54:08 1567

转载 C语言运算符优先级

C语言运算符优先级顺口溜[转]醋坛酸味灌 味落跳福豆 共44个运算符 醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员 坛-单目,9个: ! ~ ++ -- -负号 (类型)   *指针 &取地址 sizeof长度 (结合方向:自右向左)酸-算术,5个: * / % + -减 味-位移,2个: > 灌-关系,6个: >= == 等于

2012-10-07 21:58:10 1342 1

转载 Unix/Linux 进程间通信之消息队列应用实例

场景:    进程A向消息队列写消息,而进程B则从消息队列读消息。消息队列和之前的管道不同,消息队列是相对独立于进程的,它不需要进程自己来提供同步方法。消息队列里面有消息就可以读。读取消息实例:msg_rcv.c[cpp] view plaincopyprint?#include    #include    #include    #include

2012-10-07 20:04:04 1077

转载 linux内核空间与用户空间信息交互方法

linux内核空间与用户空间信息交互方法本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。如果需要可以联系通过kanghua151@msn.com联系他。 摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用

2012-10-06 20:07:39 1173

转载 Linux设备驱动编程模型之上层容器篇

2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l        代码重复最小化。l        提供诸如引用计数这样的统一机制。l        可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l        可以将系统中的全部

2012-10-06 17:18:34 1131

转载 关于linux设备模型kobject,kset,ktype

--------------------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://blog.csdn.net/gdt_a20-------------------------------------------------------- 一、sysfs文件系统下的每个目录对应于一个kobj,k

2012-10-06 17:11:15 884

转载 linux 内核模块 参数

module_param()理解-------------------------------------------在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()module_param()宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#def

2012-10-06 15:47:10 873

转载 linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]

linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示。对于dev这个目录,我们知道它下面的文件,表示的是linux的设备。在windows系统中,设备大家很好理解,象硬盘,磁盘指的是实实在在硬件。而在文件系统的linux下面,都有对于文件与这些设备关联的。访问它们就可以放到实际硬件,想想还是linux灵活了。变成文件,操作该多简单了。不用调用以前com,prt等接口了。直接读

2012-10-06 14:32:59 680

转载 address_space与基树

address_space结构体,是页高速缓存(page cache)的核心数据结构。在很多时候,内核在读写磁盘时都引用页高速缓存,新页被追加到页高速缓存以满足用户态进程的读请求。如果页不在高速缓存中,新页就被追加到高速缓存。这样作的目的就是为了更快的效率,比如有一些页,经常被访问,那么此时,如果内存空间允许的话,可以考虑让它们长期驻留在页高速缓存中,这样要比从磁盘访问它们效率更高。而addres

2012-10-05 20:44:32 1607

转载 linux中的优先搜索树的实现--prio_tree

linux中的优先搜索树的实现--prio_treeprio_tree在linux内核中被应用于反向内存映射,prio-tree是一棵查找树,它查找的是一个区间,为何将之组织成tree是一个数学问题,简单理解就是根节点包含了所有的区间,父节点代表的区间包含了子节点代表的区间,这里的包含不是现实意义的包含,而是heap/radix意义上的包含,只要满足heap的性质以及radix的性质即

2012-10-05 20:26:33 4120

转载 Linux使用的缓存

6.7.1 Linux使用的缓存不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段。Linux 使用了多种和内存管理相关的高速缓存。1. 缓冲区高速缓存:缓冲区高速缓存中包含了由块设备使用的数据缓冲区。这些缓冲区中包含了从设备中读取的数据块或写入设备的数据块。缓冲区高速缓存由设备标识号和块标号索引,因此可以快速找出数据块。如果数据能够在缓冲区高速缓存中找到,则系统就没有必要在

2012-10-05 19:49:54 708

转载 页面上色机制以及CPU高速缓存的工作方式

页面上色机制以及CPU高速缓存的工作方式05 Apr 2011 \ fleuria ->摘译自:Design elements of the FreeBSD VM system 作者: Matthew Dillon 翻译:fleurerQ: Finally, in the page coloring section, it might help to hav

2012-10-05 19:47:26 1092

转载 buffer_head和bio

一、page和buffer_head的关系 1、页中的块在磁盘上连续如果page中的块在磁盘上连续,那么page的PG_private不会被置位,private字段也不会指向buffer_head的链表。 但是page还是得用到buffer_head结构,因为它需要通过get_block()函数来获得磁盘上的逻辑块号。虽然ext2_getblock()函数的代码我暂时还没有

2012-10-04 20:15:44 4549

转载 Linux下用文件的inode删除文件

文件的inode定义了文件的大小、所有人等文件的特征。每个文件和目录都有自己唯一的inode数字。但是为什么用inode来删除文件,而不是用常用的rm -rf命令呢?原因是,如果你不小心创建了含有特殊字符的文件和目录,比如带有 ? * ^ 的文件名,就会很难删除。下面我们就来介绍一下:1)如何找出文件和目录的inode;2)配合find命令,删除特定的inode文件;3)其他有用的删除顽固文件的方

2012-10-04 16:59:33 10956

转载 linux虚拟文件系统浅析

虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的namespace, 不同的namespace可能有着不

2012-10-04 10:37:46 713

转载 Linux堆栈溢出的经典问题

声明:本文章只是我学习的一个记录,有关引用的地方,我都会给出链接的。如果侵犯作者权益,请通知我及时删除。看了一下,Linux一站式学习的函数调用 ,搞的我热血沸腾,立马找你一下这方面的资料看看。终于看到了一个有关Linux堆栈溢出的文章,就拿来试试手了。参考 我的学习linux笔记(一)堆栈  下面来贴一下我的代码吧。基本和上篇文章一样的。[c-

2012-10-03 21:10:16 4575

转载 Linux内核高端内存管理

Linux内核高端内存SEP1120117 COMMENTSWRITTEN BY CHENLinux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。 Linux内核地址空间划分通常32位Linux内核地址空间划分0~3G

2012-10-03 15:43:44 1127

转载 禁用时钟中断,jiffies就不准了吗?

Linux驱动学习–时间、延迟及延缓操作  延迟执行  设备驱动常常需要延后一段时间执行一个特定片段的代码, 常常允许硬件完成某个任务.  长延迟  有时,驱动需要延后执行相对长时间,长于一个时钟嘀哒。  忙等待(尽量别用)  若想延迟执行若干个时钟嘀哒,精度要求不高。最容易的( 尽管不推荐 ) 实现是一个监视 jiffy 计数器的循环。这种忙等待实现的代码如下:

2012-10-02 16:50:17 4112

Android Layout 示例

包括LinearLayout、RelativeLayout、TableLayout、FrameLayout、AbsoluteLayout等常见layout的示例程序

2013-01-22

jlink固件及烧写说明 v7 and v8

jlink固件及烧写说明,本人按照此说明修复过n次,完全可用,里面不但有烧写工具、少些说明,还有v7、v8的固件,有此文件就再也不用担心jlink不干活了,呵呵

2011-11-14

51开发板Demo

一个51开发板的DEMO程序,包括SPI、RS485、DS18B20等等一系列DEMO,非常的全面,51系统中常用的都有了。

2011-11-14

12864液晶原理分析

12864液晶显示的原理,尤其是详细描述了12864的存储器结构,并且给出驱动代码。

2011-11-14

嵌入式原理方法工具课件--嵌入式系统设计方法

科大嵌入式系统原理 方法,授课教师 李教授 嵌入式系统设计方法

2011-02-21

CC2420资料文档

CC2420的资料文档,详细介绍了内部原理,还给出推荐电路

2011-02-21

数字温度传感器DS1820(DS18B20)的应用

数字温度传感器DS1820(DS18B20)的应用,详细介绍了DS1820的内部原理及应用

2011-02-21

温度传感器资料——PTN

一个关于PTN 温度传感器的资料 PTN

2011-02-21

DM500S电路图(全)

DM500S 电路图 完全版 DM500是一款非常经典的机器,国内用户量非常大,本电路图希望可以帮助感兴趣的人

2011-02-21

高保真WAV数码音乐播放器的设计文档

一款高保真WAV数码音乐播放器的设计文档,包括设计流程,嵌入式技术,PCB设计等

2011-02-21

时钟芯片DS1302 proteus仿真

DS1302 时钟芯片 proteus仿真 觉得还不错分享下

2010-01-17

2008科大信号与系统及答案.rar

科大 信号与系统 考研 考科大及中科院的很好的资料了

2009-11-22

coloredlistctrl

ClistCtrl 实例,关于ClistCtrl的方方面面都有,很好的例子

2009-11-22

Proteus下的点阵汉字

Proteus下的点阵汉字, 关于Proteus和点阵汉字的详细介绍和展望,很好

2009-07-25

哈夫曼编码 哈夫曼树

哈夫曼编码 输入权值即可生成哈夫曼码,程序中包含哈夫曼树的生成和遍历,不受平台限制 GCC编译通过

2009-07-25

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

TA关注的人

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