- 博客(59)
- 资源 (8)
- 收藏
- 关注
转载 《Linux性能及调优指南》1.2 Linux内存结构【原创翻译】
<br /><br />原文名称:《Linux Performance and Tuning Guidelines》<br />原文地址:http://www.redbooks.ibm.com/abstracts/redp4285.html<br />-------------------------------------------------------------------------------------------<br />1.2.1 物理内存与虚拟内存<br />1.2.2 虚拟内存管理
2011-03-09 15:54:00 951
转载 我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了)
<br />本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。<br /><br />一、概念<br /><br />物理地址(physical address)<br />用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。<br />——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事
2011-03-09 15:02:00 559
转载 Linux: fd_set用法
<br /><br />select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。<br /> 多端口复用函数select在调用前要首先设置监听的端口数目,FD_ZERO是清空端口集,FD_SET是设置端口集。<b
2011-03-04 13:26:00 837
转载 Android 的属性系统(翻译)
<br />由于对Android 的属性系统不是很了解,所以翻译了这篇文章《Android Property System》 。<br /><br />每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。<br /><br />在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system /init
2011-03-04 11:41:00 557
转载 How to run a Runnable thread in Android?
<br />The simple fix to your example is:<br /> finalRunnable r =newRunnable()<br />{<br /> publicvoid run()<br /> {<br /> tv.append("Hello World");<br /> handler.postDelayed(this,1000);<br /> }<br />};<br /><br />handler.postDelayed(
2011-02-10 15:16:00 1033
原创 Android中Handler、Thread(HanlderThread)、Runnable之间的关系
<br /><br /> 在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?<br /> 首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。<br /> 而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。<br /> HandlerThread顾名思义就是可以处理消息循环的线程
2011-02-10 15:05:00 884
转载 Android线程模型解析(包括UI的更新)
<br />1引言<br /> <br />Android一词本义指机器人,Google于2007年11月发布了以Android命名的开源移动设备综合平台,包括其基于Linux的操作系统、中间件和关键的手机应用。并且组建了开放手机联盟,其成员囊括了全球著名的各大手机生产商和移动运营商。2008年8月,Google又发布了网上应用商店Android Market。任何一个开发者只需要借助Android发布的SDK开发手机应用,即可把开发的应用在Android Market上销售。目前Android Marke
2011-02-10 14:55:00 1197 2
转载 Android 之 Java 多线程
<br /><br /> 多线程的好处无需多言。<br />这篇日记冠之以Android之名,实际上是Java提供语言级的对多线程程序的设计支持。<br />一:实现多线程的两种方式:<br /> 1:从Thread类继承,并重写run方法。<br /> 2:实现Runnable接口,并实现其中的run方法。<br />二:Java语言对多线的一些需要注意的事项。<br /> 1:Java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪一个线程在CPU上运行。<br />
2011-02-10 14:48:00 955
原创 详细解析SMS、EMS、MMS
<br /><br /> 每个使用手机的人都会发短信,但对于SMS、EMS、MMS短信的区别可能还有很多人不了解,在这里凌凯科技就为大家简单介绍。<br /><br /> SMS是Short Messaging Service(短消息服务)的缩写,是一种使用移动设备可以发送和接收文本信息的技术。一则SMS信息最多可达160个字节(约八十个汉字,因还要发送其他相关信息,因此一般的SMS短信对中文的限制是七十个汉字),与大约1秒钟的语音呼叫所占用的空间相当,故而其通讯费用十分低廉。消息的
2011-02-10 11:58:00 1885
转载 java中的多态性 是怎么体现的呢?
<br /><br />一、基本概念 <br /><br /> 多态性:发送消息给某个对象,让该对象自行决定响应何种行为。 <br /> 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。 <br /><br /> java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。 <br />
2011-01-25 18:00:00 1855
转载 两个与Android IPC有关的问题
<br /><br /> <br /> <br />1.文件描述符是如何在进程之间传递的?<br />我们知道文件描述符,就像虚拟内存的地址一样,是进程私有的资源。在一个进程中文件描述符,在另外一个进程中,可能是无效的,也可能是对应另外一个文件。 Android却可以把文件描述符从一个进程传到另外一个进程。第一次发现这种情况时,让我感到很惊奇,所以花了点时间去研究。看明白之后,发现其实现也很简单:status_t Parcel::writeFileDescriptor(int fd){ flat_
2011-01-25 17:59:00 870
转载 android binder 讲解(四)
<br /><br />Binder通信简介:<br /> Linux系统中进程间通信的方式有:socket, named pipe,message queque, signal,share memory。Java系统中的进程间通信方式有socket, named pipe等,android应用程序理所当然可以应用JAVA的IPC机制实现进程间的通信,但我查看android的源码,在同一终端上的应用软件的通信几乎看不到这些IPC通信方式,取而代之的是Binder通信。Google为什么要采用这种方式呢
2011-01-25 16:32:00 1018
转载 Android中的WatchDog
<br /><br />转载时请注明出处和作者联系方式<br />文章出处:http://www.limodev.cn/blog<br />作者联系方式:李先静 <xianjimli@gmail.com><br /> <br /> <br /> <br />现在的CPU基本上都带有WatchDog功能,这种硬件的WatchDog可以在系统死掉(死锁或者程序跑飞)后重启系统,让系统回到可以工作的状态。WatchDog不能防止系统死掉,但是它能够起死回生,从而提高系统的可用性。<br />硬件级的WatchDo
2011-01-25 15:55:00 845
转载 android binder 讲解(三)
<br /><br />o IBinder接口<br />IBinder接口是对跨进程的对象的抽象。普通对象在当前进程可以访问,如果希望对象能被其它进程访问,那就必须实现IBinder接口。IBinder接口可以指向本地对象,也可以指向远程对象,调用者不需要关心指向的对象是本地的还是远程。<br />transact是IBinder接口中一个比较重要的函数,它的函数原型如下:virtual status_t transact(uint32_t code,const Parcel& data, Parcel*
2011-01-25 15:05:00 1368
转载 android binder 讲解(二)
第一部分 Binder的组成 1.1 驱动程序部分驱动程序的部分在以下的文件夹中: Java代码 kernel/include/linux/binder.h kernel/drivers/android/binder.c binder驱动程序是一个miscdevice,主设备号为10,此设备号使用动态获得(MISC_DYNAMIC_MINOR),其设备的节点为: /dev/binder binder驱动程序会在proc文件系统中建立自己的信息,其文件夹为/proc/binder,其中包含
2011-01-25 15:00:00 1260
转载 android binder 讲解(一)
<br />下面进行详细讲述Android Binder机制问题,Binder机制是通过驱动的形式来实现,其实驱动程序的部分是保存在源代码的以下的文件中。<br /> <br />Android Binder机制大部分都是使用的IPC,进程间通信机制有很多种,例如linux中可以采用管道,消息队列,信号,共享内存,socket等,这些都可以实现进程间的通信。<br />Android Binder机制通信是基于Service与Client的,有一个ServiceManager的守护进程管理着系统的各
2011-01-25 14:56:00 2055
转载 Android传感器编程入门
<br />本讲内容:Android传感器编程入门,分别包括加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature)<br />一、前言<br />我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要弄个小包背起来的,智能手机则不同,它完全就是一个手机,可以随意装在
2011-01-20 13:20:00 4284 1
转载 Android HAL 分析
<br /><br />1 HAL简介<br /><br />Android 的 HAL(Hardware Abstract Layer硬件抽象层)是Google因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HAL 现在的「抽象程度」还不足,现阶段实作还不是全面符合 HAL的架构规划,不过也确实给了我们很好的思考空间。<br /><br /><br />图1:Android HAL 架构规划<br /><br />这是 Patrick Brady (Google) 在2008 Go
2011-01-18 18:19:00 909
转载 堆栈和缓冲区溢出
<br /><br />一、程序的内存映像<br />一个由 C/C++ 编译的程序的内存分布分为以下几个部分:<br />1 、 栈( stack ) : 也是我们所说的堆栈,是由编译器自动分配释放,用来存放函数参数值,函数的返回地址,非静态局部变量的值等。其操作方式类似于数据结构中的栈(后进先出 LIFO )。<br />2 、 堆( Heep ):一般由程序员分配释放,若程序员不释放,程序结束可能由 OS 回收。<br />3 、 全局区(静态区):全局变量和静态变量存储在这一块,初始化的全局变量河静
2011-01-18 15:17:00 1013
转载 nand flash坏块管理OOB,BBT,ECC
<br /><br /> <br />0.NAND的操作管理方式<br /> NAND FLASH的管理方式:以三星FLAHS为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes,除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码)。<br />
2011-01-16 13:29:00 989
原创 printf
<br /><br />printf<br />功 能:<br /> 产生格式化输出的函数<br />[编辑本段]<br />用 法:<br /> int printf(const char *format,[argument]);<br /> format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type<br /> 规定数据输出方式,具体如下:<br /> 1.type 含义如下:<br /> d 有符号10进制整数<br /> i 有符号
2010-12-16 10:52:00 1953
原创 Linux 2.6内核Makefile浅析
<br />1 概述<br />Makefile由五个部分组成:Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件)。.config:内核配置文件(一般由make menuconfig生成)。arch/$(ARCH)/Makefile:目标处理器的Makefile。scripts/Makefile.*:所有kbuild Makefile的规则,它们包含了定义/规则等。kbuild Makefiles:每个子目录都有kbuild
2010-12-10 17:25:00 2148
转载 Android开发之旅:HelloWorld项目的目录结构
引言前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Android项目的目录结构。本文的主要主题如下:1、HelloWorld项目的目录结构1.1、src文件夹1.2、gen文件夹1.3、Android 2.1文件夹1.4、assets 1.5、res文件夹1.6、AndroidManifest.xml1.7、default.properties1、HelloWorld项
2010-12-03 14:37:00 479
转载 android编写Service入门用法与教程
<br /><br />android SDK提供了Service,用于类似*nix守护进程或者windows的服务。<br />Service有两种类型:<br />1. 本地服务(Local Service):用于应用程序内部<br />2. 远程服务(Remote Sercie):用于android系统内部的应用程序之间<br />前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。<br />后者可被其他应
2010-12-03 14:16:00 468
转载 Android应用协调器------Intent
<br /><br />刚起步的时候经常困扰我们的是一些本来容易解决的问题,往往我们会花掉很大的力气去找解决的办法,最后才知道原来这么简单,这就是英文世界造成的。<br />Intent在Android应用开发中,占有很大的分量,关于Intent在Android中的作用在网络上已经有很多资料了,这里不再累赘,本人喜欢直来直去。在网上看到很多关于Intent的资料,说那么多,你也许还是一头雾水,到底如何使用Intent呢?这里总结一些重用的Intent使用,仅供参考。<br />下面直接给我学习的实例片段。<
2010-12-03 13:23:00 374
转载 C++ 类访问控制(public/protected/private)
<br />C++中 public,protected, private 访问标号小结<br />第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。<br />protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。<br />public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问
2010-12-03 11:50:00 470
转载 jni / C for android 技术总揽
<br />Android编译环境(1) - 编译Native C的helloworld模块<br /><br /><br />Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准的Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Androi
2010-12-02 14:11:00 472
转载 Android 系统启动分析(转)
init进程是Android启动后系统执行的第一个名称为init的可执行程序。这个程序以一个守护进程的方式运行,它提供了以下功能:设备管理解析启动脚本执行启动脚本中的基本功能执行启动脚本中的各种功能1、init可执行程序init 可执行文件是系统运行的第一个用户空间程序,它以守护进程的方式运行。因此这个程序的init.c文件包含main函数的入口,基本分析如下:int main(int argc,char**argv){ (省略若干。。。) umask(0); /*对umask进行清零
2010-12-02 13:18:00 484
转载 Linux 常用C函数说明-内存及字符串操作篇(中文版)
<br />strrchr(查找字符串中最后出现的指定字符)<br />相关函数<br /> index,memchr,rindex,strpbrk,strsep,strspn,strstr,strtok<br />表头文件<br /> #include<string.h><br />定义函数<br /> char * strrchr(const char *s, int c);<br />函数说明<br /> strrchr()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。<
2010-12-02 11:44:00 683
转载 2.6内核下的设备文件
<br />概述 <br />设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。 <br />Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设 备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理
2010-12-02 11:36:00 460
原创 两个特殊设备文件dev/zero dev/null
<br /><br />/dev/null:<br /><br />In Unix-like operating systems, /dev/null or the null device is a special file that discards all data written to it, and provides no data to any process that reads from it (it returns EOF). In Unix programmer jargon, it ma
2010-12-02 11:18:00 713
转载 分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Readthe Fucking Source code)!!init程序源码在Android官方源码的system/core/init中,main在init.c里。我们的分析就从main开始。init:(1)安装SIGCHLD信号。(如果父进程不等待子进程
2010-12-02 10:47:00 317
原创 整理一些常用的命令(适合初学者)
<br />inux中tail命令---用于查看文件内容<br /><br />最基本的是cat、more和less。<br />1. 如果你只想看文件的前5行,可以使用head命令,如:<br />head -5 /etc/passwd<br />2. 如果你想查看文件的后10行,可以使用tail命令,如:<br />tail -2 /etc/passwd 或 tail -n 2 /etc/passwd<br />tail -f /var/log/messages<br />参数-f使tail不停地去读最
2010-12-01 16:58:00 3520
转载 c++中冒号(:)和双冒号(::)的用法
<br /><br />1.冒号(:)用法<br />(1)表示机构内位域的定义(即该变量占几个bit空间)<br />typedef struct _XXX{<br /> unsigned char a:4;<br /> unsigned char c;<br />} ; XXX<br />(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。<br />struct _XXX{<br /> _X
2010-12-01 15:33:00 407
转载 android典型用户之多媒体播放
<br /><br />1. android多媒体介绍<br />android的多媒体功能基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、MP3、 AAC、 AMR、JPG、 PNG,底级实现在源码的external/opencore中<br />2. android框架对多媒体的支持<br />应用程序调用接口<br />frameworks/base/media/java/android/med
2010-11-30 13:43:00 400
转载 Android的键盘事件处理
<br /><br /> <br />1. 基本流程<br />1) 内核处理按键,通过设备文件的方式提供给framework层<br />2) framework层的KeyInputQueue.java启动线程从设备文件中读出键码,然后把读出的键码按kl文件转成相应键值(JNI调用EventHub.cpp),最后写入事件队列<br />3) framework层的WindowManagerService.java启动线程从事件队列中读出键值,然后根据
2010-11-30 13:43:00 1449
转载 android典型应用之gps
<br /><br />1. gps说明<br />a) 原理<br />每一卫星播发一个伪随机测距码信号,该信号大约每1毫秒播发一次。接收仪同时复制出一个同样结构的信号并与接收到的卫星信号进行比较,由信号的延迟时间(dT)推算出卫星至 接收仪的距离<br />b) 述语<br />TTFF:首次定位时间<br />PRN:伪随机码,用于辨别是哪颗卫星<br />SNR:信噪比<br />2. android对gps的内部支持<br />a)
2010-11-30 13:41:00 1091
转载 Android的开机流程
<br /><br />1. 系统引导bootloader<br />1) 源码:bootable/bootloader/*<br />2) 说明:加电后,CPU将先执行bootloader程序,此处有三种选择<br />a) 开机按Camera+Power启动到fastboot,即命令或SD卡烧写模式,不加载内核及文件系统,此处可以进行工厂模式的烧写<br />b) 开机按Home+Power启动到recovery模式,加载recovery.i
2010-11-30 11:52:00 1549
转载 android系统自带的Service原理与使用
<br /><br />1. 说明<br />android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提供软件包的安装移除及查看等等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据,以下将说明他们的工具流程<br />2. 举例说明基本流程<br />以and
2010-11-30 11:46:00 606
转载 android的包管理
<br /><br />1. 说明<br />包管理(Package manager)非常重要,它关系着软件包的安装,卸载,查看和使用,它是运行在后台的一个服务,名叫PackageManagerService,包括对软件包的解包,验证,安装等<br />2. 系统软件包管理信息存储在哪<br />/data/system/packages.xml<br />通过它可以看到系统安装的所有软件包,以及软件包的信息<br />3. 包管理相关源码在哪<br />frameworks/bas
2010-11-30 11:43:00 837
gdb 使用 详解
2009-12-01
GSM 手机定位技术
2009-12-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人