[發明專利]一種LINUX壓縮應用程序的加載方法有效
| 申請號: | 202010040067.3 | 申請日: | 2020-01-15 |
| 公開(公告)號: | CN111240765B | 公開(公告)日: | 2023-02-03 |
| 發明(設計)人: | 黃炳棟 | 申請(專利權)人: | 深圳英飛拓智能技術有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F9/50;G06F9/448 |
| 代理公司: | 深圳市欣亞知識產權代理事務所(普通合伙) 44621 | 代理人: | 葛勤;程光慧 |
| 地址: | 518110 廣東省深圳市龍華區觀湖街道*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 linux 壓縮 應用程序 加載 方法 | ||
1.一種LINUX壓縮應用程序的加載方法,其特征在于,包括以下步驟:
步驟S1、從存儲區讀取壓縮文件,并解壓到系統緩存;
步驟S2、解析應用程序文件,讀取應用程序文件里面各個段和節表頭的內容,計算各個段以及相關鏈接庫占用內存的總長度,然后在當前進程創建一個新的線性區,通過清零為該線性區分配物理內存空間,將應用程序各個段的內容拷貝到該線性區,并將應用程序鏈接的動態庫加載到該線性區;
步驟S3、釋放壓縮文件所占的緩存;
步驟S4、找到加載的所述應用程序的函數入口地址,獲取所述應用程序在線性區的偏移地址,并跳轉到該偏移地址執行;
其中,所述LINUX 創建進程時采用寫時復制的方法,在加載進程時,采用按需加載的方法。
2.根據權利要求1所述的LINUX壓縮應用程序的加載方法,其特征在于,所述LINUX 進程啟動之后擁有一個連續完整的線性地址空間,所述線性地址空間是分段的,包括數據段,代碼段,bss段,堆,棧。
3.根據權利要求1所述的LINUX壓縮應用程序的加載方法,其特征在于,所述LINUX 下的目標文件和可執行文件都按照ELF格式進行存儲。
4.根據權利要求3所述的LINUX壓縮應用程序的加載方法,其特征在于,所述ELF格式的文件包括ELF頭、程序頭表、節和節頭表。
5.根據權利要求1所述的LINUX壓縮應用程序的加載方法,其特征在于,所述步驟S1中壓縮文件采用無損壓縮算法。
6.根據權利要求5所述的LINUX壓縮應用程序的加載方法,其特征在于,所述無損壓縮算法包括BZIP2,GZIP,LZ4,LZMA,LZMO和XZ。
7.根據權利要求6所述的LINUX壓縮應用程序的加載方法,其特征在于,所述寫時復制的方法是指父進程通過fork()系統調用創建子進程,子進程復制父進程的頁目錄和頁表結構,同時將對應的物理頁設為只讀,當其中的一個進程在自己的虛擬地址范圍內進行寫操作的時候,就會產生異常,引起中斷,中斷處理函數就會在物理內存中再分配一個空閑頁,并將引起異常的這個頁的內容拷貝進去,并修改對應的頁表項,同時將這兩個頁修改為可讀寫,使得這兩個進程各自擁有一個物理頁。
8.根據權利要求7所述的LINUX壓縮應用程序的加載方法,其特征在于,所述按需加載的方法是指在一個新進程后,execve系統刪除進程原有的數據段和代碼段占用的頁表項,隨后系統為加載進來的環境參數和命令行參數分配一定物理頁和對應的頁表,從程序的開始處執行、訪問代碼和數據的時候,引起缺頁中斷,中斷處理將在內存中申請一頁內存存放數據,并在設置頁表中的對應的頁表項,如果不存在頁表的話,申請一頁內存存放頁表,最后將請求的代碼或者數據以塊為單位從磁盤上復制到內存中。
9.根據權利要求1所述的LINUX壓縮應用程序的加載方法,其特征在于,所述程序運行的過程中,進程的線性地址空間和程序文件始終保持映射關系。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳英飛拓智能技術有限公司,未經深圳英飛拓智能技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010040067.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種水溶性薄膜制備工藝
- 下一篇:一種方便取放的生殖醫學用低溫保存裝置





