热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FirefoxOS系统进程初步分析底层系统继承自android

FirefoxOS的编译过程依赖了android的SDK和NDK,并且为了减少开发成本,它利用了android现有的驱动以及底层的工具如adb等。当刷

FirefoxOS 的编译过程依赖了 android 的 SDK 和 NDK,并且为了减少开发成本,它利用了android 现有的驱动以及底层的工具如 adb 等。

当刷机 Firefox OS 之后我们的 adb 命令依然可以像操作 android 一样使用。接下来我们简要分析 Firefox 的系统结构,主要根据就是 adb shell ps 得到的进程列表。


Linux 内核

从前面的进程可以看出 Firefox 是基于Linux 内核,这一点没有任何疑问。




firefoxOS 和 android 的关系

可以从基础服务进程的对比中发现: firefox 主要去除了 zygote, sufaceflinger 增加了 b2g

所以 firefox 没有 java 的执行环境,它的视图显示的方法也完全不同于android

而新增的 b2g 则是 boot to Gecko 的缩写,推测其为系统的核心进程



b2g

在运行几个应用之后发现,在 top 命令下排在第一第二位子的是 b2g 和 plugin-container 所以可以推测其执行方式类似于浏览器和浏览器插件


PIDCPU%#THRVSSRSSPCYUIDName
47338%1275604K39468Kfgapp_473/system/b2g/plugin-container
7731%45196096K85448Kfgroot/system/b2g/b2g
531%10K0Kfgrootirq/173-k3g
4900%1996K404Kfgroottop
420%10K0Kfgrootkworker/u:1
40%10K0Kfgrootkworker/0:0




进程列表


USERPIDPPIDNAME
root10/init
root20kthreadd
root32ksoftirqd/0
root42kworker/0:0
root62khelper
root72suspend
root82sync_supers
root92bdi-default
root102kblockd
root112khubd
root122kinteractiveup
root142kswapd0
root152fsnotify_mark
root162crypto
root292kapmd
root302pvr_timer
root312sec_jack_wq
root322irq/38-sec_head
root332irq/167-fsa9480
root342mtdblock0
root352mtdblock1
root362mtdblock2
root372mtdblock3
root382mtdblock4
root392mtdblock5
root402mtdblock6
root412spi_gpio.3
root432kworker/u:2
root502f_mtp
root512file-storage
root522irq/308-mxt224_
root532irq/173-k3g
root542gp2a_wq
root562irq/172-s3c-sdh
root572binder
root582krfcommd
root592irq/334-cypress
root602max8998-charger
root612irq/39-max8998-
root621/sbin/ueventd
root632yaffs-bg-1
root642mmcqd/0
root652mmcqd/0boot0
root662mmcqd/0boot1
root672yaffs-bg-1
root682jbd2/mmcblk0p1-
root692ext4-dio-unwrit
root712jbd2/mmcblk0p2-
root722ext4-dio-unwrit
system731/system/bin/servicemanager
root741/system/bin/vold
root771/system/bin/fakeperm
root781/system/b2g/b2g
radio791/system/bin/rilproxy
root801/system/bin/netd
root811/system/bin/debuggerd
radio821/system/bin/rild
drm831/system/bin/drmserver
media841/system/bin/mediaserver
bluetooth851/system/bin/dbus-daemon
root861/system/bin/installd
keystore871/system/bin/keystore
gps881/system/vendor/bin/gpsd
shell891/system/bin/sh
root901/sbin/adbd
root1192pvr_workqueue
root1702flush-179:0
root2302iscan_sysioc
root2312dhcp_sysioc
root2322dhd_watchdog
root2332dhd_dpc
root2342dhd_sysioc
wifi2421/system/bin/wpa_supplicant
app_24924978/system/b2g/plugin-container
app_25225278/system/b2g/plugin-container
dhcp2611/system/bin/dhcpcd
app_33933978/system/b2g/plugin-container
root35690/system/bin/sh
app_44244278/system/b2g/plugin-container
root4532kworker/u:1
root4542flush-31:4
root4552flush-31:6
app_46246278/system/b2g/plugin-container
root5002kworker/u:3
root5092kworker/0:1
app_55855878/system/b2g/plugin-container
app_57257278/system/b2g/plugin-container
app_59359378/system/b2g/plugin-container



推荐阅读
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
author-avatar
喵喵方小幺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有