[發明專利]一種LINUX壓縮應用程序的加載方法有效
| 申請號: | 202010040067.3 | 申請日: | 2020-01-15 |
| 公開(公告)號: | CN111240765B | 公開(公告)日: | 2023-02-03 |
| 發明(設計)人: | 黃炳棟 | 申請(專利權)人: | 深圳英飛拓智能技術有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F9/50;G06F9/448 |
| 代理公司: | 深圳市欣亞知識產權代理事務所(普通合伙) 44621 | 代理人: | 葛勤;程光慧 |
| 地址: | 518110 廣東省深圳市龍華區觀湖街道*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 linux 壓縮 應用程序 加載 方法 | ||
本發明涉及應用程序壓縮和加載領域,具體公開了一種LINUX壓縮應用程序的加載方法,包括以下步驟:從存儲區讀取壓縮文件,解壓到系統緩存,解析應用程序文件,讀取應用文件里面各個段和節表頭的內容,計算各個段以及相關鏈接庫占用內存的總長度,在當前進程創建一個新的線性區,通過清零為該線性區分配物理內存空間,將應用程序各個段的內容拷貝到該線性區,將應用程序鏈接的動態庫加載到該線性區,釋放壓縮文件所占的緩存,找到加載的應用程序的函數入口地址,獲取應用程序在線性區的偏移地址,跳轉到該偏移地址執行,本發明能夠實現將壓縮的應用程序從存儲區加載到內存,在程序加載完成后,避免產生額外的內存開銷。
技術領域
本發明涉及應用程序壓縮和加載技術領域,尤其涉及一種LINUX壓縮應用程序的加載方法。
背景技術
隨著物聯網技術的飛速發展,其應用也越來越多,因而設備上的應用程序也隨之變得龐大,占用更多的存儲空間。對應這個問題,一是直接升級硬件,擴大系統存儲容量,二是將應用程序壓縮后存儲于系統的存儲區。第一個方案比較直接,但會導致硬件成本增高。第二種方法能在不增加硬件成本的前提下達到同樣的效果。
對于壓縮程序的加載,很多方案通過不同的方式,將壓縮程序文件解壓到系統的緩存,然后直接將其加載運行。這會導致系統內存上多了一份應用程序的副本,占用了大量內存空間。這些方案是通過增大內存的開銷來減少應用程序在存儲區的占用,產生額外的內存開銷。
發明內容
本發明的目的是為了解決現有技術中存在的將壓縮程序文件解壓到系統的緩存,然后直接將其加載運行會產生額外的內存開銷的缺點,而提出的一種LINUX壓縮應用程序的加載方法。
為了實現上述目的,本發明采用了如下技術方案:
一種LINUX壓縮應用程序的加載方法,包括以下步驟:
步驟S1、從存儲區讀取壓縮文件,并解壓到系統緩存;
步驟S2、解析應用程序文件,讀取應用程序文件里面各個段和節表頭的內容,計算各個段以及相關鏈接庫占用內存的總長度,然后在當前進程創建一個新的線性區,通過清零為該線性區分配物理內存空間,將應用程序各個段的內容拷貝到該線性區,并將應用程序鏈接的動態庫加載到該線性區;
步驟S3、釋放壓縮文件所占的緩存;
步驟S4、找到加載的所述應用程序的函數入口地址,獲取所述應用程序在線性區的偏移地址,并跳轉到該偏移地址執行。
優選的,所述Linux進程啟動之后擁有一個連續完整的線性地址空間,所述線性地址空間是分段的,包括數據段,代碼段,bss段,堆,棧。
優選的,所述Linux下的目標文件和可執行文件都按照ELF格式進行存儲。
優選的,所述ELF格式的文件包括ELF頭、程序頭表、節和節頭表。
優選的,所述步驟S1中壓縮文件采用無損壓縮算法。
優選的,所述無損壓縮算法包括BZIP2,GZIP,LZ4,LZMA,LZMO和XZ。
優選的,所述Linux創建進程時采用寫時復制的方法,在加載進程時,采用按需加載的方法。
優選的,所述寫時復制的方法是指父進程通過fork()系統調用創建子進程,子進程復制父進程的頁目錄和頁表結構,同時將對應的物理頁設為只讀,當其中的一個進程在自己的虛擬地址范圍內進行寫操作的時候,就會產生異常,引起中斷,中斷處理函數就會在物理內存中再分配一個空閑頁,并將引起異常的這個頁的內容拷貝進去,并修改對應的頁表項,同時將這兩個頁修改為可讀寫,使得這兩個進程各自擁有一個物理頁。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳英飛拓智能技術有限公司,未經深圳英飛拓智能技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010040067.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種水溶性薄膜制備工藝
- 下一篇:一種方便取放的生殖醫學用低溫保存裝置





