当前位置: 首页 > news >正文

android与linux之间的关系

篇一(system/core/init/init.c):

对Android感兴趣的朋友都知道,Android系统是建立在Linux内核之上的。那么Linux内核和Android什么关系?Linux内核是怎样引导起Android呢?本文进行简单的描述。

     Android虽然建立在Linux内核之上,但是他对内核进行了一些扩展,增加了一些驱动。比如Binder,loger等等驱动。可以拿Android内核代码和其Baseline版本进行对比。可以看到Android对Linux内核的所有扩展。

     熟悉Linux启动的朋友知道,首先Linux引导完成之后,会启动用户态的init进程(pid为0),这个进程在整个系统运行过程中起着非常重要的作用,如果你对init进程不了解请查相关资料。init完成系统的初始化工作,然后进入shell,接收用户的输入

     Android启动也没有什么神秘的,就是用自己的init进程替换了Linux内核的init进程,完成自己初始化工作(设备,文件系统等等初始化)。然后启动自己的虚拟机,程序等等的东西。Android的init进程的代码位于system/core/init/init.c下面,可以去查看其源码,来了解Android启动详细流程。Android启动流程的资料网上已经比较多,这里就不赘述了。

     可以看到移植Android过程中,调试init非常重要。因为所有和硬件平台相关的东西都这里初始化,所以init进程有可能需要移植或者配置。其他的进程都是和硬件无关的,理论上不需要修改就应该能够运行起来。

     经过上面的描述可以看出,Android的init进程起着一个承上启下的作用。承上——自动由Linux内核调用;启下——初始化Android各种设备和资源,然后启动Android相关的进程,直到引导起整个Android系统

转载于:https://www.cnblogs.com/Ph-one/p/4282101.html

相关文章:

  • linux-android(任务处理)
  • Android系统启动过程[典☆☆☆]
  • linux目录结构
  • make menuconfig错误的解决办法
  • ubuntu下 gedit中文乱码
  • Ubuntu12.04 安装adb
  • Error: Flash Download failed - Cortex-M0
  • ECU
  • 股份简介
  • 电钢琴型号
  • 一只饥饿的老虎
  • kernel command line 参数详解
  • android ramdisk
  • Ubuntu 12.04下安装QQ 2012 Beta3
  • arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 2017届校招提前批面试回顾
  • Leetcode 27 Remove Element
  • MySQL的数据类型
  • Vue.js源码(2):初探List Rendering
  • vue-loader 源码解析系列之 selector
  • zookeeper系列(七)实战分布式命名服务
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关于for循环的简单归纳
  • 前嗅ForeSpider中数据浏览界面介绍
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 物联网链路协议
  • 小程序测试方案初探
  • 译米田引理
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Java第九次作业--输入输出流和文件操作
  • $().each和$.each的区别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (31)对象的克隆
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (windows2012共享文件夹和防火墙设置
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (转)VC++中ondraw在什么时候调用的
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core控制台应用程序初识
  • .NET Core中Emit的使用
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 读取 JSON格式的数据
  • .Net 垃圾回收机制原理(二)
  • .NET 事件模型教程(二)
  • .NET中的Exception处理(C#)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @Autowired和@Resource的区别
  • @ModelAttribute使用详解
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Avalon] Avalon中的Conditional Formatting.