上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页
摘要: 编译器是将高级语言翻译成机器语言的一个工具,编译过程是对预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件,编译流程如下图所示。以C语言语句 array[index] = (index+4) * (2 + 6)为例进行分析。1 词法分析首先源代码程序被输入到扫描器(Scanner),扫描器进行词法分析,运用类似于有限状态机的算法将源代码的字符序列分割成一系列的记号(Tokens)。如上述的语句将被分割成:array [ index ] = ( index + 4 ) * ( 2 + 4 )等记号,词法分析产生的记号一般包括关键字,标识符,字面量(数字,字符串等) 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(244) 评论(0) 推荐(0)
摘要: autotools的使用流程autoscan->aclocal->autoconf-> automake->configure以helloworld为例加以说明:1)新建helloworld.c,并修改代码如下: int main(int argc,char** argv) { printf("hello world!"); }2)autoscan:autoscan:生成configure.scan3)编辑configure.scan,并重命名为configure.in 内容如下: # -*- Run autoconf -*-# Process th 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(451) 评论(0) 推荐(0)
摘要: 可穿戴计算技术浅析摘要可穿戴计算技术就是把计算机“穿”在身上进行应用的技术,该技术解放了人的双手,在对计算机操作时不影响双手做其他工作,其在工业,军事,医疗等方面有着广泛的应用,符合“以人为本”的发展思路。本文首先简单的介绍了可穿戴计算起源,基本特点及基本的应用模型;然后详细描述了可穿戴计算系统需要用到的关键技术;最后对全文进行了总结,对可穿戴计算技术的应用前景进行了分析。关键字可穿戴计算,移动计算,移动网络通信,微小型计算机1 可穿戴计算的起源 近几年来,在计算机领域出现了一个新的系统技术,这就是可穿戴计算技术(wearable computing)。顾名思义,可穿戴计算技术就是把计算机“穿 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(545) 评论(0) 推荐(0)
摘要: 最近准备花点时间学习下shell脚本语言,一是考虑到对以后找工作有帮助,因为很多上班了同学还有去面试的同学都说有的公司还是比较看重写shell脚本这个技能的,二是自己的工作需要,可能要写一些简单的脚本,虽然刚学linux时看《鸟哥的私房菜》时学过点皮毛,但现在已经忘的差不多了,刚好借这个机会系统学习一下。先将基础知识复习了一下,为进一步深入学习做准备。Shell脚本第一行的#!当一个文件中开头的两个字符是#!时,内核会扫描该行其余的部分,看是否存在可用来执行程序的解释器的完整路径(中间如果出现任何空白符号都会略过),此外内核还会扫描是否有一个选项要传递给解释器,内核会以被指定的选项来引用解释器 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(233) 评论(0) 推荐(0)
摘要: 单独编译某个内核模块编内核难免有的时候忘记了配置某个模块,导致该模块不可用,那是不是必须重新配置内核并重新编译呢,答案是否定的,完全可以单独编译某一个内核模块,我在使用最新的fuse-2.8.0-pre1时,发现其中已经没有fuse模块了,原来fuse从2.8版本开始就不包含内核模块了,其已作为内核源码的一部分发布。定位fuse模块内核代码/home/ydzhang/linux-2.6.19/fs/fuse/*.c查看其下的Makefile:# Makefile for the FUSE filesystem.obj-$(CONFIG_FUSE_FS) += fuse.ofuse-objs : 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(1267) 评论(0) 推荐(0)
摘要: 最近又碰到一个熟悉的问题,在准备修改代码的时候,刚开始只准备对一个地方做修改,结果写着写着有冒出很多想法,于是就一直改一直改,等把几个想法的代码完成之后,运行的时候碰到一些逻辑的错误,由于修改的地方太多,一下子也分析不出来是哪里出错了,然后很郁闷的定位错误,修改代码,直到功能正常,有时花在调试上的时间比重新写一遍还要长很多。版本控制工具给我们的开发工作带来很多便利,而我们使用svn commit这个动作往往很“吝啬”,这样svn都发挥不了自己的优势了,做版本控制时,每次修改最好只针对某一功能模块,写完之后commit并附上log信息,这样即使改完后有错误,也能马上定位错误源,从而提高效率。管理 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(101) 评论(0) 推荐(0)
摘要: UCARP允许多个主机共享一个虚拟的ip地址,以提供自动的故障恢复功能,当其中某个主机宕机时,其它的主机会自动接管服务。UCARP是CARP协议(通用地址冗余协议,最早在OpenBSD上实现)的linux实现版本,同时也能移植到其它多个unix平台,UCARP的官方网站:http://www.ucarp.org/project/ucarp 。 CARP协议的特点在于其非常低的开销,主机间使用加密数据传递信息,并且在冗余主机之间不需要任何额外的网络链接。下载ucarp源代码包:http://download.pureftpd.org/pub/ucarp/,在README中有ucarp的简单部署实 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(505) 评论(0) 推荐(0)
摘要: 最近学习块设备驱动程序的编写,在网上发现一个题为“写一个块设备驱动“的教程,共包含15章,教程最先是在chinaunix论坛上发的,很多人的博客都转载了这组文章,是一个叫赵磊的大牛写的,拜读了一下,教程写得通俗易懂,很有收获。本文对这组文章的内容进行了简要的概括,并附上每章的链接,当然,你google一下也能找到一大堆。第一章内容概括:模块的编写,块设备的基础编程结构,gendisk及其request_queue的管理,简单块设备驱动的实现(初始化gendisk,实现request_queue的处理方法),对块设备进行格式化文件系统并使用。链接1:http://hi.baidu.com/jjb 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(666) 评论(0) 推荐(0)
摘要: 最近在使用filp_open打开文件时遇到到一个问题,当打开一个并不存在的文件时,filp_open返回值值为0xfffffffe,而并不是0(NULL),这是因为内核对返回指针的函数做了特殊处理。内核中的函数常常返回指针,通常如果调用出错,会返回NULL空指针,但linux做了更精妙的处理,能够通过返回的指针体现出来。对任何一个指针,必然有三种情况:一种是有效指针,一种是NULL,空指针,一种是错误指针,或者说无效指针。而所谓的错误指针就是指其已经到达了最后一个page,比如对于32bit的系统来说,内核空间最高地址0xffffffff,那么最后一个page就是指的0xfffff000~0x 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(1734) 评论(2) 推荐(0)
摘要: 很多库函数,特别是那些与操作系统有关的,当执行失败时会通过一个名称为errno的外部变量,通知程序该函数调用失败。如: /* 调用库函数 */ if(errno) /* 处理错误 */ 上面看似清楚明了的代码,其实是错误的,出错原因在于,在库函数没有失败的情况下,并没有强制要求库函数一定要设置errno为0,这样errno的值可能是前一个执行失败的库函数设置的值。做如下修改: errno ... 阅读全文
posted @ 2013-04-19 14:06 ydzhang 阅读(228) 评论(0) 推荐(0)
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页