- 4
- 0
- 约1.81万字
- 约 15页
- 2017-06-18 发布于福建
- 举报
Android本质上就是一个基于Linux内核的操作系统
Android本质上就是一个基于Linux内核的操作系统。与Ubuntu Linux、Fedora Linux类似。只是Android在应用层专门为移动设备添加了一些特有的支持。既然Android是Linux内核的系统,那么基本的启动过程也应符合Linux的规则。如果研究过其他Linux系统应该了解,一个完整的Linux系统首先会将一个Linux内核装载到内存,也就是编译Linux内核源代码生成的bzImage文件,对于为Android优化的Linux内核源代码会生成zImage文件。该文件就是Linux内核的二进制版本。由于zImage在内核空间运行,而我们平常使用的软件都是在应用空间运行(关于内核空间和应用空间的详细描述,可以参考 HYPERLINK /main/product.aspx?product_idddclickunion=P-263982|ad_type=0|sys_id=1 \l dd_refer=http%3A%2F%2F%2Fnokiaguy 《Android深度探索(卷1):HAL与驱动开发》一书的内容,在后续的各卷中将会对Android的整体体系进行全方位的剖析)。内核空间和应用空间是不能直接通过内存地址级别访问的,所以就需要建立某种通讯机制。
???? 目前Linux有很多通讯机制可以在用户空间和内核空间之间交互,例如设备驱动文件(位于/dev目录中)、内存文件(/proc、/sys目录等)。了解Linux的同学都应该知道Linux的重要特征之一就是一切都是以文件的形式存在的,例如,一个设备通常与一个或多个设备文件对应。这些与内核空间交互的文件都在用户空间,所以在Linux内核装载完,需要首先建立这些文件所在的目录。而完成这些工作的程序就是本文要介绍的init。Init是一个命令行程序。其主要工作之一就是建立这些与内核空间交互的文件所在的目录。当Linux内核加载完后,要做的第一件事就是调用init程序,也就是说,init是用户空间执行的第一个程序。
在分析init的核心代码之前,还需要初步了解init除了建立一些目录外,还做了如下的工作
1. 初始化属性
2. 处理配置文件的命令(主要是init.rc文件),包括处理各种Action。
3. 性能分析(使用bootchart工具)。
4. 无限循环执行command(启动其他的进程)。
???? 尽管init完成的工作不算很多,不过代码还是非常复杂的。Init程序并不是由一个源代码文件组成的,而是由一组源代码文件的目标文件链接而成的。这些文件位于如下的目录。
Android源代码本目录/system/core/init
???? 其中init.c是init的主文件,现在打开该文件,看看其中的内容。由于init是命令行程序,所以分析init.c首先应从main函数开始,现在好到main函数,代码如下:
int main(int argc, char **argv)
{
int fd_count = 0;
struct pollfd ufds[4];
char *tmpdev;
char* debuggable;
char tmp[32];
int property_set_fd_init = 0;
int signal_fd_init = 0;
int keychord_fd_init = 0;
bool is_charger = false;
if (!strcmp(basename(argv[0]), ueventd))
return ueventd_main(argc, argv);
if (!strcmp(basename(argv[0]), watchdogd))
return watchdogd_main(argc, argv);
/* clear the umask */
umask(0);
// 下面的代码开始建立各种用户空间的目录,如/dev、/proc、/sys等
mkdir(/dev, 0755);
mkdir(/proc, 0755);
mkdir(/sys, 0755);
mount(tmpfs, /dev, tmpfs, MS_NOSUID, mode=0755);
mkdir(/dev/pts, 0755);
mkdir(/dev/socket, 0755);
mount(devpts, /dev/pts, devpts, 0, NULL);
mount(proc, /proc, proc
您可能关注的文档
最近下载
- 学习、教学和评估的分类学(布鲁姆教育目标分类学修订版).pdf VIP
- 515省道建设工程(427省道改线)环境影响报告书.pdf VIP
- 中超联赛治理共同体建设的基本内涵、现实情境与发展路径.docx VIP
- 建筑设备安装识图与施工(给排水识图).ppt VIP
- 小儿海姆立克急救法课件(1).pptx VIP
- 年产10万吨硫酸工艺设计.docx VIP
- 建筑设备安装识图与施工工艺.docx VIP
- 课程标准建筑设备安装工程识图施工工艺课程整体教案.docx VIP
- 暑假预习《文言文》早背晚默小纸条++++++++++++++2025-2026学年统编版语文八年级上册.docx VIP
- 中医九种体质养生课件.ppt VIP
原创力文档

文档评论(0)