摘要:linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的安全性,比如X86可以有4种模式RING0~RING3 RING0特权模式给LINUX内核空间RING3给用户空间linux内核是如何组成的?答:linux内核由SCI(System Call Interface)系统调用接口、PM(Process Management)进程管理、MM(Memory Management)内存管理、Arch、VFS(Virtual File Systerm)虚拟文件系统、NS(Ne
阅读全文
07 2011 档案
摘要:Linux 3.0正式发布(7月21日)已经过去3~4天了,不见国人有什么反响,四处似乎很安静。何故哉? 去年这个时候,Linux打假;今年这个时候,Office打架,使人很心烦。如今这个时候,有谁还拿Linux来说事儿?近日,科研经费陷“无底黑洞”一文,似乎又唤起了人们的良知,看问题的视角变了。 记得,2003年11月18日,我正好在厦门软件园,Linux 2.6正式发布了。可以公正地说,一切现代的GNU/Linux成就是从个版本开始的。从此,Linux 2.6.1;Linux 2.6.2;Linux 2.6.3... ...直到Linux 2.6.39相继发布。实际上,Linux 3.0.
阅读全文
摘要:上周五,Linus Torvalds终于发布了备受瞩目的新一代Linux操作系统内核。Linux Kernel 3.0经过了七个RC候选版才推出正式版本,上一个版本是5月19日的2.6.39,也是2.6系列的第39次升级维护。八年来,Linux开发人员一直致力于2.6版本的改进工作,新版本提升到3.0是为了纪念Linux风雨走过的20年,同时也精简了越来越复杂的版本号。上周五,Linus Torvalds终于发布了备受瞩目的新一代Linux操作系统内核。Linux Kernel 3.0的发布,代表着Linux开源新时代的到来。之前曾有消息称,Linus Torvalds在其Google+帖子中
阅读全文
摘要:在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!如果不扯得太远的话(比如说操作系统中虚拟内存和物理内存如何运做如何管理之类的知识等),我感觉这篇文章应该是比较全面地谈了一下malloc()和free().这篇文章由浅入深(不见得有多深)分三个部分介绍主要内容。废
阅读全文
摘要:一、一定要养成一个规范标准的代码排版格式,好的排版会让帮助你的人事半功倍。二、一定要培养自己查找错误的能力,要记住别人只帮你一时。三、一定要养成写注释的习惯,特别是你的代码要给别人看时。四、遇到问题,一定不要立刻问别人,其实很多问题都是自己不小心所致,回头看看书你可能会明白原来这也很简单。五、多看看头文件中的内容,它能告诉你标准地调用库函数的方法。六、书上的程序其实都是比较经典的,何不在上机运行一下这些程序,看看你对程序的理解力是怎么样的。七、优秀的程序员不只对书本上的知识了解很透澈,而且对更深层次的知识有着强烈地吸引力。八、一定要跟上世界的脚步,闭门造车会导致你失败的很重要的原因。九、一定要
阅读全文
摘要:我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。 例如我要在一段代码中多次交换两个变量的值,我可以在代码中多次写入i=x;x=y;y=i; 不过这样未免有点麻烦我们可以编写一个change_two_int()函数进行简化。定义如下函数:void change_two_int(int *a,int *b) { int c; c=*a; *a=*b; *b=c; } 这样每次要进行交换时只需
阅读全文
摘要:http://armboard.taobao.com/ 已经有一些的文章介绍Android内核了,本系列篇将从Linux内核的角度来分析Android的内核,希望给初学者提够有用的信息。本章将简单的介绍Android内核的全貌,起到一个抛砖引玉的作用。从下一篇开始将详细介绍每一个Android内核驱动程序及其作用。 Android内核是基于Linux 2.6内核的(目前最新开发版本是2.6.31),它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,其核心驱动主要包括: Android Binder,基于OpenBinder框架的一个驱动,用于提供An..
阅读全文
摘要:如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很长时间。使用模块编译,那只需要在你所在的模块的目录或者其子目录,执行mm,便可以编译出一个单独的apk,这样岂不快哉!具体步骤: 1)打开~/.baserc文件,加入source ~/I850/build/envsetup.sh. 加入你自己该文件所在的路径,这样就免去了每次启动新的终端执行mm命令之前,需要引用此文件。 2)完成步骤1之后,就可以在你的模块里面随意执行mm了,要想使用其他快速命令,可以查看envsetup.sh文件,比如cgrep,jgrep,resgrep在不同类型的文件里面进行相应的查询...
阅读全文
摘要:__attribute__详解GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。__attribute__语法格式为:__attribute__ ((attribute-list))其位置约束为:放于声明的尾部“;”之前。函数属性(Function Attri
阅读全文
摘要:只有 pthreads 使用属性和取消功能。本章中介绍的 API 仅适用于 POSIX 线程。除此之外,Solaris 线程和 pthreads 的功能大致是相同的。有关相似和不同之处的更多信息,请参见第 8 章,Solaris 线程编程。属性对象通过设置属性,可以指定一种不同于缺省行为的行为。使用 pthread_create(3C) 创建线程时,或初始化同步变量时,可以指定属性对象。缺省值通常就足够了。属性对象是不透明的,而且不能通过赋值直接进行修改。系统提供了一组函数,用于初始化、配置和销毁每种对象类型。初始化和配置属性后,属性便具有进程范围的作用域。使用属性时最好的方法即是在程序执行早
阅读全文
摘要:对消息队列的操作无非有下面三种类型:1、 打开或创建消息队列消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,只需提供该消息队列的键值即可;注:消息队列描述字是由在系统范围内唯一的键值生成的,而键值可以看作对应系统内的一条路经。2、 读写操作消息读写操作非常简单,对开发人员来说,每个消息都类似如下的数据结构:struct msgbuf{long mtype;char mtext[1];};mtype成员代表消息类型,从消息队列中读取消息的一个重要依据就是消息的类型;mtext是消息内容,当然长度不一定为1。因此,对于发送消息来说,首先预置一个m
阅读全文