上一页 1 2 3 4 5 6 7 ··· 10 下一页

2012年11月20日

摘要: 转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.htmlvolatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数 据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。 下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void test(){do1();while(flag==0);d 阅读全文
posted @ 2012-11-20 15:31 i活着 阅读(186) 评论(0) 推荐(0)
摘要: 转自:http://hi.baidu.com/yuzjgfsuhpbamqq/item/fdb3044e8c68343efa8960351.内存对齐:计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数k则被称为该数据类型的对齐模数(alignment modulus)2.不同编译器默认的最大对齐字节数是不一样的,比如vc==8,gcc==4,可以通过#progma pack (n)来修改,分析程序的时候要注意编译器的区别3.一个结构体里面,按照alignment modulus最大的数据成员来进行对齐,超过编译器规定最大的对齐字节 阅读全文
posted @ 2012-11-20 15:30 i活着 阅读(207) 评论(0) 推荐(0)

2012年11月19日

摘要: 一、自旋锁(spinlock)简介 自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。 二、信号量简介 这里也介绍下信号量的概念,因为它的用法和自旋锁有相似的地方。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。 三、自旋锁和信号量对比 在很多地方自旋锁和信号量可以选择任何一个使用,但也. 阅读全文
posted @ 2012-11-19 21:05 i活着 阅读(1782) 评论(0) 推荐(0)

2012年11月12日

摘要: 转自:http://oss.org.cn/kernel-book/ch05/5.3.2.htm调度程序虽然特别重要,但它不过是一个存在于内核空间中的函数而已,并不神秘。Linux的调度程序是一个叫Schedule()的函数,这个函数被调用的频率很高,由它来决定是否要进行进程的切换,如果要切换的话,切换到哪个进程等等。我们先来看在什么情况下要执行调度程序,我们把这种情况叫做调度时机。Linux调度时机主要有:1、进程状态转换的时刻:进程终止、进程睡眠;2、当前进程的时间片用完时(current->counter=0);3、设备驱动程序4、进程从中断、异常及系统调用返回到用户态时;时机1,进 阅读全文
posted @ 2012-11-12 14:48 i活着 阅读(731) 评论(0) 推荐(0)
摘要: 转自:http://sunyqlinux.blog.51cto.com/542006/126612关于linux图形界面的基本知识 很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限可能存在错误,请高手指正. 一,linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的. 图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linu... 阅读全文
posted @ 2012-11-12 14:47 i活着 阅读(624) 评论(0) 推荐(0)
摘要: 函数名称:exit头文件:<stdlib.h>函数原型:void exit(int state)函数用途:程序中止执行,返回调用过程输入参数:state 0-正常中止,非0-非正常中止1,exit 用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由 atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建 的临时文件。2,exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而re 阅读全文
posted @ 2012-11-12 14:45 i活着 阅读(1227) 评论(0) 推荐(0)

2012年11月6日

摘要: 假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐《高级unix环境编程》,黑话叫APUE还有《unix网络编程》这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好内核开发阅读内核源码阶段,从写驱动入手逐 阅读全文
posted @ 2012-11-06 12:52 i活着 阅读(474) 评论(0) 推荐(0)

2012年11月5日

摘要: 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup, 该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++继承了C的特色,既为高级语言,又含低级语言 阅读全文
posted @ 2012-11-05 21:50 i活着 阅读(180) 评论(0) 推荐(0)
摘要: 转自:http://www.cnblogs.com/wwang/archive/2011/01/27/1944406.html入门类 一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。 现在的Linux初学者是幸福的,随着Linux桌面环境越来越易用,入门一个新的系统是非常容易的事情。虽然命令行对于提高工作效率更加有效,但我们完全可以把熟悉命令的过程放到日常使用中进行。无论学习什么知识,在实践中学习都是高效而且有趣的。在这. 阅读全文
posted @ 2012-11-05 21:36 i活着 阅读(245) 评论(0) 推荐(0)
摘要: 1. 中断 Linux内核要对连接到计算机上的所有硬件设备进行管理,首先要能和它们互相通信。从所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上。所以,需要一种机制,如果轮询(polling)是一种解决办法,可以让内核定期对设备的状态进行查询,然后做出相应的处理,但这让内核做了不少无用功。 更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号。这就是中断机制。中断本质上是一种特殊的电信号,由硬件设备生成,并直接送入中 断控制器的输入引脚上,再由中断控制器向处理器发送相应的信号,处理器一经检测到此信号,便中断自己当前工作转而处理中断,最后由OS来负责处理新到来的数据。中 阅读全文
posted @ 2012-11-05 15:58 i活着 阅读(408) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 10 下一页

导航