一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法与流程

文档序号:21407421发布日期:2020-07-07 14:41阅读:245来源:国知局
一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法与流程

本发明涉及计算机领域,具体涉及一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法。



背景技术:

随着人们生产生活的需要的不断发展,复杂的分时操作系统的功能越来越复杂,涵盖的方面也越来越多,这使得复杂的分时操作系统的启动时间越来越长,像windows或android等操作系统的启动时间越来越长,而这段系统启动的时间用户除了等待,不能做其他任何事情。启动时间的加长在某些领域如电脑,手机等是可以接受的,毕竟电脑,手机等并不会频繁启动。但对于很多领域或功能,这是不可接受的,比如,在车载领域,仪表盘必须在一两秒内开始工作,倒车功能也要在几秒内开始工作。这也妨碍了复杂的分时操作系统在这些领域或功能的使用。虽然有一些变通的解决办法,如倒车功能可通过一个视频切换芯片来实现,但都是治标不治本,视频切换芯片使复杂的分时操作系统的功能完全不能用了。现有的车载领域,都没有解决复杂分时操作系统启动时快速启动并同时运行的问题,采用的是变通的办法,比如,在另一个单片机上运行简单的实时多任务操作系统(rtos),这导致主操作系统或主系统的总线,外设,功能或生态等在这个rtos上都不能直接用了。



技术实现要素:

本发明目的在于提供一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法,使得在车载内等需要多种功能能快速启动并开始工作的领域,也能够完全地使用复杂分时操作系统或主系统的总线,外设,功能或生态等。

具体的说,本发明充分利用了现代cpu多核和可安装多个cpu的特点,设计了一套解决方案,使在复杂分时操作系统启动时,从系统以最快的可能性在主cpu或cpu核之外的另一个cpu或cpu核上初始化并启动,然后在复杂分时操作系统启动的时间或时间段,与主系统同时工作,完成所需的任务。在主系统启动的特定时间点,融入到主系统中,或一直作为一个独立的系统以与主操作系统兼容的方式运行,完全可以使用主系统的主要资源,代码和生态。本发明的方案在实时安卓操作系统(rtandroid)1.5版的rtonboot技术中实现。

进一步的,本发明的提供的一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法,不仅适用于像windows,linux或android等复杂的分时操作系统中,也适用于将复杂的分时操作系统改造成的实时的操作系统中,实时安卓操作系统(rtandroid)就是一个这样的操作系统。

一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法,包括以下并行工作的主系统运行流程和从系统流程;

主系统运行流程包括以下步骤:

s1:主处理器上电,主处理器指主cpu或主cpu核;

s2:进入bootloader,bootloader初始化;加载从系统镜像;

s3:从处理器上电或跳转到从系统入口点;从处理器指从cpu或从cpu核;

s4:bootloader加载主操作系统镜像;

s5:进入主操作系统内核入口点;主操作系统开始启动;

s6:主操作系统延迟初始化从处理器;

s7:主操作系统请求从系统结束运行或融入主操作系统;

s8:主操作系统等待延迟初始化的从处理器初始化完成的通知;

s9:接到从系统初始化完成通知,将延迟初始化的从处理器纳入主操作系统的管理体系;

s10:主操作系统在主处理器上继续剩余的启动工作。

从系统运行流程从上述主系统运行流程的步骤s4开始运行,具体包括以下步骤:

s301:从系统初始化并启动、运行;

s302:从系统接受上述步骤s7的请求;

s303:从系统执行主操作系统延迟初始化的cpu或cpu核在主操作系统上的初始化;

s304:从系统通知主操作系统延迟初始化的cpu或cpu核初始化完成;

s305:主操作系统在至少一个从处理器上继续从系统的工作或者从系统与主操作系统兼容地持续运行。

作为一种优选方式,从处理器的初始化在bootloader和/或从系统中。

作为一种优选方式,主系统通过判断从系统特定内存中的特定标志来判断从系统是否加载成功,若不成功,主操作系统在启动和初始化时将不执行适应于从系统的特殊代码;若判断在主操作系统的mmu初始化之前,这时直接判断物理内存地址;若判断在主操作系统的mmu初始化之后,这时判断ioremap之后的虚拟地址。

作为一种优选方式,主操作系统和从系统之间的数据共享,通讯和互操作性有两种模式:

模式1:在物理内存中有一块共享内存区,主操作系统通过ioremap可以访问这块共享内存区(在mmu初始化之后;在mmu初始化之前是物理地址),主操作系统与从系统可以通过共享内存区的特定变量来同步状态,如果需要异步通知,可以使用处理器间中断;

模式2:主操作系统:建立一块线性映射或固定映射映射到从系统物理内存,若从系统没有使能mmu,这个映射就是一个对等映射,这个映射不在主操作系统的内核空间中;在用户空间第一个进程创建之前,要解除这一映射,以免造成地址空间冲突;若从系统使能了mmu,这个映射就和从系统的虚拟地址一致。

作为一种优选方式,虚拟地址在内核空间。

作为一种优选方式,从系统在接入主操作系统后有以下几种运行方式:

方式1:从系统在主操作系统启动结束前的设定时间点结束运行;主操作系统启动一些实时或非实时线程继续从系统的工作,如果这些线程要继承从系统之前的运行状态,可以将从系统中_data段,_bss段或线程局部存储中的相应变量拷贝到主操作系统的相应位置;

方式2:从系统在主操作系统启动结束前的设定时间点结束运行,主操作系统启动一些实时或非实时线程继续从系统的工作;这些线程指定运行在除主cpu或cpu核以及从系统在bootloader中启动运行在之上的cpu或cpu核之外的另外的从处理器上。

方式3:从系统一直以与主操作系统兼容的方式持续运行。

作为一种优选方式,当采用上述方式3时,从系统的地址空间与主操作系统的用户空间不冲突,此时将从系统在bootloader中启动运行在之上的cpu或cpu核的初始化放到从系统的一个线程上。

本发明中,通过将从系统在bootloader内初始化和启动,使从系统以最快可能初始化和启动。通过将从系统和主操作系统在主操作系统启动时运行在不同cpu或cpu核上,使双方可以并行运行,从而在主操作系统启动时,从系统可以处理用户所需要的特定的需求可很快地开始工作,解决了复杂分时操作系统或由复杂分时操作系统改造成的实时操作系统启动时,仅能处理主操作系统初始化和启动的困扰多年的问题。一般的复杂分时操作系统的非主cpu或cpu核在启动时,完成初始化后很快进入idle状态,所以本发明对于主操作系统的启动时间没有影响。

附图说明

图1为本发明的流程示意图。

具体实施方式

本发明的目的在于克服现有技术的缺陷,提供一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法,下面结合实施例对本发明作进一步详细说明。

实施例

一种复杂分时操作系统启动时从系统快速启动并同时工作的实现方法,包括以下并行工作的主系统运行流程和从系统流程;

主系统运行流程包括以下步骤:

s1:主处理器上电,主处理器指主cpu或主cpu核;

s2:进入bootloader,bootloader初始化;加载从系统镜像;

s3:从处理器上电或跳转到从系统入口点;从处理器指从cpu或从cpu核;

s4:bootloader加载主操作系统镜像;

s5:进入主操作系统内核入口点;主操作系统开始启动;

s6:主操作系统延迟初始化从处理器;主操作系统初始化除主cpu或cpu核之外的cpu或cpu核往往都在很早的时间,这个时候,对于由复杂的分时操作系统改成的实时操作系统而言,与主操作系统融合的实时子系统往往没有进行初始化,对于复杂的分时操作系统而言,或者基础设施不具备,或者由于竟争,不适合结束从系统的运行。所以对于从系统在bootloader中启动运行在之上的cpu或cpu核,这时应该推迟初始化,以保证从系统不间断运行。

s7:主操作系统请求从系统结束运行或融入主操作系统;主操作系统应在特定时间点请求从系统,从系统收到请求后进行清理工作,在执行完从系统在bootloader中启动运行在之上的从处理器在主操作系统上的初始化后,应通知主操作系统,使该从处理器纳入主操作系统的管理体系中。

s8:主操作系统等待延迟初始化的从处理器初始化完成的通知;

s9:接到从系统初始化完成通知,将延迟初始化的从处理器纳入主操作系统的管理体系;从系统需要结束运行或融入到主操作系统之时,再开始这个从处理器在主操作系统的初始化。简单的做法是在从系统做必要清理后,跳转到此从处理器在主操作系统的初始化入口。有的系统可能要先清理掉该从处理器,再去执行相应的初始化。还有一种做法是,在从系统中创建一个线程或恢复一个线程去执行相应的初始化代码,如果要保证从系统其它功能的实时性,这个线程的优先级应该比要保证实时性的线程优先级低,当初始化完成后,异步通知主操作系统,使主操作系统可以使用这一从处理器。

s10:主操作系统在主处理器上继续剩余的启动工作。

从系统运行流程从上述主系统运行流程的步骤s3开始运行,具体包括以下步骤:

s301:从系统初始化并启动、运行;

s302:从系统接受上述步骤s7的请求;

s303:从系统执行主操作系统延迟初始化的cpu或cpu核在主操作系统上的初始化;

s304:从系统通知主操作系统延迟初始化的cpu或cpu核初始化完成;

s305:主操作系统在至少一个从处理器上继续从系统的工作或者从系统与主操作系统兼容地持续运行。

为了让从系统以最快可能性启动和初始化,从系统应在主操作系统的bootloader中启动和初始化,为了使从系统的启动速度足够快,从系统的软件系统应基于一个简单的实时多任务操作系统(rtos)构建,或是一个没有操作系统的固件,比如rtonboot(rtonboot是本发明在实时安卓操作系统(rtandroid)1.5版的一个实现)。其采用了一个简单的实时多任务操作系统(rtos)。在一开始,从系统不使能mmu(内存管理单元)或使能mmu但只建立一个简单的映射,这都是为了从系统启动和初始化地足够快。由于主操作系统一直在主cpu或cpu核上忙于启动和初始化,所以从系统在bootloader中在另一个cpu或cpu核上启动并运行。这就要求bootloader中的主cpu或cpu核在此之前上电另一个cpu或cpu核或使另一个cpu或cpu核跳转到指定入口点。另一个cpu或cpu核的初始化可以在bootloader中,也可以在从系统中,也可以两者中各完成一部分。从系统软件系统的代码可以从外存中独立加载,也可以与bootloader代码混合在一起。与bootloader代码混合在一起的缺点是会有冗余代码,优点是不需要从系统软件系统的独立构建体系。

从系统代码加载到一块物理内存中,这块物理内存的地址需要在bootloader中进行预留,这块地址可以为固定的也可以是可变动的,如果是可变动的,从系统中应有重定位的代码。无论是固定还是可变动的,都要保证这块地址不被主操作系统的映像解压和加载内存所覆盖。在主操作系统启动过程中,要在主操作系统中预留这块内存,以防止这块内存被分配出去,造成混乱。在从系统的生命周期结束后,可选地可将这块内存重新纳入主操作系统虚拟内存的分配体系。如果从系统使能mmu,可以建立一个这个地址段的线性映射,但要保证从系统代码链接到对应虚拟地址。

这样主操作系统和从系统在不同的cpu或cpu核上并行地运行。这里有两种方法来保证主操作系统在启动和初始化时,是否为从系统进行一些特殊的动作。一种是完全静态的,这种是完全是由编译时的配置宏决定的。但如果bootloader中加载从系统失败,这种方法将不能处理。第二种是一种运行时判断的机制,通过判断从系统特定内存中的特定标志来判断从系统是否加载成功,如果不成功,主操作系统在启动和初始化时将不执行适应于从系统的特殊代码。这个判断可以在主操作系统的mmu初始化之前,这时直接判断物理内存地址;也可以主操作系统的mmu初始化之后,这时判断ioremap之后的虚拟地址。这块地址的值可以通过内核的命令行参数由bootloader告诉主操作系统内核。

主操作系统和从系统之间的数据共享,通讯和互操作性有两种模式,两种模式都在保护范围内。第一种简单模式,在物理内存中有一块共享内存区,主操作系统通过ioremap可以访问这块共享内存区(在mmu初始化之后;在mmu初始化之前是物理地址),双方可以通过共享内存区的特定变量来同步状态,如果需要异步通知,可以使用处理器间中断(ipi中断)。对于大多数情况而言。简单模式就够用了。还有一种模式是复杂模式,这种模式下,主操作系统需要建立一块线性映射或固定映射映射到从系统物理内存。如果从系统没有使能mmu,这个映射就是一个对等映射,这个映射往往不在主操作系统的内核空间中,所以在用户空间第一个进程创建之前,要解除这一映射,以免造成地址空间冲突。对普遍的应用来说,在进入用户空间之前,从系统已经完成了它的使命,可以消亡了。如果从系统使能了mmu,这个映射就和从系统的虚拟地址一致,这个虚拟地址最好在内核空间,这将没有地址空间冲突问题。在复杂模式下,双方可以互调对方的函数,将更灵活。

关于从系统最终的去向,有以下几种做法,这些做法都在保护范围内。第一,从系统在主操作系统启动结束前的某个时间点结束运行,从系统在结束前作必要的清理工作。主操作系统启动一些实时或非实时线程继续从系统的工作。这些线程可指定在从系统在bootloader中启动运行在之上的cpu或cpu核上运行或不指定cpu或cpu核,由主操作系统自由调度。如果这些线程要继承从系统之前的运行状态,可以将从系统中_data段,_bss段或线程局部存储中的相应变量拷贝到主操作系统的相应位置。第二,从系统在主操作系统启动结束前的某个时间点结束运行,从系统在结束前作必要的清理工作。主操作系统启动一些实时或非实时线程继续从系统的工作。这些线程指定运行在除主cpu或cpu核以及从系统在bootloader中启动运行在之上的cpu或cpu核之外的第三个cpu或cpu核上。这种做法好处是这些新创建的线程可以更早地投入运行。第三,从系统一直持续运行。这种做法必须保证从系统的地址空间与主操作系统的用户空间不冲突。这时可将从系统在bootloader中启动运行在之上的cpu或cpu核的初始化放到从系统的一个线程上。如果这个cpu或cpu核要让主操作系统调度器能使用,则从系统的进程或线程上下文切换必须与主操作系统兼容。

照上述实施例,便可很好地实现本发明。值得说明的是,基于上述技术方案的前提下,为解决同样的技术问题,即使在本发明上做出的一些无实质性的改动或润色,所采用的技术方案的实质仍然与本发明一样,故其也应当在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1