计算机系统运作背后,存在一系列复杂且严密的步骤。从系统启动至应用程序顺利运行,其间涉及众多值得深入研究的细节。这些步骤虽然可能不为大众所熟知,却至关重要。
系统启动的起始:引导程序
引导程序是系统启动的关键。当电脑开启,它便迅速展开工作。在美国部分数据中心的大型计算机里,引导程序在精确的时间点启动。其主要任务是对硬件设备进行初始化,确保系统能够识别并使用这些设备,比如CPU、主板、显卡等。同时,它还构建内存空间映射图,为数据在内存中的存储指定位置,避免混乱。完成这些后,它为操作系统内核提供了必要的运行环境,使系统能够顺畅地启动和加载。此外,引导程序还会解析init.rc配置文件,其中包含了启动许多基础服务进程的指令,确保了系统底层关键服务的稳定运行。
程序引导的任务包括启动属性服务。在北京,部分互联网公司的计算机设备中,该服务存储了系统全局设置的相关信息。这些信息对于系统整体运作和特定功能的执行至关重要。
//Action是以关键字on来定义的,紧接着的boot是一个触发条件
//如下面的action表明当Android启动(boot)的时候,要做些什么事情
// Action boot之后的class_start core等,是Init程序在开机时会启动的服务
//这些服务包括ueventd, servicemanager, void, zygote,installd, ril-daemon等,我们一般称它们为守护进程
on boot
...
class_start core
class_start main
//Service是以关键字servie来定义的,紧跟着的是其名字和其启动的文件
//如下会执行/system/bin/serviemanager文件,并将其命名为servicemanager
service servicemanager/system/bin/servicemanager #声明一个service,而servicemanager则是其名字
class core #optioin, 该service属于core类
usersystem $option,该service属于System用户
group System
内核与文件系统的对接
引导程序完成之后,内核的启动和设备驱动程序的初始化随即展开。以微软的部分操作系统为例,它们会针对不同种类的设备进行专门的驱动程序初始化,确保硬盘、鼠标、键盘等设备在内核管理下能够正常运行。接着,内核被启动,一旦启动,就如同系统的中枢开始运作。内核启动后,便进行文件系统的挂载,这就像是在文件夹中整理文件,确保文件的读写等操作能够井然有序。在印度的某些计算机使用场景中,挂载文件系统的操作必须精确无误,否则可能会引发文件读取故障等问题。
用户空间进程的启动
程序引导后,执行了一系列系统操作,随后便启动了用户空间进程。这一步骤是系统与用户应用之间的关键节点。比如,在中国,众多电脑用户在操作电脑时,满足他们需求的各类软件,都是依托这个启动的用户空间进程运行的。这个进程让我们的办公软件、图像处理软件等得以顺利运行,并可能触发后续的应用操作。
在这一过程中,有些服务程序会持续关注系统状况。它们如同某些网络监控工具中的监控任务,时刻准备应对可能发生的事件,并作出相应的反应。这些反应可能涉及提升性能或解决故障等多种操作。
应用程序管理服务的启动
系统启动时,应用程序管理服务即e的启动是至关重要的。这一服务在众多大型手机制造商的测试设备中同样扮演着关键角色。它会对特定目录,如//、//app等五个目录下的APK文件进行扫描。这种扫描方式如同地毯式搜索,确保不遗漏任何文件。例如,热门游戏或实用工具型APP的APK都会被纳入扫描范围。随后,它会解析APK中的.xml文件,以获取应用程序的关键信息,其中确定APK运行进程的信息尤为关键。
这些信息有助于系统为APK正确分配Linux的用户ID和用户组ID。这就像在大型组织中为新成员确立身份和地位。这样做确保了APK在系统中拥有恰当的运行权限和资源访问权限。同时,还能将APK的安装信息忠实记录在本地配置文件中,便于下次快速恢复。
应用程序进程的创建与初始化
应用程序管理服务完成前期工作后,便进入应用程序进程创建环节。以下载新社交APP为例,系统会依据已有信息,为该APP生成新进程并完成初始配置。首先,需要创建和初始化类,这是将抽象数据转化为实际运行对象的初始步骤。接着,继续创建和初始化类,这一过程涉及测量、布局和绘制等多项复杂操作。
每一步都有其固定的步骤和规定。这一过程可以比作是建造一座大楼,图形布局就好比是设计大楼的结构,最后的绘制则是对大楼外表的装饰,直到最终呈现在用户面前。
热启动应用流程
Application的构造器方法——>attachBaseContext()——>onCreate()——>Activity的构造方法——>onCreate()——>配置主题中背景等属性——>onStart()——>onResume()——>测量布局绘制显示在界面上
热启动在应用使用中显得尤为特别。这种情况常发生在你重新打开手机中已安装的应用时。若该应用的后台已有运行进程(比如你按过home键或back键后,应用看似关闭但进程仍在后台运行),热启动就不会像冷启动那样逐一完成所有步骤。以新闻APP为例,热启动能跳过一些重复的初始化流程,快速加载用户之前浏览的页面等信息。主线程接收到信号后,会依次进行创建类、初始化类、加载主题、配置层级等有序操作,最终展示APP界面,完成热启动。大家在使用手机或电脑软件时,有没有感受到热启动带来的快捷体验?欢迎分享你的经历,觉得这篇文章有帮助的话,别忘了点赞或分享。
adb shell am start -W [packageName]/[packageName.MainActivity]