上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页
摘要: Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是 Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。1. 字符设备和块设备Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:它们可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和 I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。Linux系统中的所有硬件设备都使用一个特殊的设备文件来表示,例如,系统中的第 一个I 阅读全文
posted @ 2012-06-30 22:04 KingsLanding 阅读(6478) 评论(0) 推荐(0) 编辑
摘要: 游程编码是对数据压缩的一种方式,这写了一个简单的二值游程编码程序,程序功能如:原始输入:0001110011010100001100 ,压缩之后输出:33221111422也就是相当于记录每个值连续出现的次数,作为编码值。#include <iostream>#include <string>#include <vector>#include <queue>#include <iterator>using namespace std;int main(){ string str("0001110011010100001100 阅读全文
posted @ 2012-06-27 22:28 KingsLanding 阅读(1574) 评论(0) 推荐(0) 编辑
摘要: 最近C++程序写的比较少,需要平时多写才行啊。写了一个大整数运算的程序。#include <iostream>#include <vector>#include <cstring>#include <algorithm>#include <ostream>using namespace std;typedef vector<int>::iterator Iter;class bign{ public: bign() { num.clear(); } bign(int n) { ... 阅读全文
posted @ 2012-06-27 21:37 KingsLanding 阅读(3632) 评论(0) 推荐(0) 编辑
摘要: CONST:the C++ compiler avoids creating storage for a const, but instead holds the definition in its symbol table. When you use extern with const, however, you force storage to be allocated .const modified value cannot be used at compile time because the compiler is not required to know the contents 阅读全文
posted @ 2012-06-25 19:29 KingsLanding 阅读(866) 评论(0) 推荐(0) 编辑
摘要: 图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色?图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的最小色数m的问题称为m-着色优化问题。算法思路:color[n]存储n个顶点的着色方案,可以选择的颜色为1到mt=1对当前第t个顶点开始着色:若t>n则已求得一个解,输出着色方案即可否则,依次对顶点t着色1到m, 若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯,测试下一颜色。/*===== 阅读全文
posted @ 2012-06-20 23:01 KingsLanding 阅读(934) 评论(0) 推荐(0) 编辑
摘要: 这里介绍的马尔科夫链算法实现的功能是:读入一段英文文本,构造出由这个文本中语言使用情况而形成的统计模型,然后根据统计模型随机输出另一段文本。 马尔科夫链算法的基本思想是:将输入想象成一些相互重叠的短语构成的序列,把每个短语分割为两个部分:一部分是由多个词构成的前缀,另一部分是只包含一个词的后缀。马尔科夫链算法能够生成输出短语的序列,其方法是依据原文本的统计性质,随机地选择跟在前缀后面的特定后缀。采用三个词的短语就能够很好工作,这三个词中前两个词构成前缀来选择作为后缀的一个词设置:w1和w2为文本的前两个词输出w1和w2循环: 随机地选出w3,它是文本中w1w2的后缀中的一个 打印w3 把w.. 阅读全文
posted @ 2012-06-18 22:27 KingsLanding 阅读(10490) 评论(0) 推荐(1) 编辑
摘要: 使用gvim在windows环境下搭建简单的IDE环境可以参见:http://my.oschina.net/u/146511/blog/50717该文章讲的很详细,而且给出了各种辅助插件的下载链接。这里主要讲如何在gvim环境下通过快捷键编译程序。如果需要编译C/C++程序,首先将微软的cl 编译器 加入到环境变量中,也就是说在cmd 模式下能够使用cl。这里就首先来讲一下如何将 cl 加入到环境变量中。如果是使用VS2010及更低版本需要这样做:我的电脑->属性->高级系统设置->环境变量新建:INCLUDE 、LIB、PATH 三个变量,填入下面的值:假设我的VS2010 阅读全文
posted @ 2012-06-16 22:56 KingsLanding 阅读(9704) 评论(0) 推荐(0) 编辑
摘要: 这里主要实现两个线程间通信,当flag = 10 之后通知另外一个线程(也就是“Linux内核多线程(二)”中的程序的各种平台实现)。首先是C++ 11 的方式:#include <thread>#include <iostream>#include <mutex>#include <queue>#include <condition_variable>#include <atomic>using namespace std;const int M = 10;int main(){ mutex lockBuffer; in 阅读全文
posted @ 2012-06-14 23:05 KingsLanding 阅读(2561) 评论(0) 推荐(0) 编辑
摘要: 自己创建的内核线程,当把模块加载到内核之后,可以通过:ps –ef 命令来查看线程运行的情况。通过该命令可以看到该线程的pid和ppid等。也可以通过使用kill –s 9 pid 来杀死对应pid的线程。如果要支持kill命令自己创建的线程里面需要能接受kill信号。这里我们就来举一个例,支持kill命令,同时rmmod的时候也能杀死线程。#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/param.h>#includ 阅读全文
posted @ 2012-06-13 21:12 KingsLanding 阅读(6226) 评论(0) 推荐(0) 编辑
摘要: 接上 一篇文章,这里介绍另一种线程间通信的方式:completion机制。Completion机制是线程间通信的一种轻量级机制:允许一个线程告诉另一个线程工作已经完成。为使用 completion, 需要包含头文件 <linux/completion.h>。可以通过以下方式来创建一个 completion :DECLARE_COMPLETION(my_completion);或者, 动态创建和初始化:struct completion my_completion;init_completion(&my_completion);等待 completion 是一个简单事来调用: 阅读全文
posted @ 2012-06-13 20:49 KingsLanding 阅读(5717) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页