《Professional Assmebly Language》的第十二章是《Using Linux System Call》,这一章围绕系统调用展开,并对比了C库函数调用。在过往的经历中,我对函数调用的认识全都止于C库函数,这次终于有了对系统调用的初步认识,于是从一开始便对int $0x80的疑惑,在这一章有了一个清晰的答案。
Linux系统调用(system call)的过程是这样的:
- 首先,将要调用的system call number放入到eax寄存器中;
- 然后,将参数按照要求依次放入ebx、ecx等寄存器中;
- 接着,调用int $0x80;
- 最后,从eax寄存器中获取返回值。
整个过程比较简单,–除了获取返回值时可能会遇到复杂的数据结构。
[ Read More » ]
在上文当中提到的service命令,它是如何获得服务的信息呢?这个这个仅为275行的简单程序(framework/base/cmds/service/service.cpp)并未有什么特别神奇的地方,从本质上它对服务信息一无所知,所有的信息都是通过IPC获得。
IPC(Inter Process Communication)几乎总是伴随着Service出现,–不论是系统服务,还是应用服务,因为服务运行的进程大部分和应用运行的进程不同。
Android有意淡化IPC,甚至使其透明,就连Android Dev Guide也只是对IPC只做简明的解释说明,Android这样做的目的是降低应用开发的技术门槛,使开发者更多关注业务逻辑等商业价值点。
注意:RPC的全称为Remote Procedure Call,虽然和IPC只有一字之差,但并不相同。
IPC只是一种概念,实现IPC的方式有多种,例如在linux上你可以使用socket等,而Android中则采用了Binder。
[ Read More » ]
1 9 月, 2011 in
Software | tags:
Android |
No Comments
大千世界,具体到社会运作,抽象至软件运行,不以规矩,不成方圆 ,所有的一切都要接受约束和管理,在一系列规则下生存。那么Android中众多的service又是如何被管理的?
Manage Android Service
Service要在Android系统中发挥作用,首先要解决一个问题:Android是如何使其成为系统服务的。
以AlarmManagerService为例,观察构造函数的调用位置,那么可以发现其出现在com.android.server.ServerThread,与此相似,很多Service的构造函数都出现在com.android.server.ServerThread。但是,令人奇怪的是,无论如何也找不到ServerThread.java这么一个文件,实际上它躲藏在SystemServer.java中。
注意:多个class声明在同一个文件里是一种不值得推荐的做法,尽管Android中这种做法并不少见。
[ Read More » ]
30 8 月, 2011 in
Software | tags:
Android |
No Comments
直到刚刚,我才从五周年聚会的情绪当中缓过神儿来,觉得有必要将心里想说的话给形成文字,以记载此时此刻的感想。
应该说我不是一个稀里糊涂的人,字典里没有“混”这个字眼。当聚会上被问起过去五年,你做了什么?我很清楚身后的路。
Java与品高
毕业的头一年,我进入了一家叫做品高的公司,公司起初不大,六七十人的规模,典型的项目型组织结构。
入职后,新员工培训一直持续到当年的十一月,从HTML到PL/SQL,从Java到.Net,涉猎范围涵盖了当时大部分业界常用技术。这极大地打开了我的技术视野,直到现在仍在受益。
[ Read More » ]
26 8 月, 2011 in
Thinking |
3 Comments
Service一词在Android中出现的概率非常大,以致不同上下文(Context)在着较大差异。如果详细划分,则可以分为四类:Application Service、Android Service、Native Service、System (Linux) Service。
尽管存在着差异,但是透过Reference中对Application Service的描述,仍旧可以概括出所有Service的本质:
A Service is an (application) component representing either an application’s desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.
[ Read More » ]
26 8 月, 2011 in
Software | tags:
Android |
No Comments