精华内容
下载资源
问答
  • 系统启动流程

    2019-04-22 15:53:40
    系统启动流程 对于Linux 操作系统启动流程的理解,能有助于后期在企业中更好的维护 Linux 服务器,能快速定位系统问题,进而解决问题。 (1) 加载 BIOS 计算机电源加电质检,首先加载基本输入输出系统(Basic Input...

    系统启动流程
    对于Linux 操作系统启动流程的理解,能有助于后期在企业中更好的维护 Linux 服务器,能快速定位系统问题,进而解决问题。

    (1) 加载 BIOS
    计算机电源加电质检,首先加载基本输入输出系统(Basic Input Output System,BIOS),
    BIOS 中包含硬件 CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存
    信息、时钟信息、即插即用(Plug-and-Play,PNP)特性等。加载完 BIOS 信息,计算机将
    根据顺序进行启动。
    (2) 读取 MBR
    读取完 BIOS 信息,计算机将会查找 BIOS 所指定的硬盘 MBR 引导扇区,将其内容复
    制到 0x7c00 地址所在的物理内存中。被复制到物理内存的内容是 Boot Loader,然后进行引导
    (3) GRUB 引导
    GRUB 启动引导器是计算机启动过程中运行的第一个软件程序,当计算机读取内存中的
    GRUB 配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。
    (4) 加载 Kernel
    计算机读取内存映像,并进行解压缩操作,屏幕一般会输出“Uncompressing Linux”的提
    示,当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用 start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成
    Linux 核心环境的建立
    (5) 设定 Inittab 运行等级
    内核加载完毕,会启动 Linux 操作系统第一个守护进程 init,然后通过该进程读取
    /etc/inittab 文件,/etc/inittab 文件的作用是设定 Linux 的运行等级,Linux 常见运行级别如下:
     0:关机模式;
     1:单用户模式;
    2:无网络支持的多用户模式;
     3:字符界面多用户模式;
     4:保留,未使用模式;
     5:图像界面多用户模式;
     6:重新引导系统,重启模式
    (6) 加载 rc.sysinit
    读取完运行级别,Linux 系统执行的第一个用户层文件/etc/rc.d/rc.sysinit,该文件功能包
    括:设定 PATH 运行变量、设定网络配置、启动 swap 分区、设定/proc、系统函数、配置 Selinux等。
    (7) 加载内核模块
    读取/etc/modules.conf 文件及/etc/modules.d 目录下的文件来加载系统内核模块。该模块
    文件,可以后期添加或者修改及删除。
    (8) 启动运行级别程序
    根据之前读取的运行级别,操作系统会运行 rc0.d 到 rc6.d 中的相应的脚本程序,来完成
    相应的初始化工作和启动相应的服务。其中以 S 开头表示系统即将启动的程序,如果以 K
    开头,则代表停止该服务。S 和 K 后紧跟的数字为启动顺序编号。如图

    (9) 读取 rc.local 文件
    操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local 文件,可以将需要开机启动
    的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。如图

    (10) 执行/bin/login 程序
    执行/bin/login 程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即
    可登录到 Shell 终端,如图 3-7 所示,输入用户名、密码即可登录 Linux 操作系统,至此 Linux操作系统完整流程启动完毕。

    展开全文
  • Android系统启动流程(四)Launcher启动过程与系统启动流程 此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:Launcher的启动流程,...

    Android系统启动流程(四)Launcher启动过程与系统启动流程

    此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:Launcher的启动流程,并结合本系列的前三篇文章的内容来讲解Android系统启动流程。建议读这篇文章前要通读本系列的前三篇文章,否则你可能不会理解我在讲什么。

    1.Launcher概述

    Android系统启动的最后一步是启动一个Home应用程序,这个应用程序用来显示系统中已经安装的应用程序,这个Home应用程序就叫做Launcher。应用程序Launcher在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。

    2.Launcher启动流程

    SyetemServer进程在启动的过程中会启动PackageManagerService,PackageManagerService启动后会将系统中的应用程序安装完成。在此前已经启动的ActivityManagerService会将Launcher启动起来。 

    3.Launcher中应用图标显示流程

    包含应用信息的列表apps已经传给了AllAppsContainerView,查看AllAppsContainerView的onFinishInflate函数:

    复制代码

    @Override
        protected void onFinishInflate() {
            super.onFinishInflate();
    ...
            // Load the all apps recycler view
            mAppsRecyclerView = (AllAppsRecyclerView) findViewById(R.id.apps_list_view);//1
            mAppsRecyclerView.setApps(mApps);//2
            mAppsRecyclerView.setLayoutManager(mLayoutManager);
            mAppsRecyclerView.setAdapter(mAdapter);//3
            mAppsRecyclerView.setHasFixedSize(true);
            mAppsRecyclerView.addOnScrollListener(mElevationController);
            mAppsRecyclerView.setElevationController(mElevationController);
    ...
        }

    复制代码

    onFinishInflate函数在加载完xml文件时就会调用,在注释1处得到AllAppsRecyclerView用来显示App列表,并在注释2处将apps的信息列表传进去,并在注释3处为AllAppsRecyclerView设置Adapter。这样应用程序快捷图标的列表就会显示在屏幕上。 

    4.Android系统启动流程

    那么结合本篇以及本系列的前三篇文章,我们就可以得出Android系统启动流程,如下所示。 
    1.启动电源以及系统启动 
    当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序Bootloader到RAM,然后执行。 
    2.引导程序BootLoader 
    引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。 
    3.Linux内核启动 
    内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置,它首先在系统文件中寻找init.rc文件,并启动init进程。 
    4.init进程启动 
    初始化和启动属性服务,并且启动Zygote进程。 
    5.Zygote进程启动 
    创建JavaVM并为JavaVM注册JNI,创建服务端Socket,启动SystemServer进程。 
    6.SystemServer进程启动 
    启动Binder线程池和SystemServiceManager,并且启动各种系统服务。 
    7.Launcher启动 
    被SystemServer进程启动的ActivityManagerService会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。

    结合上面的流程,给出Android系统启动流程图: 
    这里写图片描述

    展开全文
  • 本系列课程属于嵌入式系统入门级的课程,适合于想要接触嵌入式系统、对嵌入式系统比较感兴趣、想要了解系统启动流程的同学 主要选取了市场上常见的SOC芯片IMX6UL进行数据手册特性分析,介绍了SOC的芯片框架,分析了...
  • Android系统启动流程、应用启动流程、Activity启动流程 一、Android系统的启动流程 1、开机,系统加电,执行BootLoader。BootLoader负责初始化软件运行需要的最小硬件环境,最后加载内核到内存 2、内核加载进内存后...

    Android系统启动流程、应用启动流程、Activity启动流程

    一、Android系统的启动流程
    1、开机,系统加电,执行BootLoader。BootLoader负责初始化软件运行需要的最小硬件环境,最后加载内核到内存
    2、内核加载进内存后,首先进入内核引导阶段,在引导阶段的最后,调用start_kernel进入内核启动阶段。start_kernel最终启动用户空间的init程序
    3、init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote进程和ServiceManager进程,zygote进程是Android启动的第一个Dalvik虚拟机,ServiceManager是Binder通讯的基础
    4、zygote虚拟机启动子进程system_server,在system_server中开启了系统核心服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态。
    5、在SystemReady状态,ActivityManagerService与zygote中的socket进行通信,通过zygote启动Launcher应用,进入系统桌面。

    二、Android应用的启动流程
    1、用户按下桌面上的App图标后,Launcher进程会将启动新的主活动的请求以binder的方式发送给AMS服务
    2、AMS收到请求后,交付给ActivityStarter处理intent和flag信息,然后交给ActivityStackSuperVisior和ActivityStack处理Activity进程需要的相关初始化工作,同时通过socket客户端向zygote进程请求孵化新进程
    3、zygote进程收到请求后,创建一个新进程,这个新进程就是App所在的进程
    4、在新进程里创建ActivityThread线程,包含main方法,是Android程序的入口。ActivityThread线程就是Android程序的主线程。同时会创建ApplicationThread和W线程,它们都继承自Binder类。ApplicationThread线程在主活动创建之前创建,负责监听AMS发送来的创建Activity的请求,在Activity创建之后,W线程监听WMS发送来的消息(比如点击和触摸事件),将消息发送给DectorView,如果DectorView没有处理,则传递给PhoneWindow,如果PhoneWindow也没有处理,则传递给Activity通过Handler来处理消息
    5、ApplicationThread类监听到了创建Activity的请求,ActivityThread通过ClassLoader类加载器加载Activity并创建Activity实例,然后回调onCreate()方法

    三、Activity的启动流程
    1、从startActivity()方法开始,经过方法的调用,会去向ActivityManagerService发出启动新Activity的请求
    2、AMS接收到启动请求后,解析启动的Activity信息以及启动模式,为正式启动做准备
    3、AMS做完准备工作之后,判断栈顶是否为空,如果不为空,即当前有Activity显示在前台,则先会请求对栈顶Activity进行onPause操作
    4、栈顶Activity执行onPause操作,操作结束,通知AMS栈顶Activity已经暂停结束
    5、检查目标Activity是否存在,如果存在,则直接启动存在的Activity,如果不存在,则为即将要启动的Activity创建新进程
    6、Activity所在应用进程和主线程初始化完成之后创建Application,然后启动Activity

    展开全文
  • 操作系统启动流程

    2020-09-09 15:50:39
    操作系统启动流程 Lagacy启动流程 UEFI启动流程

    操作系统启动流程

    Lagacy启动流程

    UEFI启动流程

    展开全文
  • 安卓系统启动流程

    2018-12-26 12:33:56
    安卓系统启动流程图 init进程 系统关键服务 多用户管理
  • CentOS系统启动流程

    2018-11-17 20:55:25
    CentOS5,6,7系统启动流程
  • Android系统启动流程(1) ——解析init进程启动过程 Android系统启动流程(2) ——解析Zygote进程启动过程 Android系统启动流程(3) ——解析SystemServer进程启动过程 Launcher启动过程 此前已经学习了 Android ...
  • 理解Linux操作系统启动流程,能有助于后期在企业中更好的维护Linux服务器,能快速定位系统问题,进而解决问题。本文详细的给介绍了Linux操作系统启动流程,感兴趣的朋友跟随小编一起看看吧
  • Centos系统启动流程

    2020-12-21 13:35:42
    一、Centos6系统启动流程 1.启动流程示意图 2.启动项简介 #开机自检 检查服务器硬件是否正常 #MBR引导 读取磁盘的MBR存储记录信息引导系统启动 #GRUB菜单 选择启动的内核(进行单用户模式重置密码) #加载内核 ...
  • Android系统启动流程

    2020-12-30 14:06:39
    Android系统启动流程 那么结合本篇以及本系列的前三篇文章,我们就可以得出Android系统启动流程,如下所示。 1.启动电源以及系统启动 当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导...
  • Android 系统启动流程

    2019-09-11 14:38:23
    Android系统启动,一共分七个流程,Android系统启动流程图: Android系统启动要比图上更复杂,这里是为了便于列举简化了细节。对于Android应用开发来说,这些知识点已经足够了。 1.启动电源以及系统启动 当电源按下...
  • Nuttx系统启动流程

    千次阅读 2016-12-09 14:51:45
    Nuttx系统启动流程
  • Linux系统启动流程的思维导图 xmind格式,常规思维导图软件即可查看。 高清干货,不容错过!
  • Android系统启动流程(1) ——解析init进程启动过程 Android系统启动流程(2) ——解析Zygote进程启动过程 SystemServer 启动过程 SystemServer 进程主要用于创建系统服务,我们熟知的 AMS、WMS和PMS 都是由它来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,215
精华内容 4,886
关键字:

系统启动流程