自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (6)
  • 收藏
  • 关注

原创 关于回溯算法的递归与非递归解法

<br />摘要:本文简要描述了回溯算法的基本思路,并给出了几个典型实例的源码<br />关键字:回溯,搜索,非递归,全排列,组合,N皇后,整数划分,0/1背包<br />回溯是按照某种条件在解空间中往前试探搜索,若前进中遭到失败,则回过头来另择通路继续搜索。<br />符号声明:<br />解空间:[a1,a2,a3,...,an];<br />x[k]为解空间元素的索引, 0 <= x[k] < n;k为数组x的索引;<br />a[x[0~n-1]]表示一组解。<br />//判断解空间中的a[x[k

2011-05-30 16:35:00 8236

转载 linux内存管理

关于页面的使用<br />在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。<br />1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内核栈;等等。从伙伴系统分配页面是最基本的页面分配方式,其他的内存分配都是基于这种方式的;<br

2011-05-26 17:42:00 1095

转载 关于全排列组合算法

全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。即以3开头的和4,5的全排列的组合、以4开头的和3,5的全排列的组合和以5开

2011-05-25 11:22:00 1779

转载 KMP算法研究

KMP算法,网上有很多版本,我看了一些,大都不太满意。所以自己写了一个,跟网上的都不一样。但KMP算法的思路肯定是一样的(毕竟这算法是人家想出来的,我只是用了我个人的风格去实现,愿多提宝贵意见)。    其实KMP算法很简单,书上和网上的讲解大多都力求精细,我觉得这只能做个参考。初学者一般还是要有人来点拨和自己揣摩。现在,我搞懂了KMP算法,我就可以说出KMP算法的要害。好啦,废话少说,转入正题。    KMP算法的要害就是: GetNext()函数。它就是要获取下一个要比较的模式串中的位置。抓住这个要害不

2011-05-24 14:42:00 618

转载 关于Linux内存管理的一些资料

Linux常用内核态内存分配方式总结一、             alloc_pages类此类函数主要包括:struct page * alloc_page(unsigned int gfp_mask)——分配一页物理内存并返回该页物理内存的page结构指针。struct page * alloc_pages(unsigned int gfp_mask, unsigned int order)——分配 个连续的物理页并返回分配的第一个物理页的page结构指针。unsigned long get_free_p

2011-05-17 10:22:00 1983

原创 如何在linux中查看程序占用的内存

<br />用free查看到的是整个系统的,用top看到的是所有的程序.<br /> top -d 1<br />然后shift + m(按占用内存大小排序)

2011-05-16 17:19:00 5451

转载 Linux操作系统的内存使用方法详细解析

<br />我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 <br /><br />  一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 <br /><br />  Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。 <br /><br />  这里要提到一个很重要的概念,内存的延迟分配。

2011-05-16 17:15:00 1059 1

转载 南桥、北桥、FSB、PCI、AGP、PCIE

内容来自:百度百科   芯片组(Chipset)是主板的核心组成部分,联系CPU和其他周边设备的运作。如果说中央处理器(CPU)是整个电脑系统的心脏,那么芯片组将是整个身体的躯干。 在电脑界称设计芯片组的厂家为Core Logic,Core的中文意义是核心或中心,光从字面的意义就足以看出其重要性。对于主板而言,芯片组几乎决定了这块主板的功能,进而影响到整个电脑系统性能的发挥,芯片组是主板的灵魂。芯片组性能的优劣,决定了主板性能的好坏与级别的高低。这是因为目前CPU的型号与种类繁多、功能特点不一,如果芯片

2011-05-16 15:56:00 8422

转载 Linux设备驱动之pci设备的枚举

<br />一 前言 PCI,是Peripheral Component Interconnect的缩写,翻译成中文即为外部设备互联。与传统的总线相比,它的传输速率较高,能为用户提供动态查询pci deivce和局部总线信息的方法。此外,它还能自动为总线提供仲裁。在近几年的发展过程中,被广泛应用于多种平台。 PCI协议比较复杂,关于它的详细说明,请查阅有关PCI规范的资料,本文不会重复这些部份。 对于驱动工程师来说,PCI设备的枚举是PCI设备驱动编写最复杂的操作。分析和理解这部份,是进行深入分析PCI设备

2011-05-16 14:58:00 1722

转载 Linux内核访问外设I/O资源的方式

<br />我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态映射(ioremap)方式 动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,从而可以在内核空间中访问这段I/O资

2011-05-16 13:18:00 514

原创 关于ioremap

void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) <br />入口: phys_addr:要映射的起始的IO地址; <br /><br />size:要映射的空间的大小; <br /><br />flags:要映射的IO空间的和权限有关的标志; <br /><br />功能: 将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问; <br /><br />实现:对要映射的IO地址空间进行判

2011-05-16 13:11:00 634

原创 IO端口与内存空间

<br />(1)关于IO与内存空间:<br />    在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、out指令格式为:<br />    IN 累加器, {端口号│DX}<br />    OUT {端口号│DX},累加器<br />    目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在内存空间。内存空间可以直接通过地址、指针来访问,程序和程序运行中使用

2011-05-16 13:04:00 1404

转载 linux驱动开发常用函数及函数

Region的操作函数__XXX_region(),Linux在头文件include/linux/ioport.h中定义了三个对I/O内存资源进行操作的宏:  ①request_mem_region()宏,请求分配指定的I/O内存资源。  ②check_ mem_region()宏,检查指定的I/O内存资源是否已被占用。  ③release_ mem_region()宏,释放指定的I/O内存资源。  这三个宏的定义如下:   #define request_mem_region(start,n,name)

2011-05-16 10:04:00 1449

原创 module_param、 MODULE_PARM_DESC 、EXPORT_SYMBOL

<br />在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param ()<br />module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:<br />#define module_param(name, type, perm)<br />module_param_named(name, name, type, perm)<br /><br />其中使用了 3 个参数:

2011-05-13 15:48:00 12249

高效学习linux内核—新手必看—本人极力推荐

本文档是我偶然间在网上看到的,感觉是一篇不可多得的好文章,很是值得内核学习的新手们看一下。祝你们好运!

2010-10-22

Intel笔试面试题

本文档包含了较多的Intel笔试面试题,希望对大家有所帮助!

2010-10-08

Linux内核中断分析

Linux内核中断分析,希望对初学者有所帮助!

2010-04-28

基于ARM的嵌入式Linux系统异常和中断的实现及优化

基于ARM的嵌入式Linux系统异常和中断的实现及优化。

2010-04-28

威盛电子笔试题和答案

本资料详细记载了威盛笔试答案,但愿对有需要的朋友有所帮助

2010-04-28

深入浅出Linux设备驱动编程

本教材采用深入浅出的方法详细描述了Linux驱动开发的方法及原理,是初学者的案头必备资料

2010-04-03

空空如也

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

TA关注的人

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