Linux提供两种信号量:
1、内核信号量,由内核控制路径使用
2、System V IPC信号量,由用户态进程使用
从本质上说,它们实现了一个加锁原语,即让等待者睡眠,直到等待的资源变为空闲。
信号量
内核信号量类似于自旋锁,因为当锁关闭着的时候,它不允许内核控制路径继续运行。然而,当内核内核控制路径试图获取内核信号量所保护的忙资源时,相应的进程被挂起。只有在资源被释放时,进程才再次变...
分类:
其他好文 时间:
2014-05-18 18:43:39
阅读次数:
294
什么是堆,什么是栈,什么是数据段,什么是代码段...这些都是历史遗留问题,如今编程真的没有必要在意这些了!不要被/proc/xx/{maps,smaps}里面的内容所迷惑和萦绕,自己管理好自己的内存分配就好,如果程序不是自己写的,那么就找写它的人。本文将从一个链接动态库的可执行文件如何载入进程地址空间开始,谈一下我对进程地址空间布局的看法。我没有采用精确的方式描述ELF或PE文件如何载入的,而仅仅...
分类:
其他好文 时间:
2014-05-18 18:23:26
阅读次数:
378
SystemServer是Android系统的核心,APK应用中能够直接交互的大部分系统服务都在该进程中运行,常见的比如WindowManagerServer(Wms)、ActivityManagerSystemService(AmS)、 PackageManagerServer(PmS)等,这些系统服务都是以一个线程的方式存在于SystemServer进程中。
startSystemServe...
分类:
移动开发 时间:
2014-05-18 14:30:12
阅读次数:
505
在android程序应用中经常会遇到点击返回键时提示再按一次退出程序。
要实现这个功能需要完成两点:
一、能够彻底退出程序
·之前看到有人用 finish();,其实这样做并不能真的退出程序,这样只是结束当前的Activity,一个程序中是可以有多个Activity的,在android可以彻底关闭进程的方法有好几种。
第一种:
// 获取当前进程的id
int p...
分类:
其他好文 时间:
2014-05-18 13:39:53
阅读次数:
245
守护进程也是一种进程,它由如下特性:
1、生存期较长,在系统自举时启动,仅在系统关闭时终止。
2、没有控制终端,在后台运行。
系统中有很多守护进程,它们执行日常事务活动。如日志进程syslogd、web服务器httpd、邮件服务器sendmail和数据块服务器mysqld等。大多数守护进程都是以超级用户(用户ID为0)特权运行。没有一个守护进程具有控制终端,其终端设置为问号(?),终端前台进...
分类:
系统相关 时间:
2014-05-18 09:32:23
阅读次数:
366
(一)不可靠信号
对前面说的信号,是不可靠的,不可靠指的是信号可能会丢失:一个信号发生了,但进程却可能一直不知道这一点。另外,进程对信号的控制能力有限,只能捕捉信号或忽略它。有时用户希望通知内核阻塞一个信号:不要忽略它,在其发生时记住它,然后在进程做好准备时再通知它。这种阻塞信号的能力并不具备。
之前的版本中村咋一个问题:在进程每次接到信号对其进行处理时,随即将该信号动作复位为默认值。另一个问...
分类:
系统相关 时间:
2014-05-18 06:48:10
阅读次数:
290
IPC就是进程间通信。
进程间通信可以采用的方法很多,比如创建端口后采用组播技术进行握手连接,这里要讲到的就是通过内存文件映射的方法实现。...
分类:
Web程序 时间:
2014-05-18 06:28:37
阅读次数:
327
本文参考《Android系统源代码情景分析》,作者罗升阳
一、测试代码:
~/Android/external/binder/server
----FregServer.cpp
~/Android/external/binder/common
----IFregService.cpp...
分类:
移动开发 时间:
2014-05-18 06:08:05
阅读次数:
494
线程是一种使程序在同一时间做多件事的机制,和进程一样是并发执行的。linux内核调度为每个线程分配一个时间片,使用完后等待下次调度。和进程相比,线程是一种更小的执行单位。
每个进程启动后都会有一个线程在运行,称为主线程,可以在主线程中启动多个子线程,这些线程在同一个进程中,不同线程在给定时间内执行不同的代码片段。
我们可以fork一个子进程,这个子进程就是对父进...
分类:
编程语言 时间:
2014-05-18 04:58:16
阅读次数:
307
IPC进程间通信+共享内存Mapping
IPC(Inter-Process Communication,进程间通信)。
文件映射(Mapping)是一种将文件内容映射到内存地址的技术,通过对映射内存,读写文件如同读写内存一般简单。
多个进程映射同一个文件映射对象,也即多个进程映射到同一个物理存储页面,因此,当一个进程...
分类:
移动开发 时间:
2014-05-18 04:28:39
阅读次数:
324