本技術涉及終端應用,尤其涉及一種數(shù)據(jù)預加載方法、程序及電子設備。
背景技術:
::1、隨著電子設備的功能越來越強大,電子設備中安裝的應用程序也越來越多,用戶可以基于電子設備中安裝的應用程序使用這些應用程序提供的功能。2、用戶在使用電子設備的過程中,頻繁啟動各種應用,應用啟動是最普遍且最能影響用戶感知的場景。一般情況下,依據(jù)應用啟動時是否創(chuàng)建進程以及是否創(chuàng)建界面activity,可將應用啟動分為冷啟動、溫啟動和熱啟動三類:3、(1)冷啟動:應用啟動過程中,創(chuàng)建進程、創(chuàng)建activity以及顯示activity;4、(2)溫啟動:應用進程已存在,應用啟動過程中僅創(chuàng)建并顯示activity;5、(3)熱啟動:應用進程和activity均已存在,僅將activity調至前臺顯示即可。6、這三種啟動負載差異較大,導致相應的應用啟動完成時間差異較大。7、針對應用冷啟動,由于惰性分配機制,通常會發(fā)生缺頁異常的現(xiàn)象。在發(fā)生缺頁異常后,系統(tǒng)會將啟動過程中的應用的線程放入阻塞隊列,直到缺頁異常的問題解決。例如,在發(fā)生缺頁異常后,為該應用分配物理內存,在分配的物理內存中加載相關的文件數(shù)據(jù),并在用于存儲虛擬內存到物理內存的映射關系的頁表項(page?table?entry,pte)中填充該應用的虛擬內存到分配的物理內存的映射關系,這就會導致應用冷啟動的時間較長,用戶體驗較差。技術實現(xiàn)思路1、本技術的多個方面提供一種數(shù)據(jù)預加載方法、程序及電子設備,用于縮短冷啟動時延,提高用戶體驗。2、第一方面,提供了一種數(shù)據(jù)預加載方法,應用于第一電子設備,所述方法包括:3、基于第一應用第n次冷啟動完成,根據(jù)所述第一應用的關鍵任務列表,確定所述第一應用的主線程任務在所述第一應用第n次冷啟動過程中所等待的涉及文件讀寫的第一線程任務;4、確定所述主線程任務和所述第一線程任務各自在所述第n次冷啟動過程中訪問的第一文件頁;5、生成所述第一文件頁的快照;6、在磁盤中存儲所述第一文件頁的快照;7、基于所述第一應用第m次冷啟動開始,依據(jù)從所述磁盤讀取到的所述第一文件頁的快照,將所述磁盤中所述第一文件頁的文件數(shù)據(jù)加載到物理內存中;8、其中,n和m為整數(shù);n大于或等于1;m大于n。9、涉及文件讀寫的線程任務(也即后文中的與io相關的線程任務)指的是需要訪問磁盤中的文件數(shù)據(jù)的線程任務。需要說明的是,磁盤中的文件數(shù)據(jù)需要加載到物理內存中,才能夠被線程任務訪問,因此,這樣的線程任務涉及io等待。注:本技術實施例中的文件讀寫具體指的是磁盤文件讀寫。10、可選的,第一應用第n次冷啟動完成時,根據(jù)所述第一應用的關鍵任務列表,確定所述第一應用的主線程任務在所述第一應用第n次冷啟動過程中所等待的涉及文件讀寫的第一線程任務。11、可選的,響應于第一應用第n次冷啟動完成,根據(jù)所述第一應用的關鍵任務列表,確定所述第一應用的主線程任務在所述第一應用第n次冷啟動過程中所等待的涉及文件讀寫的第一線程任務。12、可選的,所述第一應用第m次冷啟動開始時或后的第一預設時間之內,依據(jù)從所述磁盤讀取到的所述第一文件頁的快照,將所述磁盤中所述第一文件頁的文件數(shù)據(jù)加載到物理內存中。第一預設時間的時長可根據(jù)實際情況來設置,只要確保不耽誤預加載過程即可。13、可選的,響應于所述第一應用第m次冷啟動開始,依據(jù)從所述磁盤讀取到的所述第一文件頁的快照,將所述磁盤中所述第一文件頁的文件數(shù)據(jù)加載到物理內存中。14、其中,第一文件頁的數(shù)量可以是一個或多個,多個指的是兩個及以上。15、可選的,所述關鍵任務列表中記錄有所述第一線程任務的名稱??蛇x地,所述關鍵任務列表中記錄有所述主線程任務和所述第一線程任務的名稱。16、可選的,關鍵任務列表中記錄有多個關鍵任務的名稱,這多個關鍵任務為所述主線程任務和所述第一線程任務。17、在實際應用中,應用冷啟動延時由主線程任務的時延決定。因此,將主線程任務以及主線程任務在冷啟動過程中所等待(或所依賴)的線程任務在冷啟動過程中所需要的文件頁預加載到物理內存,可提高預加載有效性,進而加速冷啟動過程。需要說明的是,第一應用對應有主線程任務和多個子線程任務;第一應用的主線程任務在應用冷啟動過程中一般只需等待多個子線程任務中的一部分子線程任務,那么,主線程任務在應用冷啟動過程中無需等待的另一部分子線程任務所訪問的文件頁就無需預加載。也就是說,本方案是從應用冷啟動過程中所訪問的文件頁中篩選出影響應用冷啟動延時的部分文件頁,這樣,只加載或先加載這部分文件頁對應的文件數(shù)據(jù)到物理內存,可提高預加載有效性,減少這部分文件頁的預加載不及時的情況出現(xiàn),進而縮短冷啟動時延。18、可選的,多個關鍵任務中存在系統(tǒng)線程任務,也即第一線程任務包括系統(tǒng)線程任務。19、需要說明的是,第一應用的主線程任務在冷啟動過程中有可能需要等待或依賴于第一應用的部分子線程任務,有可能需要等待或依賴于部分系統(tǒng)線程任務。因此,還需要將該系統(tǒng)線程任務對應的文件頁預加載到物理內存中,以縮短冷啟動時延。20、在第一方面的一種可選實施方式中,所述關鍵任務列表中記錄的關鍵任務是從x次關鍵路徑上涉及文件讀寫的第二線程任務中確定的;x為大于或等于1的整數(shù);21、第x次關鍵路徑指的是所述第一應用在第二電子設備上的第x次冷啟動過程的關鍵路徑;x為整數(shù),x從1取到x;22、第x次關鍵路徑是根據(jù)所述第x次冷啟動過程中線程任務間的喚醒關系和/或切換關系繪制得到的;所述第x次關鍵路徑由所述主線程任務以及第x次冷啟動過程中所述主線程任務所等待的線程任務組成。23、應用冷啟動過程的關鍵路徑的執(zhí)行時長決定了應用冷啟動時延,可以認為應用冷啟動時延為關鍵路徑的執(zhí)行時長。24、需要說明的是,應用在第二電子設備上的冷啟動過程中不涉及文件頁預加載??蛇x地,第一電子設備與第二電子設備屬于不同設備。25、本技術實施例中,通過關鍵路徑的繪制以及關鍵路徑上與io相關的任務的識別,確定出影響冷啟動時延的關鍵任務。26、可選地,第x次關鍵路徑上涉及文件讀寫的第二線程任務是根據(jù)第x次關鍵路徑上的線程任務在第x次冷啟動過程中是否存在io導致的不可中斷休眠狀態(tài)確定的。將第x次關鍵路徑上的在第x次冷啟動過程中存在io導致的不可中斷休眠狀態(tài)的線程任務確定為第二線程任務。27、也就是說,第二線程任務位于該次關鍵路徑上且在冷啟動過程中存在io導致的不可中斷休眠狀態(tài)(也即涉及文件讀寫)。28、由于系統(tǒng)狀態(tài)在不同時刻是不一樣的,因此,應用每次冷啟動對應的關鍵路徑也會存在差異。因此,上述x可以大于1。這樣,通過統(tǒng)計學方法從多次關鍵路徑中篩選出在后續(xù)冷啟動過程中大概率會影響應用冷啟動時延的關鍵任務,這樣,可提高影響應用冷啟動時延的文件數(shù)據(jù)的預加載及時性和預加載有效性。29、可選的,所述關鍵任務列表中記錄的關鍵任務在所述x次關鍵路徑上的出現(xiàn)次數(shù)大于或等于預設次數(shù)閾值。30、預設次數(shù)閾值的大小可根據(jù)實際需要來設置,本技術對此不做具體限定。31、可選地,可根據(jù)所述第x次冷啟動過程中主線程任務處于休眠狀態(tài)時線程任務間的喚醒關系和/或切換關系,繪制第x次關鍵路徑。這樣,依據(jù)主線程任務的狀態(tài),可對大量的喚醒關系和切換關系進行篩選,篩掉無關的喚醒關系和切換關系,進而降低關鍵路徑的繪制難度和耗時。32、在第一方面的一種可選實施方式中,確定所述主線程任務和所述第一線程任務各自在所述第n次冷啟動過程中訪問的第一文件頁,包括:33、獲取所述主線程任務和所述第一線程任務各自所屬進程對應的頁表;34、從所述頁表中,確定所述主線程任務和所述第一線程任務各自在所述第一應用第n次冷啟動過程中訪問的第一頁表項;所述第一頁表項的頁對象為文件頁;35、將所述第一頁表項對應的文件頁確定為所述第一文件頁。36、可選地,所述第一應用歷史冷啟動過程完成時,獲取上述頁表。37、可選地,響應于第一應用歷史冷啟動過程完成,獲取上述頁表。38、實際應用中,存在如下兩種情況:39、第一種:關鍵任務列表中的多個關鍵任務同屬于第一應用的進程(也即多個關鍵任務中不存在系統(tǒng)線程任務)。在這種情況下,第一應用歷史冷啟動過程中多個關鍵任務各自訪問的頁表項均位于第一應用的進程對應的頁表中。因此,只需要獲取第一應用的進程對應的頁表即可。示例性的,將第一應用的進程對應的頁表中與關鍵任務的標識對應的頁表項確定為第一頁表項。40、第二種:多個關鍵任務中一部分屬于第一應用的進程,另一部分屬于系統(tǒng)進程(也即多個關鍵任務中存在系統(tǒng)線程任務)。在這種情況下,第一應用歷史冷啟動過程中屬于第一應用的進程的關鍵任務(簡稱第一關鍵任務)訪問的頁表項位于第一應用的進程對應的頁表中,第一應用歷史冷啟動過程中屬于系統(tǒng)進程的關鍵任務(簡稱第二關鍵任務)訪問的頁表項位于系統(tǒng)進程對應的頁表(可簡稱系統(tǒng)頁表)中。因此,需要獲取所述第一應用的進程對應的頁表和系統(tǒng)頁表??蛇x地,將第一應用的進程對應的頁表中與第一關鍵任務的標識對應的頁表項確定為第一頁表項;將系統(tǒng)頁表中與第二關鍵任務的標識對應的頁表項確定為第一頁表項。由于系統(tǒng)頁表中記錄有從系統(tǒng)啟動之后各系統(tǒng)線程所訪問的頁表項,這些大部分頁表項與本次應用啟動無關。因此,作為可選地,將系統(tǒng)頁表中在第一應用歷史冷啟動過程中所填充的與第二關鍵任務的標識對應的頁表項確定為第一頁表項。這樣,可減少無用快照的數(shù)量,也能提高預加載有效性。41、在第一方面的一種可選實施方式中,所述方法,還包括:42、基于所述第一應用第n次冷啟動開始,從所述第一應用的配置文件中獲取所述第一應用的關鍵任務列表。43、可選的,所述第一應用第n次冷啟動開始時,從所述第一應用的配置文件中獲取所述第一應用的關鍵任務列表。44、可選的,響應于所述第一應用第n次冷啟動開始,從所述第一應用的配置文件中獲取所述第一應用的關鍵任務列表。45、在本技術實施例中,可提前獲取關鍵任務列表,這樣,可縮短預加載時延。46、為了避免重復執(zhí)行文件頁快照生成過程,可選地,基于所述第一應用第n次冷啟動開始以及所述磁盤中不存在所述第一應用對應的文件頁快照,從所述第一應用的配置文件中獲取所述第一應用的關鍵任務列表。47、可選地,響應于所述第一應用第n次冷啟動開始,確定所述磁盤中是否存在所述第一應用對應的文件頁快照;若不存在,則從所述第一應用的配置文件中獲取所述第一應用的關鍵任務列表。48、在第一方面的一種可選實施方式中,基于第一應用第n次冷啟動完成,根據(jù)所述第一應用的關鍵任務列表,確定所述第一應用的主線程任務在所述第一應用第n次冷啟動過程中所等待的涉及文件讀寫的第一線程任務,包括:49、基于所述第一應用第n次冷啟動完成以及所述磁盤中不存在所述第一應用對應的文件頁快照,根據(jù)所述第一應用的關鍵任務列表,確定所述第一應用的主線程任務在所述第一應用第n次冷啟動過程中所等待的涉及文件讀寫的第一線程任務。50、這樣,可避免重復執(zhí)行文件頁快照生成過程。51、在第一方面的一種可選實施方式中,所述方法,還包括:52、基于所述第一應用第n次冷啟動完成,確定所述第一應用的第四線程任務在所述第n次冷啟動過程中訪問的第二文件頁;所述第四線程任務不包括所述主線程任務和所述第一線程任務;53、生成所述第二文件頁的快照;54、在所述磁盤中存儲所述第二文件頁的快照;55、基于所述第一應用第m次冷啟動開始,依據(jù)從所述磁盤讀取到的所述第一文件頁的快照,將所述磁盤中所述第一文件頁的文件數(shù)據(jù)加載到物理內存中,包括:56、基于所述第一應用第m次冷啟動開始,從所述磁盤讀取所述第一文件頁的快照和所述第二文件頁的快照;57、根據(jù)所述第一文件頁的快照,將所述磁盤中所述第一文件頁的文件數(shù)據(jù)加載到所述物理內存;58、所述第一文件頁的文件數(shù)據(jù)加載到所述物理內存后,根據(jù)所述第二文件頁的快照,將所述磁盤中所述第二文件頁的文件數(shù)據(jù)加載到所述物理內存中。59、可選地,所述第一應用第m次冷啟動開始時或后的第一預設時間內,從所述磁盤讀取所述第一文件頁的快照和所述第二文件頁的快照。60、可選地,響應于所述第一應用第m次冷啟動開始,從所述磁盤讀取所述第一文件頁的快照和所述第二文件頁的快照。61、在本實施例中,第二文件頁快照對應的文件數(shù)據(jù)的加載過程位于第一文件頁快照對應的文件數(shù)據(jù)的加載過程之后,也就是說,第二文件頁快照對應的文件數(shù)據(jù)的加載過程不影響第一文件頁快照對應的文件數(shù)據(jù)的加載過程。這樣,不僅能夠保證較短的冷啟動時延,還能夠縮短第一應用的其他線程任務的執(zhí)行延時,提高用戶使用體驗。62、在第一方面的一種可選實施方式中,所述第一文件頁的快照存儲在所述磁盤中所述第一應用對應的文件頁快照文件中的第一部分;所述第二文件頁的快照存儲在所述文件頁快照文件中的第二部分;在所述文件頁快照文件中,所述第一部分位于所述第二部分之前。63、這樣,后續(xù)預讀時,按照文件頁快照文件中文件頁快照的先后順序,依次加載文件頁快照對應的文件數(shù)據(jù)到物理內存,即可確保第一文件頁快照對應的文件數(shù)據(jù)先加載到物理內存,第二文件頁快照對應的文件數(shù)據(jù)后加載到物理內存,進而縮短應用啟動時延。64、在第一方面的一種可選實施方式中,所述第一應用卸載時,刪除所述磁盤中存儲的所述第一應用對應的第一文件頁快照。65、卸載后,刪除所述磁盤中存儲的所述第一應用對應的第一文件頁快照和第二文件頁快債,可釋放磁盤存儲空間。66、在第一方面的一種可選實施方式中,所述方法還包括:67、在所述主線程任務和所述第一線程任務各自所屬進程對應的頁表中填充已加載到所述物理內存中的文件數(shù)據(jù)對應的頁表項。68、這樣,可減少缺頁情況發(fā)生,有助于縮短應用啟動時延。69、在第一方面的一種可選實施方式中,所述第一文件頁的快照包括:所述第一文件頁中文件數(shù)據(jù)的文件名以及該文件數(shù)據(jù)在磁盤中的存儲地址。70、在第一方面的一種可選實施方式中,所述第二文件頁快照包括:所述第二文件頁中文件數(shù)據(jù)的文件名以及該文件數(shù)據(jù)在磁盤中的存儲地址。71、第二方面,本技術提供了一種計算機程序,當所述計算機程序被電子設備執(zhí)行時,實現(xiàn)上述第一方面提供的方法。72、第三方面,本技術提供了一種電子設備,其中,包括:存儲器和處理器,其中,73、所述存儲器,用于存儲程序;74、所述處理器,與所述存儲器耦合,用于執(zhí)行所述存儲器中存儲的所述程序,以實現(xiàn)上述第一方面提供的方法。當前第1頁12當前第1頁12