- 博客(210)
- 资源 (9)
- 收藏
- 关注

原创 欢迎Fork我们的开源云手机项目--OPENVMI(Virtual Mobile Infrastructure)(VMI)
基于ARM+Linux体系构建的VMI(Virtual Mobile Infrastructure)云平台
2020-09-20 17:04:26
16546
59
转载 Linux系统 - 文件I/O - 缓冲
下图概括了 stdio 函数库和内核所采用的缓冲(针对输出文件),以及对各种缓冲类型的控制机制。从图中自上而下,首先是通过 stdio 库将用户数据传递到 stdio 缓冲区,该缓冲区位于用户态内存区。当缓冲区填满时,stdio 库会调用 write()系统调用,将数据传递到内核高速缓冲区(位于内核态内存区)。最终,内核发起磁盘操作,将数据传递到磁盘。图左侧所示为可于任何时刻显式强制刷新各类缓冲区的调用。
2025-05-29 16:10:30
16
转载 Linux系统 - 文件I/O - 深入的问题
在探究系统调用时会反复涉及原子操作的概念。所有系统调用都是以原子操作方式执行的。之所以这么说,是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性加以执行,其间不会为其他进程或线程所中断。原子性是某些操作得以圆满成功的关键所在。特别是它规避了竞争状态。竞争状态是这样一种情形:操作共享资源的两个进程(或线程),其结果取决于一个无法预期的顺序,即这些进程1获得 CPU 使用权的先后相对顺序。将讨论涉及文件 I/O 的两种竞争状态,并展示了如何使用 open()的标志位,来保证相关文件操作的原子性,从而
2025-05-28 21:22:03
16
转载 Linux系统 - 文件I/O - 通用I/O模型
所有执行 I/O 操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件。文件描述符用以表示所有类型的已打开文件,包括管道(pipe)、FIFO、socket、终端、设备和普通文件。针对每个进程,文件描述符都自成一套。按照惯例,大多数程序都期望能够使用 3 种标准的文件描述符。在程序开始运行之前,shell 代表程序打开这 3 个文件描述符。更确切地说,程序继承了 shell 文件描述符的副本——在 shell 的日常操作中,这 3 个文件描述符始终是打开的。
2025-05-28 08:19:14
20
原创 Linux系统 - 系统编程概念
系统调用是,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。以应用程序编程接口(API)的形式,内核提供有一系列服务供程序访问。这包括创建新进程、执行 I/O,以及为进程间通信创建管道等。。为说明这点,下面以一个具体的硬件平台—x86-32 为例,按事件发生的顺序对这些步骤加以分析。外壳(wrapper)函数下图以系统调用 execve()为例,展示了上文述及事件的发生序列。在 Linux/x86-32 上,execve()的系统调用号为 11(__NR_execve)。
2025-05-27 21:00:00
726
原创 Android系统的JNI原理分析 - CallNonvirtualXXXMethod和CallXXXMethod的区别
是JNI中调用Java方法的标准方式,遵循Java的多态规则。:是一种特殊的调用方式,用于显式调用指定类中的方法,常用于需要精确控制方法调用行为的场景。
2025-05-20 11:06:20
27
原创 Linux中安装samba服务
通过以上步骤,你就可以在Linux服务器上成功安装和配置Samba服务,实现文件共享功能。为了访问Samba共享,需要创建一个Samba用户。安装完成后,需要对Samba进行配置。Samba的主配置文件是。首先,创建一个用于共享的目录,例如。
2025-05-15 16:00:59
280
原创 Linux操作系统中的SOCKET相关 - Socket字节序调整与网络传输
因为不同主机可能使用不同的字节序(大端序 Big-Endian 或小端序 Little-Endian),而网络协议标准规定使用**大端序(Network Byte Order)**作为统一格式。文本协议本身是字节流,无需处理字节序。字节序不影响单字节数据。
2025-05-13 21:30:00
377
转载 Linux操作系统中的SOCKET相关 - Internet Domain
计算机以二进制形式来表示 IP 地址和端口号,但人们发现名字比数字更容易记忆。使用符号名还能有效地利用间接关系,用户和程序可以继续使用同一个名字,即使底层的数字值发生了变化也不会受到影响。主机名和连接在网络上的一个系统(可能拥有多个 IP 地址)的符号标识符。服务名是端口号的符号表示。主机地址和端口的表示有下列两种方法。主机地址可以表示为一个二进制值或一个符号主机名或展现格式(IPv4 是点分十进制,IPv6 是十六进制字符串)。端口号可以表示为一个二进制值或一个符号服务名。
2025-05-13 21:00:00
22
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 终端/伪终端
在 Linux 系统中,**终端(Terminal)伪终端(Pseudo Terminal,PTY)**是用户与系统交互的重要组件,但它们的概念和实现方式有所不同。
2025-05-13 10:57:38
390
转载 Linux操作系统中的SOCKET相关 - UNIX DOMAIN
这可以通过使用两个 socket()调用和一个 bind()调用以及对 listen()、connect()、accept()(用于流 socket)的调用或对 connect()(用于数据报 socket)的调用来完成。为将一个 UNIX domain socket 绑定到一个地址上,需要初始化一个 sockaddr_un 结构,然后将指向这个结构的一个(转换)指针作为 addr 参数传入 bind()并将 addrlen 指定为这个结构的大小,如程序清单 57-1 所示。这种做法具备几点优势。
2025-05-12 22:00:00
34
转载 Linux操作系统中的SOCKET相关 - 基础
在一个典型的客户端/服务器场景中,应用程序使用 socket 进行通信的方式如下。各个应用程序创建一个 socket。socket 是一个允许通信的“设备”,两个应用程序都需要用到它。服务器将自己的 socket 绑定到一个众所周知的地址(名称)上使得客户端能够定位到它的位置。使用 socket()系统调用能够创建一个 socket,它返回一个用来在后续系统调用中引用该socket 的文件描述符。在后续将会对 socket domain 和类型进行介绍。
2025-05-12 10:25:37
31
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 消息队列
POSIX 消息队列 API 中的主要函数如下。mq_open()函数创建一个新消息队列或打开一个既有队列,返回后续调用中会用到的消息队列描述符。mq_send()函数向队列写入一条消息。mq_receive()函数从队列中读取一条消息。mq_close()函数关闭进程之前打开的一个消息队列。mq_unlink()函数删除一个消息队列名并当所有进程关闭该队列时对队列进行标记以便删除。上面的函数所完成的功能是相当明显的。此外,POSIX 消息队列 API 还具备一些特别的特性。
2025-05-08 21:28:47
837
原创 Linux操作系统中的事件通知机制 - 监控文件事件 inotify
使用 inotify API 有以下几个关键步骤1。应用程序使用 inotify_init()来创建 inotify 实例,该系统调用所返回的文件描述符用于在后续操作中指代该实例。应用程序使用 inotify_add_watch()向 inotify 实例(由步骤 1 创建)的监控列表添加条目,以告知内核哪些文件是自己的兴趣所在。每个监控项都包含一个路径名以及相关的位掩码。位掩码针对路径名指明了所要监控的事件集合。
2025-05-08 21:28:27
816
原创 Linux操作系统中的事件通知机制
Linux 提供了多种通知机制,用于进程间通信和事件通知,这些通知机制使得 Linux 应用程序能够高效地响应各种系统事件,而无需轮询。
2025-05-08 13:58:51
295
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 共享内存
POSIX 共享内存能够让无关进程共享一个映射区域而无需创建一个相应的映射文件。Linux 从内核 2.4 起开始支持 POSIX 共享内存。Linux 使用挂载于/dev/shm 目录下的专用 tmpfs 文件系统1。这个文件系统具有内核持久性——它所包含的共享内存对象会一直持久,即使当前不存在任何进程打开它,但这些对象会在系统关闭之后丢失。要使用 POSIX 共享内存对象需要完成下列任务。使用 shm_open()函数打开一个与指定的名字对应的对象。
2025-05-07 22:30:00
1721
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 信号量
本文将介绍 POSIX 信号量,它允许进程和线程同步对共享资源的访问。POSIX 信号量是一个整数,其值是不能小于 0 的。如果一个进程试图将一个信号量的值减小到小于 0,那么取决于所使用的函数,调用会阻塞或返回一个表明当前无法执行相应操作的错误。一些系统并没有完整地实现 POSIX 信号量,一个典型的约束是只支持未命名线程共享的信号量。只有在 Linux 2.6 以及带 NPTL 的 glibc 上,完整的POSIX 信号量实现才可用。
2025-05-07 22:00:00
880
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - POSIX IPC
三种 POSIX IPC 机制拥有很多共有特性。下表对它们的 API 进行了总结。
2025-05-06 20:00:00
1023
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 内存映射
mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种。文件映射:文件映射将一个文件的一部分直接映射到调用进程的虚拟内存中。一旦一个文件被映射之后就可以通过在相应的内存区域中操作字节来访问文件内容了。映射的分页会在需要的时候从文件中(自动)加载。这种映射也被称为基于文件的映射或内存映射文件。匿名映射:一个匿名映射没有对应的文件。相反,这种映射的分页会被初始化为 0。一个进程的映射中的内存可以与其他进程中的映射共享(即各个进程的页表条目指向RAM 中相同分页)。
2025-05-06 13:37:15
815
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - 管道和FIFO
每个 shell 用户都对在命令中使用管道比较熟悉,如下面这个统计一个目录中文件的数目的命令所示。ls | wc -l为执行上面的命令,shell 创建了两个进程来分别执行 ls 和 wc。(这是通过使用 fork()和exec()来完成的)下图展示了这两个进程是如何使用管道的。两个进程都连接到了管道上,这样写入进程(ls)就将其标准输出(文件描述符为 1)连接到了管道的写入端,读取进程(wc)就将其标准输入(文件描述符为 0)连接到管道的读取端。
2025-04-29 20:30:00
2006
原创 Android 系统的兼容性测试 - CTS Verifier、GTS、VTS、STS 等
兼容性测试检验器(Compatibility Test Suite Verifier) 是对 CTS 的补充,是一种手动测试,主要为没有手动输入(比如音频质量、加速度计等)无法在固定设备上测试的 API 和功能提供测试。
2025-04-27 16:06:35
996
1
原创 Android 系统的兼容性测试 - CTS
Google发布了AOSP版的Android源码,很多手机厂商会在AOSP的基础上做自己的定制化(小米、OPPO、VIVO等厂商),尽管很多都是针对底层的修改,不管他叫MIUI或者ColorOS,其实依然还是Android系统,越来越多的厂商导致了Android系统的碎片化。正如其中的解答,CTS并非强制性的,如果你的设备是个行业定制化的设备,并不是个传统意义的手机,也不需要获得GMS许可,只需要把你关注的部分CTS跑通即可。,其中有针对被测设备的,也有针对测试服务器的。的 Android 部分。
2025-04-27 16:06:19
670
原创 Linux/AndroidOS中进程间的通信&线程间的同步 - IPC方式简介
通常,将一个使用 UNIX domain socket进行通信的程序转换成一个使用 Internet domain socket进行通信的程序只需要做出微小的改动,这样只需要对使用 UNIX domain socket 的应用程序做较小的改动就可以将它应用于网络场景。)信号量的含义是由应用程序来确定的。如果 IPC 性能是至关紧要的,并且不存在应用程序在与目标系统匹配的环境中运行的性能基准,那么最好编写一个抽象软件层来向应用程序隐藏 IPC 工具的细节,然后在抽象层下使用不同的 IPC 工具来测试性能。
2025-04-23 21:55:50
886
原创 如何为Linux/Android Kernel 5.4和5.15添加 fuse passthrough透传功能 ?
参考:Google文档参考此文档,目前kernel.org提供的fuse passthrough补丁在6.9版本之后,但想要在5.4和5.15版本内核做移植应该如何简单点呢?文档中提到 Android的内核为5.4 和 5.15版本内核做了fuse passthrough功能,可以参考Android提供的内核版本来修改对应kernel.org发布的版本。(本文提供一个思路)
2025-04-03 10:27:37
514
原创 Android系统的安全问题 - 移动平台安全机制
系统中对权限的定义在文件中:frameworks/base/core/res/AndroidManifest.xml注意此时并没加入任何allow的policy。
2025-03-31 09:10:29
687
原创 Android系统的安全问题 - 操作系统安全机制
可执行文件:不活动就是废物进程:可执行文件的活动表现,一次生命的历练线程:CPU(核)的调度单位,并发的执行序列,进程的多管齐下资源和调度。
2025-03-31 08:49:44
709
原创 Android的安全问题 - 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor的目的
这种划分是 Android 保护核心系统安全、维护兼容性,同时允许厂商灵活定制的重要设计。如果需要扩展策略,优先使用public接口。避免直接依赖private内容。厂商自定义策略应放在vendor目录或设备特定的sepolicy路径。
2025-03-28 16:30:49
485
原创 Android系统的安全问题 - 有关强制执行 SELinux策略的直观操作指南(Your visual how-to guide for SELinux policy enforcement)
SELinux最初是在Fedora Core 3中引入的,后来在Red Hat Enterprise Linux 4中引入。对于那些从未使用过SELinux的人,或者想要一个解释…SElinux是一个标签系统。操作系统中每个进程都有一个标签,每个文件/目录对象都有一个标签。甚至网络端口、设备和潜在的主机名都有标签分配给它们。我们编写规则来控制进程标签对对象标签(如文件)的访问。我们称之为策略。内核执行这些规则。有时这种强制称为强制访问控制(MAC)。对象的所有者对对象的安全属性没有自由裁量权。
2025-03-28 09:05:34
606
原创 Android系统的安全问题 - Linux的能力模型(Capability)和 SELinux 的区别
是权限细分机制,解决 “root 权力过大” 的问题。SELinux是强制访问控制机制,解决 “进程能访问哪些资源” 的问题。两者互补,共同提升 Linux 安全性。
2025-03-26 17:13:22
491
原创 Android系统的安全问题 - Android的加密
Android 提供了多层次的加密方案来保护用户数据安全,从全盘加密到文件级加密,从硬件支持到软件实现。
2025-03-26 16:57:29
690
原创 Android系统的安全问题 - Android的启动时验证
是一项关键安全机制,用于确保设备启动过程中加载的所有系统镜像(如 Bootloader、内核、系统分区)未被篡改,防止恶意软件植入或 Root 攻击。Verified Boot 是 Android 设备安全的基石,与 TEE(如 Trusty)、加密(如 FBE)共同构建了从启动到运行的完整防护体系。,从硬件信任根开始,直到 Android 系统完全启动。Android 的启动验证是一个。
2025-03-26 16:46:01
553
原创 Android系统的安全问题 - Android的Trusty TEE
Trusty TEE 是 Android 安全架构的基石,通过硬件隔离保护最敏感的操作(如密钥、生物识别)。随着硬件升级(如专用安全芯片),Trusty 的能力将进一步扩展。(TEE)操作系统,用于在隔离的安全环境中运行敏感操作(如密钥管理、生物识别认证等)。它独立于 Android 主系统(Rich OS),确保即使 Android 被攻击,关键安全功能仍受保护。Trusty TEE(Trusted Execution Environment)是 Google 为 Android 设计的。
2025-03-26 16:29:18
1264
原创 Android系统的安全问题 - Android的keymaster和gatekeeper
Keymaster 和 Gatekeeper 是 Android 安全链条的核心环节,前者保障密钥安全,后者保障身份认证安全,二者结合为设备提供了从硬件到应用的完整保护。现代 Android 设备(如 Pixel、三星)均依赖它们实现高等级安全功能(如 Titan M 芯片)。是两大关键安全组件,分别负责硬件级别的密钥管理和设备解锁认证。Keymaster 提供基于硬件的加密密钥管理服务,用于保护敏感操作(如设备加密、支付认证、应用数据加密等)。(如可信执行环境 TEE 或专用安全芯片)的设备上。
2025-03-26 16:20:19
164
原创 系统架构设计师考试-专业英语
词汇含义access存取active-matrix主动矩阵adapter适配器,转换器adapter cards适配卡agents代理analog signals模拟信号animations动画applets程序arithmetic operations算术运算array数组,阵列assembly汇编,安装,装配asynchronous异步的,非同步的asynchronous communic
2024-03-20 09:20:32
606
原创 设计模式的另一种有趣理解
当系统的状态变化时,系统便改变所选的子类。跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说“有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。
2024-02-20 16:05:51
1332
原创 Linux系统中 ssh 连接其他服务器一段时间后卡死问题
在Ubuntu下经常需要通过SSH进行远程连接,使用过程中往往会遇到一个问题,就是命令行窗口在经过一段时间后就会卡死,无法输入命令。
2023-07-18 11:08:33
3237
3
ffmpeg_x264.tar.gz
2020-03-17
我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包
2017-09-24
本人编译的iconv.so 与其头文件
2017-09-18
Z-Stack_Home_1.2.2a.part3.rar
2017-09-18
Z-Stack_Home_1.2.2a.part2.rar
2017-09-18
Z-Stack_Home_1.2.2a.part1.rar
2017-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人