自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿特图

无忧无争,潜心成魔.

  • 博客(34)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 经典算法问题之约瑟夫问题

/*  据说著名犹太历史学家 Josephus有过以下的故事:  在罗马人占领乔塔帕特后,  39 个犹太人与Josephus及他的朋友躲到一个洞中,  39个犹太人决定宁愿死也不要被敌人抓到,  于是决定了一个自杀方式,41个人排成一个圆圈,  由第1个人开始报数,  每报数到第3人该人就必须自杀,  然后再由下一个重新报数,直到所有人都自杀身亡为止。  然而

2012-03-31 15:42:42 2421

原创 C排序之Shellsort

#include /* 希尔排序的原理: 希尔排序使用一个序列h(1),h(2),...,h(t)叫做增量序列 在使用增量h(k)的一趟排序后对于每一个i我们有A[i] 希尔建议的增量序列是:h(t) = [N/2]和h(k) = [h(k+1)/2] 这里也一次增量为例  希尔排序的时间复杂度: 小于O(N^2)属于亚二次*/typedef i

2012-03-30 22:25:02 659

原创 异步I/O之用户空间

Linux2.6异步I/O AIO的基本思想:  允许进程发起很多I/O操作,而不用阻塞或等待任何操作完成,稍后或在  接收到I/O操作完成通知时,进程可以检索I/O操作结果    在异步非阻塞I/O中,我们可以同时发起多个传输操作,这需要每个传输操作都有唯一的上下文  ,这样我们才能在他们完成时区分到底是哪个传输操作完成了,这个  工作可以通过aiocb结构体进行

2012-03-30 17:34:24 3757

转载 Linux异步IO操作

Linux异步IOLinux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(P

2012-03-30 15:35:26 16714 3

原创 C排序算法之插入排序

/*插入排序法*/#include #include /*排序思路:在第P次排序时将P位置上的数据插入到前P-1个数据中时间复杂度(O(N^2))*/初试初始34864513221移动的位置在P=1   之后            8                    34

2012-03-29 23:09:24 631

原创 异步操作之异步通知编程

我们前面介绍了阻塞与非阻塞的相关操作,其中poll()函数提供了较好的解决设备访问的基址,但是如果有了异步通知的整套基址就更加完整了。这次我就和大家一起来探讨一下Linux驱动开发中的异步操作  异步操作的概念与作用: 概念:一旦设备准备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态了 ,这一点与硬件上的"中断"概念非常相似  在原理上一个进程收到一

2012-03-29 20:35:51 840

原创 Linux阻塞与非阻塞I/O之poll与select

轮询操作 轮询操作的概念与作用:  使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的  访问。select()和poll()系统调用最终会引发设备驱动中的poll()函数被执行           应用程序中的轮询编程  应用程序中最广泛用到的BSD UNIX中引入的select()系统调用。原型为:

2012-03-27 22:20:05 2033

转载 物理地址与现行地址详解

文章出自:www.fishc.com1. Linear Space & Physical Space 在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64 MB。但在应用程序员眼中,并不过度关心插在主板上的内存容量,而是他们可以使用的内存空间——他们可以开发一个需要占用1 GB内存的程序,并让其在OS平台上运行,哪怕这台运行主机上只有12

2012-03-27 14:19:16 971

转载 80386控制寄存器

文章出自:www.fishc.com控制寄存器(控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。)从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。但CR1被保留,供今后开发的处理器使用,在 80386中不能使用CR1,否则会引起无效指令操作异常。CR0包括指示处理器工作方式的控制位,包含

2012-03-27 14:17:49 1100

转载 BIOS中断大全

1、显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标位置0EH —在Teletype模式下显示字符03H —读取光标信息0FH —读取显示器模式04H —读取光笔位置10H —颜色05H —设置显示页11H —字体06H、07H —初始化或滚屏12H —

2012-03-26 11:41:48 457

转载 DLL 中 DEF 文件的使用

原文出自:www.fishc.com  DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。首先创建 一个DLL程序,.cpp中int __stdcall Add(int numa, int

2012-03-25 11:18:34 504

转载 使用 DEF 文件导出 DLL

原文出自:www.fishc.com 模块定义 (.def) 文件是包含一个或多个描述 DLL 各种属性的 Module 语句的文本文件。如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 .def 文件。.def 文件必须至少包含下列模块定义语句:文件中的第一个语句必须是 LIBRARY 语句。此语句将 .def 文件

2012-03-25 11:17:50 766

转载 小甲鱼PE详解之资源(PE详解11)

原文出自:www.fishc.com最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^今天我们来谈谈资源部分,资源部分可以说是 PE 文件所有结构中,最复杂的一部分,也最让人揪心。很多朋友都想通过自己动手修改一些游戏的资源、工具的界面、或者一些软件的图标等,都知道要改资源部分。但纯粹一进去就像走进了迷宫……出不来……

2012-03-25 11:16:26 4639

转载 小甲鱼PE详解之基址重定位详解(PE详解10)

原文出自:www.fishc.com今天有一个朋友发短消息问我说“老师,为什么PE的格式要讲的这么这么细,这可不是一般的系哦”。其实之所以将PE结构放在解密系列继基础篇之后讲并且尽可能细致的讲,不是因为小甲鱼没事找事做,主要原因是因为PE结构非常重要,再说做这个课件的确是很费神的事哈。在这里再次强调一下,只要是windows操作程序,其就要遵循PE格式,再说人家看雪的网址就是www.pediy

2012-03-25 11:15:39 1050

转载 小甲鱼PE详解之输出表(导出表)详解(PE详解09)

原文出自:www.fishc.com小甲鱼PE详解之输出表(导出表)详解(PE详解09)当PE 文件被执行的时候,Windows 加载器将文件装入内存并将导入表(Export Table) 登记的动态链接库(一般是DLL 格式)文件一并装入地址空间,再根据DLL 文件中的函数导出信息对被执行文件的IAT 进行修正。基础补充:很多朋友可能看到这里会有点懵,各位看官请允许小甲鱼

2012-03-25 11:14:47 1074

转载 小甲鱼PE详解之输入表(导入表)详解2(PE详解08)

原文出自:www.fishc.com 在此之前,我们已经对这个输入表进行了一些实践和理解,这有助于大家对这个概念更进一步的加深认识。小甲鱼觉得,越是复杂的问题我们应该越是去动手操作它,认识它,这样才容易熟悉它!在上一节课我们像小鹿一样的乱撞,终于撞到了输入表里边包含的函数名称,嘿嘿,不过地址,我们还是没能找着……这节课我们将深入来剖析输入表的结构,通过结合实例分析来帮助大家理解输入

2012-03-25 11:13:42 1251

转载 小甲鱼PE详解之输入表(导入表)详解(PE详解07)

原文出自:www.fishc.com捷径并不是把弯路改直了,而是帮你把岔道堵上!走得弯路跟成长的速度是成正比的!不要害怕走上弯路,弯路会让你懂得更多,最终还是会在终点交汇!岔路会将你引入万劫不复的深渊,并越走越深……在开始讲解输入表(导入表)概念之前,请允许小甲鱼童鞋用简短的几句话来总结之前我们学过的内容,并做进一步的思想综合提升,注意咯!首先,我们知道PE 文件中

2012-03-25 11:10:35 1425

转载 小甲鱼PE详解之区块描述、对齐值以及RVA详解(PE详解06)

原文出自:www.fishc.com 各种区块的描述:很多朋友喜欢听小甲鱼的PE详解,因为他们觉得课堂上老师讲解的都是略略带过,绕得大家云里雾里~刚好小甲鱼文采也没课堂上的教授讲的那么好,只能以比较通俗的话语来给大家描述~通常,区块中的数据在逻辑上是关联的。PE 文件一般至少都会有两个区块:一个是代码块,另一个是数据块。每一个区块都需要有一个截然不同的名字,这个名字主要是用

2012-03-25 11:06:53 699

原创 Linux驱动阻塞与非阻塞IO之等待队列

上次我和大家一起探讨了Linux驱动中的竞态问题,本环节为们来探讨一下Linux驱动编写中的阻塞与非阻塞I/O阻塞与非阻塞I/O简介阻塞操作:是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作,被挂起的进程会进入休眠状态,被从调度器的运行队列中移除,直到条件被满足。非阻塞操作:是指在执行设备操作时,若不能获得

2012-03-22 20:42:17 3780

转载 Linux等待队列简介

转载自:http://www.360doc.com/content/10/1009/13/1317564_59573185.shtml相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去 读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是 没有加上 O_NONBLOCK 的情形),直到有

2012-03-22 10:25:40 1325

原创 Linux驱动之并发与竞态

并发控制与竞态: 并发是指多个单元同时、并行被执行,而并发执行单元对共享资源的访问 很容易导致竞态。 竞态的解释:  假设有一个设备,执行单元A对其写入3000个字符'a'而另一个执行单元B对  其写入4000个'b',第三个执行单元C读取globalmem的所有字符,如果执行单元A  、B对于设备的写入操作同时发生,此时就会造成竞态     竞争状态的分类:

2012-03-20 17:43:31 2301

转载 算法的时间复杂度

转[出处不明]   《大话数据结构》一书在一开始也针对算法的时间复杂度进行了说明。这里的讲解就非常明确,言简意赅,很容易理解。下面通过《大话数据结构》阅读笔记的方式,通过原因该书的一些简单的例子和说明来解释一下算法的时间复杂度和它的计算方法。首先从基本定义下手,来了解一下什么是“算法的时间复杂度”,《大话数据结构》一书中对算法的时间复杂度定义如下:“算法语句总的执行次数 T(n

2012-03-18 11:06:16 967

转载 小甲鱼PE详解之区块表(节表)和区块(节)续(PE详解05)

原文出自:www.fishc.com这一讲我们结合实例来谈谈区块表的定义以及各个属性的含义。首先,我们先用之前学过的一点知识在二进制文件中手动翻找区块表,这样做的好处是可以使你很快的对PE结构牢记于心。学来的东西就是能用的东西,不能用的理论是空谈,是瞎扯。(具体过程演示大伙可参考小甲鱼的视频教程:《解密系列》系统篇.第五讲)这里我们经过千辛万苦终于找到了我们的区块表了(当然

2012-03-16 15:43:33 1534

转载 小甲鱼PE详解之区块表(节表)和区块(节)(PE详解04)

原文出自:www.fishc.com越学越多的结构,大家可能觉得PE挺乱挺杂的哈,所以这里插播下一下必要知识的详细注释,大伙可以按需要看。PE文件到内存的映射在执行一个PE文件的时候,windows 并不在一开始就将整个文件读入内存的,二十采用与内存映射文件类似的机制。也就是说,windows 装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系。当

2012-03-16 15:42:23 1635

转载 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)

原文出自:www.fishc.com咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用!(视频教程:http://fishc.com/a/shipin/jiemixilie/)接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构,正如名字的意思,这是一个可选映像头,是一个可选的结构,但是呢,实际上上节课我们讲解的 IMAGE_

2012-03-16 15:41:18 992

转载 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)

原文出自www.fishc.comPE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段。下边小甲鱼将为大家详细讲解哈~ 首先是IMAGE_NT_HEADERS 结构的定义:(啥?结构不会,先看看小甲鱼童鞋的《零基础入门学习C语言》关于结构方面的章节吧~)IMAGE_NT_HEADERS

2012-03-16 15:38:06 1566

转载 小甲鱼PE详解之IMAGE_DOS_HEADER结构定义即各个属性的作用(PE详解01)

原文出自:www.fishc.com(注:最左边是文件头的偏移量。)IMAGE_DOS_HEADER STRUCT{+0hWORDe_magic//Magic DOS signature MZ(4Dh 5Ah)     DOS可执行文件标记+2h WORDe_cblp//Bytes on last page of file  +4hWORDe_cp//Pages

2012-03-16 15:36:01 5820

原创 linux字符设备驱动简介

Linux字符设备驱动用到的结构体cdev:既然要编写字符设备驱动,根据编程思想,需要把字符设备给抽象出来,在Linux2.6内核中,使用cdev结构体描述一个字符设备struct cdev{struct koject kobj;/*内嵌kobject对象*/struct module *owner;/*所属模块(详细请见我的“内核对象简介”)*/str

2012-03-15 12:55:54 1004

原创 Linux内核对象概念简介

最近研究Linux驱动开发,一直苦于一个词汇"内核对象",何为内核对象,现在就带大家一起来探讨一下Kobject是Linux2.6内核中引入的,用来表示驱动模型的核心对象机制:kobject将dentry(表示文件系统中的一个目录项)作为一个字段,这样就可以方便的kobject映射到一个dentry上,也就是说kobject与/sys下的任何一个目录或文件对应起来,形成与sysfs

2012-03-15 12:01:12 3113

原创 linux中两种主要的设备文件系统

1.devfs设备文件系统 起源:Linux2.4内核引入 优点:(1)可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载时删除   (2)设备程序可以指定设备名、所有者和权限位,并且用户空间程序可以修改它们   (3)不再需要为设备驱动程序分配主设备号以及处理次设备号,程序中通过register_chrdev()传递0,以获取可用的主设备号(在2.6内核中常使用regi

2012-03-15 10:51:10 3263 1

转载 链表的常见操作

转载自:http://blog.csdn.net/weiqubo/article/details/6788109链表是数据结构的重要内容,在计算机程序中应用广泛,同时也是各公司笔试题目的重点。以下简单实现了链表的一些操作,包括创建、增加节点、删除节点、单链表逆置、合并有序链表等。一、链表创建  链表主要有三种形式,包括单链表、双链表和循环链表。  单链表每个节点只包含一个后

2012-03-14 22:11:39 673

原创 android下可执行文件的真面目

大家都知道Window下的可执行文件是.exe或者是.dll,而如今android系统的发展也正如火如荼,平时你在只顾下载玩android游戏的时候有没有注意一下android平台下的可执行文件是什么,讲到这我想就算是在android下做过一段时间开发的人也可能会讲不清。会是.apk文件吗,一开始我也是这样认为的,上网搜了很多关键词,也都是模棱两可,下面我就带大家挖掘一下android平台下的可执

2012-03-08 18:47:30 15398 5

转载 http协议详解

转载自:Author :Jeffrey My Blog:http://blog.csdn.net/gueter/  引言                                       HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。

2012-03-08 18:45:08 608

转载 屏蔽Ctrl+alt+del

在Windows2000中Ctrl-Alt-Delete组合键的处理如下:           Winlogon初始化的时候,在系统中注册了CTRL+ALT+DEL   Secure   Attention   Sequence(SAS)热键,并且在WinSta0   Windows   系统中创建三个桌面。          SAS热键的注册使得Winlogon成为第一个处理

2012-03-02 22:14:04 3178 1

我已经编译好ok6410的uboot增加了网络功能(可直接使用

我已经编译好ok6410的uboot增加了网络功能(可直接使用

2012-08-15

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

TA关注的人

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